auto-sync: 2026-05-01 13:06:24
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
# Agent自动启动监控脚本 - 改进版:使用带自动git pull的监控脚本
|
||||
# 当Agent启动时,自动启动监控脚本(带自动git pull)
|
||||
|
||||
AGENT_NAME="$1"
|
||||
|
||||
if [ -z "$AGENT_NAME" ]; then
|
||||
echo "使用方法: ./agent_auto_start.sh <agent-name>"
|
||||
echo "例如: ./agent_auto_start.sh pangtong"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 项目目录:自动检测脚本所在位置,不需要硬编码
|
||||
# SCRIPT_DIR: .../sanguo_quant_live/management/workflow/scripts
|
||||
# 三次 dirname 回到项目根目录
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(dirname "$(dirname "$(dirname "$SCRIPT_DIR")")")"
|
||||
cd "$PROJECT_ROOT" || {
|
||||
echo "❌ 无法进入项目目录: $PROJECT_ROOT"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 检查是否已经运行
|
||||
if ps aux | grep "agent_monitor_fixed.sh $AGENT_NAME" | grep -v grep | grep -q .; then
|
||||
echo "✅ $AGENT_NAME 监控已经在运行"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 启动全自动化监控(集成git pull/处理/git push)
|
||||
# 使用tee同时输出到stdout和日志文件,这样聊天窗口能看到,日志也有记录
|
||||
echo "🚀 启动 $AGENT_NAME 监控..."
|
||||
# 先创建日志文件
|
||||
touch "${AGENT_NAME}_monitor.log"
|
||||
# 使用tee复制一份输出到日志文件,同时保持stdout输出到聊天窗口
|
||||
nohup bash -c "./management/workflow/scripts/agent_monitor_fixed.sh '$AGENT_NAME' 2>&1 | tee -a '${AGENT_NAME}_monitor.log'" &
|
||||
|
||||
# 检查是否启动成功
|
||||
sleep 2 # 给进程一点启动时间
|
||||
if ps aux | grep "agent_monitor_fixed.sh $AGENT_NAME" | grep -v grep | grep -q .; then
|
||||
PID=$(ps aux | grep "agent_monitor_fixed.sh $AGENT_NAME" | grep -v grep | awk '{print $2}')
|
||||
echo "✅ $AGENT_NAME 监控启动成功"
|
||||
echo "🆔 PID: $PID"
|
||||
echo "📝 日志: ${AGENT_NAME}_monitor.log"
|
||||
else
|
||||
echo "❌ $AGENT_NAME 监控启动失败"
|
||||
fi
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
# Agent监控脚本
|
||||
AGENT=$1
|
||||
|
||||
echo "$(date) - ${AGENT} 启动监控"
|
||||
|
||||
while true; do
|
||||
# 检查是否有.task文件
|
||||
TASK_FILE=$(ls management/agents/${AGENT}/*.task 2>/dev/null | head -1)
|
||||
|
||||
if [ -n "$TASK_FILE" ]; then
|
||||
echo "$(date) - ${AGENT} 发现新任务: $(basename $TASK_FILE)"
|
||||
|
||||
# 读取任务内容
|
||||
TASK_CONTENT=$(cat "$TASK_FILE")
|
||||
echo "$(date) - ${AGENT} 任务内容:"
|
||||
echo "$TASK_CONTENT"
|
||||
|
||||
# 删除.task文件
|
||||
rm "$TASK_FILE"
|
||||
echo "$(date) - ${AGENT} 完成任务"
|
||||
fi
|
||||
|
||||
sleep 30
|
||||
done
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
# 检查Agent监控是否运行,如果没运行就启动
|
||||
# 支持重启:杀掉旧进程再启动
|
||||
# 使用方法:./agent_check_and_start.sh <agent-name>
|
||||
# 例如: ./agent_check_and_start.sh pangtong
|
||||
|
||||
AGENT_NAME="$1"
|
||||
|
||||
if [ -z "$AGENT_NAME" ]; then
|
||||
echo "使用方法: ./agent_check_and_start.sh <agent-name>"
|
||||
echo "例如: ./agent_check_and_start.sh pangtong"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查是否已经运行
|
||||
if ps aux | grep "agent_monitor_fixed.sh $AGENT_NAME" | grep -v grep | grep -q .; then
|
||||
echo "⚠️ $AGENT_NAME 监控已经在运行,将重启..."
|
||||
# 杀掉旧进程
|
||||
pkill -f "agent_monitor_fixed.sh $AGENT_NAME" 2>/dev/null
|
||||
sleep 2
|
||||
echo "✅ 旧进程已停止"
|
||||
fi
|
||||
|
||||
# 启动新进程
|
||||
echo "🚀 $AGENT_NAME 监控启动中..."
|
||||
./management/workflow/scripts/agent_auto_start.sh "$AGENT_NAME"
|
||||
@@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
# Agent监控脚本 - 极简可靠版
|
||||
# 每个将军运行此脚本监控自己的任务
|
||||
|
||||
AGENT="$1"
|
||||
|
||||
if [ -z "$AGENT" ]; then
|
||||
echo "使用方法: ./agent_monitor.sh <agent_name>"
|
||||
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
|
||||
+149
@@ -0,0 +1,149 @@
|
||||
#!/bin/bash
|
||||
# 修正版Agent监控脚本
|
||||
|
||||
AGENT="$1"
|
||||
|
||||
if [ -z "$AGENT" ]; then
|
||||
echo "使用方法: ./agent_monitor_fixed.sh <agent_name>"
|
||||
echo "例如: ./agent_monitor_fixed.sh pangtong"
|
||||
echo "支持的agent: pangtong, zhangfei, guanyu, zhaoyun, jiangwei, simayi"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 自动检测项目根目录
|
||||
# SCRIPT_DIR: .../sanguo_quant_live/management/workflow/scripts
|
||||
# 三次 dirname 回到项目根目录
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(dirname "$(dirname "$(dirname "$SCRIPT_DIR")")")"
|
||||
cd "$PROJECT_ROOT" || {
|
||||
echo "❌ 错误:无法进入项目目录 $PROJECT_ROOT"
|
||||
exit 1
|
||||
}
|
||||
|
||||
LOG_FILE="${AGENT}_monitor.log"
|
||||
AGENT_DIR="management/agents/${AGENT}"
|
||||
mkdir -p "$AGENT_DIR"
|
||||
|
||||
# 函数:同时输出到stdout和日志文件
|
||||
log_info() {
|
||||
echo "$1"
|
||||
echo "$1" >> "$LOG_FILE"
|
||||
}
|
||||
|
||||
log_info "========================================="
|
||||
log_info "Agent监控启动 - $AGENT"
|
||||
log_info "启动时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
log_info "监控目录: $AGENT_DIR"
|
||||
log_info "检查间隔: 30秒"
|
||||
log_info "自动git pull: 每次检查前自动拉取"
|
||||
log_info "========================================="
|
||||
|
||||
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')
|
||||
|
||||
# 1. 自动git pull获取最新任务
|
||||
git pull origin main >> "$LOG_FILE" 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
log_info "[$TIMESTAMP] ✅ git pull成功"
|
||||
else
|
||||
log_info "[$TIMESTAMP] ⚠️ git pull失败,继续检查"
|
||||
fi
|
||||
|
||||
# 2. 检查是否有.task文件
|
||||
TASK_FILES=$(ls ${AGENT_DIR}/*.task 2>/dev/null)
|
||||
|
||||
if [ -n "$TASK_FILES" ]; then
|
||||
for TASK_FILE in $TASK_FILES; do
|
||||
TASK_ID=$(basename "$TASK_FILE" .task)
|
||||
|
||||
# 发现任务 - 同时输出到聊天窗口
|
||||
log_info "[$TIMESTAMP] 🎯 $AGENT 发现新任务: $TASK_ID"
|
||||
|
||||
# 读取任务内容
|
||||
TASK_CONTENT=$(head -10 "$TASK_FILE" 2>/dev/null)
|
||||
echo "[$TIMESTAMP] 📋 任务内容预览:" >> "$LOG_FILE"
|
||||
echo "$TASK_CONTENT" >> "$LOG_FILE"
|
||||
|
||||
# 读取完整任务内容
|
||||
TASK_FULL_CONTENT=$(cat "$TASK_FILE")
|
||||
|
||||
# 自动创建完成标记
|
||||
DONE_FILE="${AGENT_DIR}/${TASK_ID}.done"
|
||||
echo "# 自动化任务完成报告" > "$DONE_FILE"
|
||||
echo "- 任务ID: $TASK_ID" >> "$DONE_FILE"
|
||||
echo "- 发现时间: $TIMESTAMP" >> "$DONE_FILE"
|
||||
echo "- 执行Agent: $AGENT" >> "$DONE_FILE"
|
||||
echo "- 当前项目目录: $(pwd)" >> "$DONE_FILE"
|
||||
echo "" >> "$DONE_FILE"
|
||||
echo "## 任务内容" >> "$DONE_FILE"
|
||||
echo "$TASK_FULL_CONTENT" >> "$DONE_FILE"
|
||||
echo "" >> "$DONE_FILE"
|
||||
echo "✅ 监控自动发现任务成功,工作流正常" >> "$DONE_FILE"
|
||||
|
||||
# 解析任务内容,提取要删除的文件(格式:文件名包含在内容中,一行一个)
|
||||
# 删除当前.task文件
|
||||
rm "$TASK_FILE"
|
||||
# 把删除也加入Git
|
||||
git rm "$TASK_FILE" >> "$LOG_FILE" >&1
|
||||
|
||||
# 提取任务内容中所有要删除的文件(匹配 *.task, *.done, *.md)
|
||||
DELETE_FILES=$(echo "$TASK_FULL_CONTENT" | grep -E '\s+[A-Za-z0-9_/.-]+\.(task|done|md)\s*' | xargs echo)
|
||||
if [ -n "$DELETE_FILES" ]; then
|
||||
log_info "[$TIMESTAMP] 🗑️ 需要删除 $DELETE_FILES"
|
||||
for DEL_FILE in $DELETE_FILES; do
|
||||
# trim whitespace
|
||||
DEL_FILE=$(echo "$DEL_FILE" | xargs echo)
|
||||
if [ -f "$DEL_FILE" ]; then
|
||||
git rm "$DEL_FILE" >> "$LOG_FILE" 2>&1
|
||||
log_info "[$TIMESTAMP] ✅ 删除 $DEL_FILE"
|
||||
else
|
||||
log_info "[$TIMESTAMP] ⚠️ 文件不存在 $DEL_FILE,跳过"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
log_info "[$TIMESTAMP] ✅ $AGENT 完成任务: $TASK_ID"
|
||||
log_info "[$TIMESTAMP] 📝 完成标记已创建: $DONE_FILE"
|
||||
|
||||
# 自动推送完成结果
|
||||
# 添加.done文件和已删除的.task文件
|
||||
git add "$DONE_FILE" >> "$LOG_FILE" 2>&1
|
||||
# 添加所有删除操作
|
||||
git add . >> "$LOG_FILE" 2>&1
|
||||
|
||||
# 检查有没有需要commit的
|
||||
NEED_COMMIT=$(git status --porcelain | wc -l)
|
||||
if [ "$NEED_COMMIT" -gt 0 ]; then
|
||||
log_info "[$TIMESTAMP] 📤 正在推送完成结果..."
|
||||
git commit -m "auto: $AGENT 完成任务 $TASK_ID" >> "$LOG_FILE" 2>&1
|
||||
# 先push,如果失败,pull rebase再试一次
|
||||
git push origin main >> "$LOG_FILE" 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
log_info "[$TIMESTAMP] ⚠️ 第一次推送失败,尝试拉取最新代码后重试..."
|
||||
git pull --rebase origin main >> "$LOG_FILE" 2>&1
|
||||
git push origin main >> "$LOG_FILE" 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
log_info "[$TIMESTAMP] ✅ 推送成功!任务 $TASK_ID 完全完成"
|
||||
else
|
||||
log_info "[$TIMESTAMP] ❌ 推送失败,请检查Git配置"
|
||||
fi
|
||||
else
|
||||
log_info "[$TIMESTAMP] ✅ 推送成功!任务 $TASK_ID 完全完成"
|
||||
fi
|
||||
else
|
||||
log_info "[$TIMESTAMP] ✅ 没有需要commit的变更,任务完成"
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "[$TIMESTAMP] $AGENT 无新任务" >> "$LOG_FILE"
|
||||
fi
|
||||
|
||||
# 等待30秒
|
||||
sleep 30
|
||||
done
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
#!/bin/bash
|
||||
# 全自动化Agent监控脚本 - 一个进程搞定一切
|
||||
# 用法:./agent_monitor_fixed.sh [agent_name]
|
||||
# 功能:每次检查自动git pull → 发现任务自动处理 → 自动创建.done → 自动git push回传
|
||||
|
||||
set -e # 遇到错误立即退出
|
||||
|
||||
AGENT_NAME="$1"
|
||||
if [ -z "$AGENT_NAME" ]; then
|
||||
echo "❌ 错误:请提供Agent名称"
|
||||
echo "用法:$0 [agent_name]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 项目根目录(自动检测,基于脚本位置)
|
||||
# SCRIPT_DIR: .../sanguo_quant_live/management/workflow/scripts
|
||||
# 三次 dirname 回到项目根目录
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(dirname "$(dirname "$(dirname "$SCRIPT_DIR")")")"
|
||||
cd "$PROJECT_ROOT" || {
|
||||
echo "❌ 错误:无法进入项目目录 $PROJECT_ROOT"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 日志文件
|
||||
LOG_FILE="${AGENT_NAME}_monitor.log"
|
||||
AGENT_DIR="management/agents/${AGENT_NAME}"
|
||||
|
||||
echo "🚀 ${AGENT_NAME} Agent全自动化监控启动"
|
||||
echo "📊 监控目录: $AGENT_DIR"
|
||||
echo "📝 日志文件: $LOG_FILE"
|
||||
echo "⏰ 检查间隔: 30秒"
|
||||
echo "🔄 自动git pull/pull: 每次检查都执行"
|
||||
echo "========================================="
|
||||
|
||||
# 确保Agent目录存在
|
||||
mkdir -p "$AGENT_DIR"
|
||||
|
||||
# 监控循环
|
||||
while true; do
|
||||
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
|
||||
|
||||
# 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 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" >> "$LOG_FILE"
|
||||
echo "[$TIMESTAMP] 🎯 发现新任务: $TASK_ID"
|
||||
|
||||
# 读取任务内容
|
||||
if [ -f "$TASK_FILE" ]; then
|
||||
TASK_CONTENT=$(cat "$TASK_FILE")
|
||||
|
||||
# 自动创建完成标记(完全自动化)
|
||||
DONE_FILE="${AGENT_DIR}/${TASK_ID}.done"
|
||||
echo "# 自动化任务完成报告" > "$DONE_FILE"
|
||||
echo "- 任务ID: $TASK_ID" >> "$DONE_FILE"
|
||||
echo "- 发现时间: $TIMESTAMP" >> "$DONE_FILE"
|
||||
echo "- 执行Agent: $AGENT_NAME" >> "$DONE_FILE"
|
||||
echo "- 当前项目目录: $(pwd)" >> "$DONE_FILE"
|
||||
echo "" >> "$DONE_FILE"
|
||||
echo "## 任务内容" >> "$DONE_FILE"
|
||||
echo "$TASK_CONTENT" >> "$DONE_FILE"
|
||||
echo "" >> "$DONE_FILE"
|
||||
echo "✅ 监控自动发现任务成功,工作流正常" >> "$DONE_FILE"
|
||||
|
||||
echo "[$TIMESTAMP] ✅ 完成标记已创建: $DONE_FILE" >> "$LOG_FILE"
|
||||
|
||||
# 删除任务文件
|
||||
rm -f "$TASK_FILE"
|
||||
git rm -f "$TASK_FILE" >> "$LOG_FILE" 2>&1
|
||||
echo "[$TIMESTAMP] 🗑️ 任务文件已删除" >> "$LOG_FILE"
|
||||
|
||||
# 3. 自动推送完成结果 - 添加.done和删除.task一起提交
|
||||
echo "[$TIMESTAMP] 📤 自动推送完成结果..." >> "$LOG_FILE"
|
||||
git add "$DONE_FILE" "$TASK_FILE" >> "$LOG_FILE" 2>&1
|
||||
# 检查是否有改动需要提交
|
||||
UNCOMMITTED=$(git status --porcelain | grep -E "($DONE_FILE|$TASK_FILE)" || true)
|
||||
if [ -n "$UNCOMMITTED" ]; then
|
||||
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
|
||||
fi
|
||||
else
|
||||
echo "[$TIMESTAMP] ⚠️ 任务文件不存在: $TASK_FILE" >> "$LOG_FILE"
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "[$TIMESTAMP] $AGENT_NAME 无新任务" >> "$LOG_FILE"
|
||||
fi
|
||||
|
||||
# 等待30秒后再次检查
|
||||
sleep 30
|
||||
done
|
||||
@@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
# 修正版任务分配脚本
|
||||
|
||||
if [ $# -lt 2 ]; then
|
||||
echo "使用方法: ./assign_fixed.sh <任务ID> <负责人>"
|
||||
echo "例如: ./assign_fixed.sh TASK-20260322230434 pangtong"
|
||||
echo ""
|
||||
echo "支持的负责人:"
|
||||
echo " pangtong - 庞统(价值投资)"
|
||||
echo " zhangfei - 张飞(技术策略)"
|
||||
echo " guanyu - 关羽(风险管理)"
|
||||
echo " zhaoyun - 赵云(数据工程)"
|
||||
echo " jiangwei - 姜维(平台部署)"
|
||||
echo " simayi - 司马懿(质量总监)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TASK_ID="$1"
|
||||
AGENT="$2"
|
||||
|
||||
PENDING_FILE="management/tasks/pending/${TASK_ID}.md"
|
||||
ASSIGNED_FILE="management/tasks/assigned/${TASK_ID}.md"
|
||||
AGENT_FILE="management/agents/${AGENT}/${TASK_ID}.task"
|
||||
|
||||
# 检查任务是否存在
|
||||
if [ ! -f "$PENDING_FILE" ]; then
|
||||
echo "❌ 错误: 任务不存在: $PENDING_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 确保Agent目录存在
|
||||
mkdir -p "management/agents/${AGENT}"
|
||||
|
||||
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"
|
||||
|
||||
# 3. 复制到Agent目录
|
||||
cp "$ASSIGNED_FILE" "$AGENT_FILE"
|
||||
|
||||
# 4. 删除pending文件
|
||||
rm "$PENDING_FILE"
|
||||
|
||||
echo "✅ 任务分配成功"
|
||||
echo "📄 任务文件: $ASSIGNED_FILE"
|
||||
echo "📨 Agent通知: $AGENT_FILE"
|
||||
echo ""
|
||||
echo "📝 下一步:"
|
||||
echo "1. 提交到Gitee: git add . && git commit -m '分配任务给$AGENT' && git push"
|
||||
echo "2. $AGENT Agent会自动发现并执行任务"
|
||||
@@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
# 极简分配脚本 - 带git容错处理
|
||||
# 改进逻辑:每次分配前自动commit所有现有变更,避免unstaged changes问题
|
||||
|
||||
if [ $# -lt 2 ]; then
|
||||
echo "使用方法: ./assign_simple.sh <任务ID> <负责人>"
|
||||
echo "例如: ./assign_simple.sh TASK-20260322175034 pangtong"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TASK_ID="$1"
|
||||
AGENT="$2"
|
||||
|
||||
PENDING_FILE="management/tasks/pending/${TASK_ID}.md"
|
||||
ASSIGNED_FILE="management/tasks/assigned/${TASK_ID}.md"
|
||||
AGENT_FILE="management/agents/${AGENT}/${TASK_ID}.task"
|
||||
|
||||
# 检查任务文件是否存在
|
||||
if [ ! -f "$PENDING_FILE" ]; then
|
||||
echo "❌ 错误:任务文件不存在 $PENDING_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 确保Agent目录存在
|
||||
mkdir -p "management/agents/${AGENT}"
|
||||
mkdir -p management/tasks/assigned
|
||||
|
||||
# 复制任务文件
|
||||
cp "$PENDING_FILE" "$ASSIGNED_FILE"
|
||||
|
||||
# 更新状态
|
||||
sed -i '' "s/# 状态: pending/# 状态: assigned/" "$ASSIGNED_FILE"
|
||||
sed -i '' "s/# 负责人:.*/# 负责人: $AGENT/" "$ASSIGNED_FILE"
|
||||
|
||||
# 创建.task文件通知Agent
|
||||
cp "$PENDING_FILE" "$AGENT_FILE"
|
||||
|
||||
# Git处理,带容错
|
||||
# 改进:每次分配前自动commit所有现有变更,解决批量分配时的unstaged changes问题
|
||||
echo "🔄 正在同步现有变更..."
|
||||
git add . > /dev/null 2>&1
|
||||
# 如果有变更就commit,失败(nothing to commit)也继续往下走
|
||||
git commit -m "sync: 自动同步未提交变更 [assign $TASK_ID to $AGENT]" > /dev/null 2>&1
|
||||
# commit失败不退出
|
||||
|
||||
echo "🔄 正在拉取最新代码..."
|
||||
git pull origin main
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "⚠️ git pull 失败,请先解决冲突后再试"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git add "$PENDING_FILE" "$ASSIGNED_FILE" "$AGENT_FILE"
|
||||
# commit失败也继续往下走
|
||||
git commit -m "feat: 分配任务 $TASK_ID 给 $AGENT" > /dev/null 2>&1
|
||||
# commit失败不退出
|
||||
|
||||
git push origin main
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "⚠️ git push 失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ 任务已分配给 $AGENT"
|
||||
echo "📄 任务文件: $ASSIGNED_FILE"
|
||||
echo "📬 通知文件: $AGENT_FILE"
|
||||
echo "🌐 已推送到 Gitee"
|
||||
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
# 极简分配任务脚本
|
||||
TASK_ID=$1
|
||||
AGENT=$2
|
||||
|
||||
# 从pending移动到assigned
|
||||
mv "management/tasks/pending/${TASK_ID}.md" "management/tasks/assigned/${TASK_ID}.md"
|
||||
|
||||
# 创建Agent通知文件
|
||||
cp "management/tasks/assigned/${TASK_ID}.md" "management/agents/${AGENT}/${TASK_ID}.task"
|
||||
|
||||
echo "任务 ${TASK_ID} 分配给 ${AGENT}"
|
||||
EOF && chmod +x management/workflow/scripts/assign_task.sh
|
||||
@@ -0,0 +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"
|
||||
|
||||
PENDING_FILE="management/tasks/pending/${TASK_ID}.md"
|
||||
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 " 请检查任务ID是否正确"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查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"
|
||||
|
||||
# 3. 复制到Agent目录
|
||||
cp "$ASSIGNED_FILE" "$AGENT_FILE"
|
||||
|
||||
# 4. 删除pending文件
|
||||
rm "$PENDING_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回复确认"
|
||||
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
# 检查我的任务脚本
|
||||
AGENT="$1"
|
||||
|
||||
if [ -z "$AGENT" ]; then
|
||||
echo "使用方法: ./check_my_tasks.sh <agent_name>"
|
||||
echo "例如: ./check_my_tasks.sh zhugeliang"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
AGENT_DIR="management/agents/${AGENT}"
|
||||
|
||||
echo "检查 $AGENT 的任务..."
|
||||
echo "时间: $(date)"
|
||||
echo ""
|
||||
|
||||
# 检查.task文件
|
||||
TASK_FILES=$(ls ${AGENT_DIR}/*.task 2>/dev/null)
|
||||
|
||||
if [ -n "$TASK_FILES" ]; then
|
||||
echo "发现 $(echo "$TASK_FILES" | wc -l) 个任务:"
|
||||
echo ""
|
||||
|
||||
for TASK_FILE in $TASK_FILES; do
|
||||
TASK_ID=$(basename "$TASK_FILE" .task | sed 's/_.*//')
|
||||
echo "任务ID: $TASK_ID"
|
||||
echo "文件: $(basename $TASK_FILE)"
|
||||
echo "内容预览:"
|
||||
head -10 "$TASK_FILE"
|
||||
echo "---"
|
||||
echo ""
|
||||
done
|
||||
else
|
||||
echo "没有发现任务"
|
||||
fi
|
||||
@@ -0,0 +1,52 @@
|
||||
#!/bin/bash
|
||||
# 系统状态检查脚本 - 带git冲突处理
|
||||
|
||||
# 自动处理git冲突,拉取最新状态
|
||||
git stash push -q > /dev/null 2>&1
|
||||
git pull origin main > /dev/null 2>&1
|
||||
git stash pop -q > /dev/null 2>&1
|
||||
|
||||
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 ""
|
||||
|
||||
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)
|
||||
DONE_COUNT=$(ls management/agents/${AGENT}/*.done 2>/dev/null | wc -l | xargs)
|
||||
|
||||
# 检查进程
|
||||
PROCESS_COUNT=$(ps aux | grep -c "agent_monitor_fixed.sh $AGENT")
|
||||
if [ "$PROCESS_COUNT" -gt 0 ]; then
|
||||
PROCESS_STATUS="✅ 运行中"
|
||||
else
|
||||
PROCESS_STATUS="❌ 未运行"
|
||||
fi
|
||||
|
||||
# 列出未完成任务ID
|
||||
echo " $AGENT: $DONE_COUNT/$((DONE_COUNT + TASK_COUNT)) 完成, $PROCESS_STATUS"
|
||||
if [ "$TASK_COUNT" -gt 0 ]; then
|
||||
echo " 未完成任务:"
|
||||
ls management/agents/${AGENT}/*.task 2>/dev/null | while read line; do
|
||||
echo " $line" | grep -o "TASK-[0-9]*"
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "🚀 使用方法:"
|
||||
echo " 创建新任务: ./management/workflow/scripts/create_simple.sh \"任务描述\""
|
||||
echo " 分配任务: ./management/workflow/scripts/assign_simple.sh TASK-ID agent-name"
|
||||
echo " 检查状态: ./management/workflow/scripts/check_status.sh"
|
||||
echo " 查看日志: tail -f agent-name_monitor.log"
|
||||
echo ""
|
||||
echo "🌐 Gitee仓库: https://gitee.com/cfdaily/sanguo_quant_live"
|
||||
echo "========================================="
|
||||
@@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
# 创建新任务脚本 - 带git容错处理
|
||||
# 改进逻辑:每次创建前自动commit所有现有变更,避免unstaged changes问题
|
||||
|
||||
TASK_ID="TASK-$(date +%Y%m%d%H%M%S)"
|
||||
TASK_FILE="management/tasks/pending/${TASK_ID}.md"
|
||||
|
||||
mkdir -p management/tasks/pending
|
||||
echo "# 任务ID: $TASK_ID" > "$TASK_FILE"
|
||||
echo "# 状态: pending" >> "$TASK_FILE"
|
||||
echo "# 负责人: " >> "$TASK_FILE"
|
||||
echo "# 创建时间: $(date)" >> "$TASK_FILE"
|
||||
echo "" >> "$TASK_FILE"
|
||||
echo "## 任务需求" >> "$TASK_FILE"
|
||||
echo "$1" >> "$TASK_FILE"
|
||||
|
||||
# Git处理,带容错
|
||||
# 改进:每次创建前自动commit所有现有变更,解决批量创建时的unstaged changes问题
|
||||
echo "🔄 正在同步现有变更..."
|
||||
git add . > /dev/null 2>&1
|
||||
# 如果有变更就commit,失败(nothing to commit)也继续往下走
|
||||
git commit -m "sync: 自动同步未提交变更 [create $TASK_ID]" > /dev/null 2>&1
|
||||
# commit失败也继续,不退出
|
||||
|
||||
echo "🔄 正在拉取最新代码..."
|
||||
git pull origin main
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "⚠️ git pull 失败,请先解决冲突后再"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git add "$TASK_FILE"
|
||||
# commit失败也继续
|
||||
git commit -m "feat: 创建新任务 $TASK_ID" > /dev/null 2>&1
|
||||
|
||||
git push origin main
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "⚠️ git push 失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ 任务创建成功: $TASK_ID"
|
||||
echo "📄 文件: $TASK_FILE"
|
||||
echo "🌐 已推送到 Gitee"
|
||||
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
# 极简创建任务脚本
|
||||
TASK_ID="TASK-$(date +%Y%m%d%H%M%S)"
|
||||
TASK_FILE="management/tasks/pending/${TASK_ID}.md"
|
||||
|
||||
cat > "$TASK_FILE" << TASK_EOF
|
||||
# 任务ID: $TASK_ID
|
||||
# 状态: pending
|
||||
# 创建时间: $(date)
|
||||
# 负责人:
|
||||
|
||||
## 任务需求
|
||||
$1
|
||||
|
||||
## 附加说明
|
||||
将军自主决定如何完成任务
|
||||
TASK_EOF
|
||||
|
||||
echo "任务创建: $TASK_ID"
|
||||
echo "文件: $TASK_FILE"
|
||||
EOF && chmod +x management/workflow/scripts/create_task.sh
|
||||
@@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
# 修正版任务创建脚本 - 无语法错误
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "使用方法: ./create_correct.sh \"任务描述\""
|
||||
echo "例如: ./create_correct.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 '+%Y-%m-%d %H:%M:%S')" >> "$TASK_FILE"
|
||||
echo "# 负责人: " >> "$TASK_FILE"
|
||||
echo "" >> "$TASK_FILE"
|
||||
echo "## 任务需求" >> "$TASK_FILE"
|
||||
echo "$1" >> "$TASK_FILE"
|
||||
|
||||
echo "✅ 任务创建成功"
|
||||
echo "📋 任务ID: $TASK_ID"
|
||||
echo "📄 文件位置: $TASK_FILE"
|
||||
@@ -0,0 +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 '+%Y-%m-%d %H:%M:%S')" >> "$TASK_FILE"
|
||||
echo "# 负责人: " >> "$TASK_FILE"
|
||||
echo "" >> "$TASK_FILE"
|
||||
echo "## 任务需求" >> "$TASK_FILE"
|
||||
echo "$1" >> "$TASK_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自动接收并执行任务"
|
||||
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
# 健康检查脚本
|
||||
|
||||
echo "========================================="
|
||||
echo "🔍 系统健康检查报告"
|
||||
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
|
||||
echo "📊 1. 文件系统状态:"
|
||||
echo " 当前目录: $(pwd)"
|
||||
echo " 权限检查:"
|
||||
if touch test_health.tmp 2>/dev/null; then
|
||||
echo " ✅ 文件系统可写"
|
||||
rm test_health.tmp
|
||||
else
|
||||
echo " ❌ 文件系统不可写"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "📁 2. 目录结构:"
|
||||
echo " tasks/pending: $(ls management/tasks/pending/ 2>/dev/null | wc -l) 个文件"
|
||||
echo " tasks/assigned: $(ls management/tasks/assigned/ 2>/dev/null | wc -l) 个文件"
|
||||
echo " agents/pangtong: $(ls management/agents/pangtong/ 2>/dev/null | wc -l) 个文件"
|
||||
|
||||
echo ""
|
||||
echo "🔄 3. Git状态:"
|
||||
git status --porcelain 2>/dev/null | head -10
|
||||
|
||||
echo ""
|
||||
echo "🎯 4. 工作流验证:"
|
||||
if [ -f "management/tasks/assigned/TASK-20260322230434.md" ]; then
|
||||
echo " ✅ 任务文件存在"
|
||||
if [ -f "management/agents/pangtong/TASK-20260322230434.task" ]; then
|
||||
echo " ✅ Agent通知文件存在"
|
||||
else
|
||||
echo " ❌ Agent通知文件不存在"
|
||||
fi
|
||||
else
|
||||
echo " ❌ 任务文件不存在"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "========================================="
|
||||
echo "🎉 健康检查完成 - 系统正常"
|
||||
echo "========================================="
|
||||
@@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Agent监控启动脚本
|
||||
# 用法: ./start_agent.sh <agent-name>
|
||||
#
|
||||
|
||||
AGENT_NAME=$1
|
||||
|
||||
if [ -z "$AGENT_NAME" ]; then
|
||||
echo "Usage: $0 <agent-name>"
|
||||
echo "Available agents: zhangfei guanyu zhaoyun jiangwei"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "=============================================="
|
||||
echo "🚀 启动 $AGENT_NAME Agent监控"
|
||||
echo "=============================================="
|
||||
|
||||
# 创建任务目录
|
||||
mkdir -p .tasks/$AGENT_NAME
|
||||
|
||||
# 启动监控循环
|
||||
echo "📋 监控已启动,开始检查任务..."
|
||||
echo "⏰ 每30秒检查一次任务目录"
|
||||
echo ""
|
||||
|
||||
while true; do
|
||||
# 检查是否有新任务
|
||||
TASK_FILES=$(find .tasks/$AGENT_NAME -name "*.task" 2>/dev/null | sort)
|
||||
|
||||
if [ -n "$TASK_FILES" ]; then
|
||||
for TASK_FILE in $TASK_FILES; do
|
||||
echo "=================================================="
|
||||
echo "📥 收到新任务: $TASK_FILE"
|
||||
echo "=================================================="
|
||||
|
||||
# 读取任务
|
||||
TASK_NAME=$(grep -E "^#.*TASK_NAME:" "$TASK_FILE" | sed 's/.*TASK_NAME: //')
|
||||
TASK_DESC=$(grep -E "^#.*TASK_DESC:" "$TASK_FILE" | sed 's/.*TASK_DESC: //')
|
||||
|
||||
echo "📋 任务名称: $TASK_NAME"
|
||||
echo "📝 任务描述: $TASK_DESC"
|
||||
echo ""
|
||||
|
||||
# 标记为进行中
|
||||
mv "$TASK_FILE" "$TASK_FILE.processing"
|
||||
|
||||
# 执行任务 - 这里需要用户手动执行
|
||||
echo "👉 请手动执行任务内容,完成后:"
|
||||
echo " 1. 完成工作"
|
||||
echo " 2. mv $TASK_FILE.processing $TASK_FILE.done"
|
||||
echo " 3. git add/commit/push"
|
||||
echo " 4. 通知发起者"
|
||||
echo ""
|
||||
done
|
||||
fi
|
||||
|
||||
# 等待30秒
|
||||
sleep 30
|
||||
done
|
||||
Reference in New Issue
Block a user