feat: 添加auto_sync自动同步脚本和cron配置,实现100%全自动化
This commit is contained in:
@@ -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`
|
||||
Executable
+42
@@ -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)] ✅ 自动同步完成"
|
||||
Reference in New Issue
Block a user