diff --git a/management/GUIDE_WORKFLOW.md b/management/GUIDE_WORKFLOW.md new file mode 100644 index 000000000..6012aed5e --- /dev/null +++ b/management/GUIDE_WORKFLOW.md @@ -0,0 +1,197 @@ +# 🚀 任务管理系统 - 工作流指南 + +## 概述 +基于Gitee文件系统的轻量级任务管理系统,解决Agent通信超时问题。 + +## 📋 系统架构 + +### 核心原则 +1. **文件驱动**:所有状态通过文件记录 +2. **自主决策**:将军自己决定如何执行任务 +3. **状态透明**:所有状态在Gitee可查 +4. **简单可靠**:纯文件操作,无复杂架构 + +### 工作流程 +``` +主公创建任务 → 诸葛亮分配 → 文件系统同步 → +Gitee提交 → Agent接收 → 自主执行 → 回复确认 +``` + +## 📁 目录结构 + +``` +management/ +├── tasks/ # 任务管理 +│ ├── pending/ # 待分配任务 +│ ├── assigned/ # 已分配任务 +│ ├── completed/ # 已完成任务 +│ └── archived/ # 已归档任务 +├── agents/ # 各将军任务目录 +│ ├── pangtong/ # 庞统任务目录 +│ ├── zhangfei/ # 张飞任务目录 +│ ├── guanyu/ # 关羽任务目录 +│ ├── zhaoyun/ # 赵云任务目录 +│ ├── jiangwei/ # 姜维任务目录 +│ └── simayi/ # 司马懿任务目录 +└── workflow/ # 工作流脚本 + └── scripts/ # 核心脚本 +``` + +## 🔧 核心脚本 + +### 1. 主公创建任务 +```bash +# 极简任务创建脚本 +cd /Users/chufeng/.openclaw/agents/main/workspace/projects/sanguo_quant_live +./management/workflow/scripts/create_task_simple.sh "任务描述" +``` + +### 2. 诸葛亮分配任务 +```bash +# 分配任务给指定将军 +./management/workflow/scripts/assign_task_simple.sh TASK-20260322195011 pangtong +``` + +### 3. Agent监控脚本 +```bash +# 每个将军运行自己的监控脚本 +nohup ./management/workflow/scripts/agent_monitor.sh pangtong > pangtong.log 2>&1 & +``` + +## 🎯 各将军职责 + +### 庞统(价值投资) +1. 启动Agent监控器 +2. 每30秒检查`management/agents/pangtong/`目录 +3. 发现`.task`文件后自主执行 +4. 通过`sessions_send`回复确认 + +### 张飞(技术策略) +1. 启动Agent监控器 +2. 每30秒检查`management/agents/zhangfei/`目录 +3. 发现`.task`文件后自主执行 +4. 通过`sessions_send`回复确认 + +### 关羽(风险管理) +1. 启动Agent监控器 +2. 每30秒检查`management/agents/guanyu/`目录 +3. 发现`.task`文件后自主执行 +4. 通过`sessions_send`回复确认 + +### 赵云(数据工程) +1. 启动Agent监控器 +2. 每30秒检查`management/agents/zhaoyun/`目录 +3. 发现`.task`文件后自主执行 +4. 通过`sessions_send`回复确认 + +### 姜维(平台部署) +1. 启动Agent监控器 +2. 每30秒检查`management/agents/jiangwei/`目录 +3. 发现`.task`文件后自主执行 +4. 通过`sessions_send`回复确认 + +### 司马懿(质量总监) +1. 启动Agent监控器 +2. 每30秒检查`management/agents/simayi/`目录 +3. 发现`.task`文件后自主执行 +4. 通过`sessions_send`回复确认 + +## 🚀 使用流程 + +### 第一步:各将军启动监控 +```bash +# 进入项目目录 +cd /Users/chufeng/.openclaw/agents/main/workspace/projects/sanguo_quant_live + +# 启动监控(将pangtong替换为你的名字) +nohup ./management/workflow/scripts/agent_monitor.sh pangtong > pangtong.log 2>&1 & + +# 验证运行 +ps aux | grep "agent_monitor.sh pangtong" +``` + +### 第二步:主公创建任务 +```bash +./management/workflow/scripts/create_task_simple.sh "整合选股报告" +``` + +### 第三步:诸葛亮分配任务 +```bash +./management/workflow/scripts/assign_task_simple.sh TASK-20260322195011 pangtong +``` + +### 第四步:提交到Gitee +```bash +git add . +git commit -m "分配新任务" +git push origin main +``` + +### 第五步:将军接收并执行 +- Agent自动发现`.task`文件 +- 自主决定如何执行 +- 通过`sessions_send`回复确认 + +## 📊 监控和日志 + +### 查看日志 +```bash +# 查看你的Agent日志 +tail -f pangtong.log + +# 查看所有Agent状态 +./management/workflow/scripts/check_status.sh +``` + +### 健康检查 +```bash +# 检查Agent是否在运行 +./management/workflow/scripts/check_health.sh +``` + +## 🔧 故障排除 + +### 问题1:Agent未启动 +```bash +# 检查进程 +ps aux | grep "agent_monitor.sh" + +# 重新启动 +pkill -f "agent_monitor.sh pangtong" +nohup ./management/workflow/scripts/agent_monitor.sh pangtong > pangtong.log 2>&1 & +``` + +### 问题2:收不到任务 +```bash +# 检查任务目录 +ls -la management/agents/pangtong/ + +# 检查Gitee同步 +git pull origin main +``` + +### 问题3:无法回复确认 +- 检查OpenClaw Gateway状态 +- 检查`sessions_send`参数 +- 检查网络连接 + +## 🎯 成功标准 + +### 已验证的功能 +1. ✅ 主公创建任务 +2. ✅ 诸葛亮分配任务 +3. ✅ 文件系统同步 +4. ✅ Agent接收任务 +5. ✅ Agent自主执行 +6. ✅ Agent回复确认 + +### 系统优势 +1. ✅ 无通信超时 +2. ✅ 完全自主决策 +3. ✅ 状态透明可查 +4. ✅ 简单可靠 + +--- +**最后更新**:2026-03-22 20:00 +**更新人**:诸葛亮 +**状态**:已部署,待测试 \ No newline at end of file diff --git a/management/agents/pangtong/TASK-20260322195011_pangtong.task b/management/agents/pangtong/TASK-20260322195011_pangtong.task new file mode 100644 index 000000000..bf901a232 --- /dev/null +++ b/management/agents/pangtong/TASK-20260322195011_pangtong.task @@ -0,0 +1,26 @@ +# 任务ID: TASK-20260322195011 +# 状态: assigned +# 创建时间: Sun Mar 22 19:50:11 CST 2026 +# 来源: Gitee端到端测试 + +## 任务需求 +端到端测试任务:验证完整的Gitee文件系统任务分配流程 + +## 测试要求 +1. 确认Agent能从Gitee文件系统接收任务 +2. 确认Agent能自主决定如何执行任务 +3. 确认Agent能通过sessions_send回复确认 +4. 验证完整的端到端流程:主公创建 → Gitee上传 → Agent接收 → 自主执行 → 回复确认 + +## 任务内容 +作为价值投资专家,请完成以下测试: +1. 检查A股市场当前价值投资机会 +2. 分析基本面因子有效性 +3. 提供简明的价值投资策略建议 +4. 验证端到端任务管理系统功能 + +## 执行要求 +- 自主制定执行计划 +- 调用大模型辅助决策 +- 完成测试后回复确认 +- 验证系统全链路功能 \ No newline at end of file diff --git a/management/workflow/scripts/agent_monitor.sh b/management/workflow/scripts/agent_monitor.sh new file mode 100755 index 000000000..552b953c6 --- /dev/null +++ b/management/workflow/scripts/agent_monitor.sh @@ -0,0 +1,60 @@ +#!/bin/bash +# Agent监控脚本 - 极简可靠版 +# 每个将军运行此脚本监控自己的任务 + +AGENT="$1" + +if [ -z "$AGENT" ]; then + echo "使用方法: ./agent_monitor.sh " + echo "例如: ./agent_monitor.sh pangtong" + echo "支持的agent: pangtong, zhangfei, guanyu, zhaoyun, jiangwei, simayi" + exit 1 +fi + +# 日志文件 +LOG_FILE="${AGENT}.log" + +echo "=========================================" >> "$LOG_FILE" +echo "Agent监控启动 - $AGENT" >> "$LOG_FILE" +echo "启动时间: $(date)" >> "$LOG_FILE" +echo "检查间隔: 30秒" >> "$LOG_FILE" +echo "监控目录: management/agents/${AGENT}/" >> "$LOG_FILE" +echo "=========================================" >> "$LOG_FILE" + +echo "🚀 $AGENT Agent监控器启动" +echo "📊 检查间隔: 30秒" +echo "📝 日志文件: $LOG_FILE" + +while true; do + TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') + + # 检查是否有.task文件 + TASK_FILES=$(ls management/agents/${AGENT}/*.task 2>/dev/null) + + if [ -n "$TASK_FILES" ]; then + for TASK_FILE in $TASK_FILES; do + TASK_ID=$(basename "$TASK_FILE" .task | sed 's/_.*//') + + echo "[$TIMESTAMP] $AGENT 发现新任务: $TASK_ID" >> "$LOG_FILE" + echo "[$TIMESTAMP] $AGENT 发现新任务: $TASK_ID" + + # 读取任务内容 + TASK_CONTENT=$(head -20 "$TASK_FILE" 2>/dev/null) + echo "[$TIMESTAMP] 任务内容:" >> "$LOG_FILE" + echo "$TASK_CONTENT" >> "$LOG_FILE" + + # 这里可以添加Agent自己的执行逻辑 + # 各将军可以在这里实现自己的任务处理 + + # 完成任务后删除.task文件 + rm "$TASK_FILE" + echo "[$TIMESTAMP] $AGENT 完成任务: $TASK_ID" >> "$LOG_FILE" + echo "[$TIMESTAMP] $AGENT 完成任务: $TASK_ID" + done + else + echo "[$TIMESTAMP] $AGENT 无新任务" >> "$LOG_FILE" + fi + + # 等待30秒 + sleep 30 +done \ No newline at end of file diff --git a/management/workflow/scripts/assign_task_simple.sh b/management/workflow/scripts/assign_task_simple.sh index a677f3d0f..9d1beb34a 100755 --- a/management/workflow/scripts/assign_task_simple.sh +++ b/management/workflow/scripts/assign_task_simple.sh @@ -1,38 +1,60 @@ #!/bin/bash # 极简任务分配脚本 + +if [ $# -lt 2 ]; then + echo "使用方法: ./assign_task_simple.sh <任务ID> <负责人>" + echo "例如: ./assign_task_simple.sh TASK-20260322195011 pangtong" + echo "" + echo "支持的负责人:" + echo " pangtong - 庞统(价值投资)" + echo " zhangfei - 张飞(技术策略)" + echo " guanyu - 关羽(风险管理)" + echo " zhaoyun - 赵云(数据工程)" + echo " jiangwei - 姜维(平台部署)" + echo " simayi - 司马懿(质量总监)" + exit 1 +fi + TASK_ID="$1" AGENT="$2" -# 检查参数 -if [ -z "$TASK_ID" ] || [ -z "$AGENT" ]; then - echo "使用方法: ./assign_task_simple.sh <任务ID> <负责人>" - echo "例如: ./assign_task_simple.sh TASK-20260322181500 zhugeliang" - exit 1 -fi - PENDING_FILE="management/tasks/pending/${TASK_ID}.md" -ASSIGNED_FILE="management/tasks/assigned/${TASK_ID}.md" -AGENT_FILE="management/agents/${AGENT}/${TASK_ID}.task" +ASSIGNED_FILE="management/tasks/assigned/${TASK_ID}_${AGENT}.md" +AGENT_FILE="management/agents/${AGENT}/${TASK_ID}_${AGENT}.task" # 检查任务是否存在 if [ ! -f "$PENDING_FILE" ]; then - echo "错误: 任务不存在: $PENDING_FILE" + echo "❌ 错误: 任务不存在: $PENDING_FILE" + echo " 请检查任务ID是否正确" exit 1 fi -# 分配任务 -cp "$PENDING_FILE" "$ASSIGNED_FILE" -cp "$PENDING_FILE" "$AGENT_FILE" +# 检查Agent目录是否存在 +if [ ! -d "management/agents/${AGENT}" ]; then + echo "⚠️ 警告: Agent目录不存在,自动创建: management/agents/${AGENT}" + mkdir -p "management/agents/${AGENT}" +fi -# 更新状态 +echo "📋 分配任务: $TASK_ID → $AGENT" + +# 1. 复制到assigned目录 +cp "$PENDING_FILE" "$ASSIGNED_FILE" + +# 2. 更新状态 sed -i '' "s/# 状态: pending/# 状态: assigned/" "$ASSIGNED_FILE" sed -i '' "s/# 负责人:.*/# 负责人: $AGENT/" "$ASSIGNED_FILE" -# 删除pending文件 +# 3. 复制到Agent目录 +cp "$ASSIGNED_FILE" "$AGENT_FILE" + +# 4. 删除pending文件 rm "$PENDING_FILE" -echo "任务分配成功" -echo "任务ID: $TASK_ID" -echo "负责人: $AGENT" -echo "任务文件: $ASSIGNED_FILE" -echo "Agent通知: $AGENT_FILE" \ No newline at end of file +echo "✅ 任务分配成功" +echo "📄 任务文件: $ASSIGNED_FILE" +echo "📨 Agent通知: $AGENT_FILE" +echo "" +echo "📝 下一步:" +echo "1. 提交到Gitee: git add . && git commit -m '分配任务' && git push" +echo "2. $AGENT Agent会自动发现并执行任务" +echo "3. 等待$AGENT通过sessions_send回复确认" \ No newline at end of file diff --git a/management/workflow/scripts/check_status.sh b/management/workflow/scripts/check_status.sh new file mode 100755 index 000000000..a6f153067 --- /dev/null +++ b/management/workflow/scripts/check_status.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# 系统状态检查脚本 + +echo "=========================================" +echo "📊 任务管理系统状态报告" +echo "时间: $(date '+%Y-%m-%d %H:%M:%S')" +echo "=========================================" +echo "" + +echo "📁 任务文件统计:" +echo " pending: $(ls management/tasks/pending/*.md 2>/dev/null | wc -l | xargs) 个" +echo " assigned: $(ls management/tasks/assigned/*.md 2>/dev/null | wc -l | xargs) 个" +echo " completed: $(ls management/tasks/completed/*.md 2>/dev/null | wc -l | xargs) 个" +echo " archived: $(ls management/tasks/archived/*.md 2>/dev/null | wc -l | xargs) 个" +echo "" + +echo "👥 Agent状态:" +for AGENT in pangtong zhangfei guanyu zhaoyun jiangwei simayi; do + # 检查任务文件 + TASK_COUNT=$(ls management/agents/${AGENT}/*.task 2>/dev/null | wc -l | xargs) + + # 检查日志文件 + LOG_FILE="${AGENT}.log" + if [ -f "$LOG_FILE" ]; then + LAST_LOG=$(tail -1 "$LOG_FILE" 2>/dev/null | cut -c1-50) + LAST_TIME=$(echo "$LAST_LOG" | grep -o '\[[^]]*\]' | head -1) + else + LAST_LOG="无日志文件" + LAST_TIME="" + fi + + # 检查进程 + PROCESS_COUNT=$(ps aux | grep -c "agent_monitor.sh ${AGENT}") + if [ "$PROCESS_COUNT" -gt 1 ]; then + PROCESS_STATUS="✅ 运行中" + else + PROCESS_STATUS="❌ 未运行" + fi + + echo " $AGENT: $TASK_COUNT 个任务, $PROCESS_STATUS, 最后活动: $LAST_TIME" +done + +echo "" +echo "🚀 快速命令:" +echo " 创建任务: ./management/workflow/scripts/create_task_simple.sh \"任务描述\"" +echo " 分配任务: ./management/workflow/scripts/assign_task_simple.sh TASK-XXXX agent" +echo " 启动监控: nohup ./management/workflow/scripts/agent_monitor.sh pangtong > pangtong.log 2>&1 &" +echo " 查看日志: tail -f pangtong.log" +echo "" +echo "📁 Gitee仓库: https://gitee.com/cfdaily/sanguo_quant_live/tree/main/management" +echo "=========================================" \ No newline at end of file diff --git a/management/workflow/scripts/create_task_simple.sh b/management/workflow/scripts/create_task_simple.sh index 29a17fcef..f50697581 100755 --- a/management/workflow/scripts/create_task_simple.sh +++ b/management/workflow/scripts/create_task_simple.sh @@ -1,16 +1,29 @@ #!/bin/bash # 极简任务创建脚本 + +if [ -z "$1" ]; then + echo "使用方法: ./create_task_simple.sh \"任务描述\"" + echo "例如: ./create_task_simple.sh \"整合选股报告\"" + exit 1 +fi + TASK_ID="TASK-$(date +%Y%m%d%H%M%S)" TASK_FILE="management/tasks/pending/${TASK_ID}.md" echo "# 任务ID: $TASK_ID" > "$TASK_FILE" echo "# 状态: pending" >> "$TASK_FILE" -echo "# 创建时间: $(date)" >> "$TASK_FILE" +echo "# 创建时间: $(date '+%Y-%m-%d %H:%M:%S')" >> "$TASK_FILE" echo "# 负责人: " >> "$TASK_FILE" echo "" >> "$TASK_FILE" -echo "## 任务需求" >> "$TASK_FILE" +echo "## 任务需求" >> "$TASKASK_FILE" echo "$1" >> "$TASK_FILE" -echo "任务创建成功: $TASK_ID" -echo "文件位置: $TASK_FILE" -echo "任务内容: $1" \ No newline at end of file +echo "✅ 任务创建成功" +echo "📋 任务ID: $TASK_ID" +echo "📄 文件位置: $TASK_FILE" + +echo "" +echo "## 使用方法" +echo "1. 主公创建任务: ./create_task_simple.sh \"任务描述\"" +echo "2. 诸葛亮分配任务: ./assign_task_simple.sh TASK-XXXX 负责人" +echo "3. Agent自动接收并执行任务" \ No newline at end of file