feat: 添加auto_sync自动同步脚本和cron配置,实现100%全自动化

This commit is contained in:
cfdaily
2026-03-23 10:24:51 +08:00
parent 8cbe8a58c7
commit 5cda54b231
2 changed files with 116 additions and 0 deletions
+74
View File
@@ -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`
+42
View File
@@ -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 <agent-name>"
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)] ✅ 自动同步完成"