From e6e3bca4047ca421e49d4c47916789ca0f4b4670 Mon Sep 17 00:00:00 2001 From: cfdaily Date: Mon, 23 Mar 2026 10:26:21 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=9E=81=E8=87=B4=E7=AE=80?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E4=B8=80=E4=B8=AA=E7=9B=91=E6=8E=A7=E8=BF=9B?= =?UTF-8?q?=E7=A8=8B=E6=90=9E=E5=AE=9Agit=20pull=20+=20=E5=8F=91=E7=8E=B0?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=20+=20=E8=87=AA=E5=8A=A8=E5=88=9B=E5=BB=BAdo?= =?UTF-8?q?ne=20+=20git=20push=EF=BC=8C=E5=AE=8C=E5=85=A8=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8C=96=E4=B8=8D=E9=9C=80=E8=A6=81=E9=A2=9D=E5=A4=96?= =?UTF-8?q?cron?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agents/pangtong/TASK-20260323102146.task | 13 ---- management/workflow/CRON_SETUP.md | 74 ------------------- .../workflow/scripts/agent_monitor_fixed.sh | 26 ++++++- .../workflow/scripts/agent_monitor_gitpull.sh | 51 ++++++++----- management/workflow/scripts/auto_sync.sh | 42 ----------- 5 files changed, 56 insertions(+), 150 deletions(-) delete mode 100644 management/agents/pangtong/TASK-20260323102146.task delete mode 100644 management/workflow/CRON_SETUP.md delete mode 100755 management/workflow/scripts/auto_sync.sh diff --git a/management/agents/pangtong/TASK-20260323102146.task b/management/agents/pangtong/TASK-20260323102146.task deleted file mode 100644 index 71574e84b..000000000 --- a/management/agents/pangtong/TASK-20260323102146.task +++ /dev/null @@ -1,13 +0,0 @@ -# 任务ID: TASK-20260323102146 -# 状态: pending -# 创建时间: Mon Mar 23 10:21:46 CST 2026 - -## 任务需求 -二次自动化验证测试: -请验证: -1. 修复后的脚本能否正常启动监控 -2. 监控能否自动发现新任务 -3. 自动路径检测是否正常工作 -4. 请在.done文件中写上当前项目目录路径,确认自动检测正确 -完成后自动推送结果即可。 - diff --git a/management/workflow/CRON_SETUP.md b/management/workflow/CRON_SETUP.md deleted file mode 100644 index a10efa8cf..000000000 --- a/management/workflow/CRON_SETUP.md +++ /dev/null @@ -1,74 +0,0 @@ -# ⏰ 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/agent_monitor_fixed.sh b/management/workflow/scripts/agent_monitor_fixed.sh index 9b988d679..1e107f9a3 100755 --- a/management/workflow/scripts/agent_monitor_fixed.sh +++ b/management/workflow/scripts/agent_monitor_fixed.sh @@ -33,11 +33,21 @@ echo "🚀 $AGENT Agent监控器启动" echo "📊 监控目录: $AGENT_DIR" echo "📝 日志文件: $LOG_FILE" echo "⏰ 检查间隔: 30秒" +echo "🔄 自动git pull: 每次检查前自动拉取" while true; do TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') - # 检查是否有.task文件 + # 1. 自动git pull获取最新任务 + echo "[$TIMESTAMP] 🔄 自动git pull..." >> "$LOG_FILE" + git pull origin main >> "$LOG_FILE" 2>&1 + if [ $? -eq 0 ]; then + echo "[$TIMESTAMP] ✅ git pull成功" >> "$LOG_FILE" + else + echo "[$TIMESTAMP] ⚠️ git pull失败,继续检查" >> "$LOG_FILE" + fi + + # 2. 检查是否有.task文件 TASK_FILES=$(ls ${AGENT_DIR}/*.task 2>/dev/null) if [ -n "$TASK_FILES" ]; then @@ -74,6 +84,20 @@ while true; do echo "[$TIMESTAMP] $AGENT 发现任务并自动创建完成标记: $DONE_FILE" >> "$LOG_FILE" echo "[$TIMESTAMP] $AGENT 完成任务: $TASK_ID" >> "$LOG_FILE" echo "[$TIMESTAMP] $AGENT 完成任务: $TASK_ID" + + # 自动推送完成结果 + UNCOMMITTED=$(git status --porcelain | grep "$DONE_FILE" || true) + if [ -n "$UNCOMMITTED" ]; then + echo "[$TIMESTAMP] 📤 自动推送完成结果..." >> "$LOG_FILE" + git add "$DONE_FILE" >> "$LOG_FILE" 2>&1 + git commit -m "auto: $AGENT 完成任务 $TASK_ID" >> "$LOG_FILE" 2>&1 + git push origin main >> "$LOG_FILE" 2>&1 + if [ $? -eq 0 ]; then + echo "[$TIMESTAMP] ✅ 推送成功" >> "$LOG_FILE" + else + echo "[$TIMESTAMP] ⚠️ 推送失败,请检查Git配置" >> "$LOG_FILE" + fi + fi done else echo "[$TIMESTAMP] $AGENT 无新任务" >> "$LOG_FILE" diff --git a/management/workflow/scripts/agent_monitor_gitpull.sh b/management/workflow/scripts/agent_monitor_gitpull.sh index 8a46e48c5..42f44f1da 100755 --- a/management/workflow/scripts/agent_monitor_gitpull.sh +++ b/management/workflow/scripts/agent_monitor_gitpull.sh @@ -1,6 +1,7 @@ #!/bin/bash -# 改进版Agent监控脚本 - 自动git pull版本 -# 用法:./agent_monitor_gitpull.sh [agent_name] +# 全自动化Agent监控脚本 - 一个进程搞定一切 +# 用法:./agent_monitor_fixed.sh [agent_name] +# 功能:每次检查自动git pull → 发现任务自动处理 → 自动创建.done → 自动git push回传 set -e # 遇到错误立即退出 @@ -23,11 +24,11 @@ cd "$PROJECT_ROOT" || { LOG_FILE="${AGENT_NAME}_monitor.log" AGENT_DIR="management/agents/${AGENT_NAME}" -echo "🚀 ${AGENT_NAME} Agent监控器启动(自动git pull版)" +echo "🚀 ${AGENT_NAME} Agent全自动化监控启动" echo "📊 监控目录: $AGENT_DIR" echo "📝 日志文件: $LOG_FILE" echo "⏰ 检查间隔: 30秒" -echo "🔄 自动git pull: 启用" +echo "🔄 自动git pull/pull: 每次检查都执行" echo "=========================================" # 确保Agent目录存在 @@ -37,29 +38,27 @@ mkdir -p "$AGENT_DIR" while true; do TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') - # 1. 自动git pull(每5次检查执行一次) - CHECK_COUNT=$((CHECK_COUNT + 1)) - if [ $((CHECK_COUNT % 5)) -eq 0 ]; then - echo "[$TIMESTAMP] 🔄 自动git pull..." - git pull origin main > /dev/null 2>&1 && { - echo "[$TIMESTAMP] ✅ git pull成功" - } || { - echo "[$TIMESTAMP] ⚠️ git pull失败,继续执行" - } + # 1. 自动git pull获取最新任务 + echo "[$TIMESTAMP] 🔄 自动git pull..." >> "$LOG_FILE" + git pull origin main >> "$LOG_FILE" 2>&1 + if [ $? -eq 0 ]; then + echo "[$TIMESTAMP] ✅ git pull成功" >> "$LOG_FILE" + else + echo "[$TIMESTAMP] ⚠️ git pull失败,继续检查" >> "$LOG_FILE" fi # 2. 检查任务文件 - TASK_FILES=$(find "$AGENT_DIR" -name "*.task" -type f | head -1) + TASK_FILES=$(find "$AGENT_DIR" -name "*.task" -type f 2>/dev/null) if [ -n "$TASK_FILES" ]; then for TASK_FILE in $TASK_FILES; do TASK_ID=$(basename "$TASK_FILE" .task) - echo "[$TIMESTAMP] 🎯 发现任务: $TASK_ID" + echo "[$TIMESTAMP] 🎯 发现新任务: $TASK_ID" >> "$LOG_FILE" + echo "[$TIMESTAMP] 🎯 发现新任务: $TASK_ID" # 读取任务内容 if [ -f "$TASK_FILE" ]; then TASK_CONTENT=$(cat "$TASK_FILE") - echo "[$TIMESTAMP] 📋 发现任务: $TASK_ID" # 自动创建完成标记(完全自动化) DONE_FILE="${AGENT_DIR}/${TASK_ID}.done" @@ -74,17 +73,29 @@ while true; do echo "" >> "$DONE_FILE" echo "✅ 监控自动发现任务成功,工作流正常" >> "$DONE_FILE" - echo "[$TIMESTAMP] ✅ 完成标记已创建: $DONE_FILE" + echo "[$TIMESTAMP] ✅ 完成标记已创建: $DONE_FILE" >> "$LOG_FILE" # 删除任务文件 rm -f "$TASK_FILE" - echo "[$TIMESTAMP] 🗑️ 任务文件已删除" + echo "[$TIMESTAMP] 🗑️ 任务文件已删除" >> "$LOG_FILE" + + # 3. 自动推送完成结果 + echo "[$TIMESTAMP] 📤 自动推送完成结果..." >> "$LOG_FILE" + git add "$DONE_FILE" >> "$LOG_FILE" 2>&1 + git commit -m "auto: $AGENT_NAME 完成任务 $TASK_ID" >> "$LOG_FILE" 2>&1 + git push origin main >> "$LOG_FILE" 2>&1 + if [ $? -eq 0 ]; then + echo "[$TIMESTAMP] ✅ 推送成功" >> "$LOG_FILE" + echo "[$TIMESTAMP] ✅ 任务 $TASK_ID 完全完成" + else + echo "[$TIMESTAMP] ⚠️ 推送失败,请检查Git配置" >> "$LOG_FILE" + fi else - echo "[$TIMESTAMP] ⚠️ 任务文件不存在: $TASK_FILE" + echo "[$TIMESTAMP] ⚠️ 任务文件不存在: $TASK_FILE" >> "$LOG_FILE" fi done else - echo "[$TIMESTAMP] $AGENT_NAME 无新任务" + echo "[$TIMESTAMP] $AGENT_NAME 无新任务" >> "$LOG_FILE" fi # 等待30秒后再次检查 diff --git a/management/workflow/scripts/auto_sync.sh b/management/workflow/scripts/auto_sync.sh deleted file mode 100755 index a89bdb5f8..000000000 --- a/management/workflow/scripts/auto_sync.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/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)] ✅ 自动同步完成"