From 5cda54b231c659b957fa5efbc4ff471dd2545534 Mon Sep 17 00:00:00 2001 From: cfdaily Date: Mon, 23 Mar 2026 10:24:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0auto=5Fsync=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=90=8C=E6=AD=A5=E8=84=9A=E6=9C=AC=E5=92=8Ccron?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=EF=BC=8C=E5=AE=9E=E7=8E=B0100%=E5=85=A8?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- management/workflow/CRON_SETUP.md | 74 ++++++++++++++++++++++++ management/workflow/scripts/auto_sync.sh | 42 ++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 management/workflow/CRON_SETUP.md create mode 100755 management/workflow/scripts/auto_sync.sh diff --git a/management/workflow/CRON_SETUP.md b/management/workflow/CRON_SETUP.md new file mode 100644 index 000000000..a10efa8cf --- /dev/null +++ b/management/workflow/CRON_SETUP.md @@ -0,0 +1,74 @@ +# ⏰ Cron 定时自动同步配置 + +## 概述 +配置cron定时任务,实现**完全自动化**: +- 每5分钟自动 `git pull` 获取新任务 +- 有完成结果自动 `git push` 回传 +- 全程不需要人工干预 + +## 配置方法 + +### 1. 编辑crontab +```bash +crontab -e +``` + +### 2. 添加以下内容(替换成你的Agent名称) + +```cron +# 庞统 - 每5分钟自动同步 +*/5 * * * * /path/to/sanguo_quant_live/management/workflow/scripts/auto_sync.sh pangtong >> /path/to/sanguo_quant_live/auto_sync.log 2>&1 + +# 如果是其他Agent,复制一行修改名称: +# */5 * * * * /path/to/sanguo_quant_live/management/workflow/scripts/auto_sync.sh zhangfei >> /path/to/sanguo_quant_live/auto_sync.log 2>&1 +``` + +### 3. 说明 +- `*/5 * * * *` = 每5分钟执行一次 +- 第一参数是你的Agent名称(pangtong/zhangfei/guanyu/zhaoyun/jiangwei/simayi) +- 日志输出到 `auto_sync.log`,可以查看同步状态 + +## 🎯 完整自动化工作流 + +现在真正实现了**全程无人值守**: + +``` +1. 诸葛亮:创建任务 → 分配任务 → git push + ↓ +2. Cron自动:每5分钟 git pull 获取新任务 + ↓ +3. 监控自动:发现.task → 自动创建.done → 删除.task + ↓ +4. Cron自动:发现.done → git push 回传结果 + ↓ +5. 诸葛亮:git pull 查看结果 +``` + +**完全自动化,不需要任何手动操作!** + +## 检查Cron是否运行 + +```bash +# 查看cron日志 +tail -20 /var/log/cron + +# 查看同步日志 +tail -20 auto_sync.log + +# 查看你的Agent目录 +ls -la management/agents/your-agent-name/ +``` + +## 常用Cron配置 + +| 间隔 | 配置 | 说明 | +|------|------|------| +| 每1分钟 | `*/1 * * * *` | 延迟最低 | +| 每5分钟 | `*/5 * * * *` | 推荐,平衡延迟和负载 | +| 每10分钟 | `*/10 * * * *` | 负载更轻 | + +## 注意事项 + +1. **确保Git免密配置**:配置SSH或者credential缓存,否则cron无法push +2. **使用绝对路径**:cron的PATH和当前目录不同,脚本已经处理了自动检测 +3. **日志查看**:所有同步日志都在 `auto_sync.log` diff --git a/management/workflow/scripts/auto_sync.sh b/management/workflow/scripts/auto_sync.sh new file mode 100755 index 000000000..a89bdb5f8 --- /dev/null +++ b/management/workflow/scripts/auto_sync.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# 自动同步脚本 - 供cron定时调用 +# 作用:自动git pull获取新任务,自动git push推送完成结果 +# 使用方法:*/5 * * * * /path/to/management/workflow/scripts/auto_sync.sh your-agent-name >> auto_sync.log 2>&1 + +AGENT_NAME="$1" + +if [ -z "$AGENT_NAME" ]; then + echo "❌ 错误:请提供Agent名称" + echo "用法: $0 " + exit 1 +fi + +# 自动检测项目根目录 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")/../.." +cd "$PROJECT_ROOT" || { + echo "[$(date)] ❌ 无法进入项目目录: $PROJECT_ROOT" + exit 1 +} + +echo "[$(date)] 🔄 开始自动同步 - $AGENT_NAME" + +# 1. 拉取最新代码获取新任务 +echo "[$(date)] ⬇️ git pull..." +git pull origin main + +# 2. 检查是否有.done文件未提交 +DONE_FILES=$(find "management/agents/$AGENT_NAME" -name "*.done" -type f 2>/dev/null) +UNCOMMITTED=$(git status --porcelain | grep "management/agents/$AGENT_NAME.*\.done" || true) + +if [ -n "$UNCOMMITTED" ]; then + echo "[$(date)] 📤 发现未提交的完成结果,正在推送..." + git add "management/agents/$AGENT_NAME" + git commit -m "auto: $AGENT_NAME 完成任务自动推送" + git push origin main + echo "[$(date)] ✅ 推送完成" +else + echo "[$(date)] ✅ 没有需要推送的完成结果" +fi + +echo "[$(date)] ✅ 自动同步完成"