feat: 完善极简任务分发工作流,创建端到端验证任务给庞统

This commit is contained in:
cfdaily
2026-03-23 10:03:14 +08:00
parent df49641978
commit 52e588fc87
13 changed files with 400 additions and 12 deletions
@@ -1,7 +1,6 @@
#!/bin/bash
# Agent自动启动监控脚本
# 当Agent启动时,自动调用这个脚本启动监控
# 使用方法:在agent.json的配置中指定这个脚本为启动命令
# Agent自动启动监控脚本 - 改进版:使用带自动git pull的监控脚本
# 当Agent启动时,自动启动监控脚本(带自动git pull
AGENT_NAME="$1"
@@ -19,24 +18,22 @@ cd "$PROJECT_DIR" || {
}
# 检查是否已经运行
if ps aux | grep -q "agent_monitor_fixed.sh $AGENT_NAME" | grep -v grep; then
if ps aux | grep -q "agent_monitor_gitpull.sh $AGENT_NAME" | grep -v grep; then
echo "$AGENT_NAME 监控已经在运行"
exit 0
fi
# 启动监控
# 启动改进版监控(带自动git pull
echo "🚀 启动 $AGENT_NAME 监控..."
nohup ./management/workflow/scripts/agent_monitor_fixed.sh "$AGENT_NAME" > "${AGENT_NAME}_monitor.log" 2>&1 &
nohup ./management/workflow/scripts/agent_monitor_gitpull.sh "$AGENT_NAME" > "${AGENT_NAME}_monitor.log" 2>&1 &
# 检查是否启动成功
sleep 1
if ps aux | grep -q "agent_monitor_fixed.sh $AGENT_NAME" | grep -v grep; then
PID=$(ps aux | grep "agent_monitor_fixed.sh $AGENT_NAME" | grep -v grep | awk '{print $2}')
if ps aux | grep -q "agent_monitor_gitpull.sh $AGENT_NAME" | grep -v grep; then
PID=$(ps aux | grep "agent_monitor_gitpull.sh $AGENT_NAME" | grep -v grep | awk '{print $2}')
echo "$AGENT_NAME 监控启动成功"
echo "🆔 PID: $PID"
echo "📝 日志: ${AGENT_NAME}_monitor.log"
exit 0
else
echo "$AGENT_NAME 监控启动失败"
exit 1
fi
+104
View File
@@ -0,0 +1,104 @@
#!/bin/bash
# 改进版Agent监控脚本 - 自动git pull版本
# 用法:./agent_monitor_gitpull.sh [agent_name]
set -e # 遇到错误立即退出
AGENT_NAME="$1"
if [ -z "$AGENT_NAME" ]; then
echo "❌ 错误:请提供Agent名称"
echo "用法:$0 [agent_name]"
exit 1
fi
# 项目根目录(自动检测)
PROJECT_ROOT="/Users/chufeng/.openclaw/agents/main/workspace/projects/sanguo_quant_live"
cd "$PROJECT_ROOT" || {
echo "❌ 错误:无法进入项目目录 $PROJECT_ROOT"
exit 1
}
# 日志文件
LOG_FILE="${AGENT_NAME}_monitor.log"
AGENT_DIR="management/agents/${AGENT_NAME}"
echo "🚀 ${AGENT_NAME} Agent监控器启动(自动git pull版)"
echo "📊 监控目录: $AGENT_DIR"
echo "📝 日志文件: $LOG_FILE"
echo "⏰ 检查间隔: 30秒"
echo "🔄 自动git pull: 启用"
echo "========================================="
# 确保Agent目录存在
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失败,继续执行"
}
fi
# 2. 检查任务文件
TASK_FILES=$(find "$AGENT_DIR" -name "*.task" -type f | head -1)
if [ -n "$TASK_FILES" ]; then
for TASK_FILE in $TASK_FILES; do
TASK_ID=$(basename "$TASK_FILE" .task)
echo "[$TIMESTAMP] 🎯 发现任务: $TASK_ID"
# 读取任务内容
if [ -f "$TASK_FILE" ]; then
TASK_CONTENT=$(cat "$TASK_FILE")
echo "[$TIMESTAMP] 📋 任务内容: $TASK_CONTENT"
# 执行任务(这里根据任务内容执行不同操作)
case "$TASK_CONTENT" in
*"data"*|*"数据"*)
echo "[$TIMESTAMP] 🧮 执行数据任务..."
# 这里可以调用数据相关的Python脚本
;;
*"research"*|*"调研"*)
echo "[$TIMESTAMP] 🔍 执行调研任务..."
# 这里可以调用调研相关的Python脚本
;;
*"analysis"*|*"分析"*)
echo "[$TIMESTAMP] 📊 执行分析任务..."
# 这里可以调用分析相关的Python脚本
;;
*)
echo "[$TIMESTAMP] ⚙️ 执行通用任务..."
;;
esac
echo "[$TIMESTAMP] ✅ 任务 $TASK_ID 执行完成"
# 3. 删除任务文件
rm -f "$TASK_FILE"
echo "[$TIMESTAMP] 🗑️ 任务文件已删除"
# 4. 创建完成标记
DONE_FILE="${AGENT_DIR}/${TASK_ID}.done"
echo "任务完成时间: $TIMESTAMP" > "$DONE_FILE"
echo "任务内容: $TASK_CONTENT" >> "$DONE_FILE"
echo "执行Agent: $AGENT_NAME" >> "$DONE_FILE"
echo "[$TIMESTAMP] 📝 完成标记已创建: $DONE_FILE"
else
echo "[$TIMESTAMP] ⚠️ 任务文件不存在: $TASK_FILE"
fi
done
else
echo "[$TIMESTAMP] $AGENT_NAME 无新任务"
fi
# 等待30秒后再次检查
sleep 30
done
+1 -2
View File
@@ -10,5 +10,4 @@ echo "## 任务需求" >> "$TASK_FILE"
echo "$1" >> "$TASK_FILE"
echo "任务创建: $TASK_ID"
echo "文件: $TASK_FILE"
EOF && chmod +x management/workflow/scripts/create_simple.sh
echo "文件: $TASK_FILE"