#!/bin/bash # MSH 自动启动下一个修复任务脚本 # 由 Cron 每 10 分钟调用 FIX_DIR="/Users/apple/scott2026/msh-system/msh_single_uniapp/.fixes" LOG_FILE="$FIX_DIR/logs/auto-start.log" # 创建日志目录 mkdir -p "$FIX_DIR/logs" # 记录执行时间 echo "[$(date '+%Y-%m-%d %H:%M:%S')] 检查待处理任务..." >> "$LOG_FILE" cd "$FIX_DIR" || exit 1 # 检查是否有进行中的任务 IN_PROGRESS_COUNT=$(ls -1 in-progress/ 2>/dev/null | wc -l) if [ "$IN_PROGRESS_COUNT" -gt 0 ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] 已有进行中的任务 ($IN_PROGRESS_COUNT 个),跳过" >> "$LOG_FILE" echo "进行中的任务:" ls -1 in-progress/ exit 0 fi # 获取优先级最高的待处理任务 # 按 FIX-XXX 编号排序,编号小的优先 NEXT_FIX=$(ls -1 backlog/*.md 2>/dev/null | sort | head -1) if [ -z "$NEXT_FIX" ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] 没有待处理的任务" >> "$LOG_FILE" exit 0 fi # 提取 FIX ID FIX_ID=$(basename "$NEXT_FIX" .md | cut -d'-' -f1-2) echo "[$(date '+%Y-%m-%d %H:%M:%S')] 准备启动任务: $FIX_ID" >> "$LOG_FILE" # 创建任务工作目录 mkdir -p "in-progress/$FIX_ID" # 复制任务文件 cp "$NEXT_FIX" "in-progress/$FIX_ID/README.md" # 更新状态 sed -i '' 's/状态.*$/状态: 进行中/' "in-progress/$FIX_ID/README.md" sed -i '' "/实施步骤/,/## 完成记录/{ s/- \[ \]/- [x]/g }" "in-progress/$FIX_ID/README.md" # 从 backlog 移除 rm "$NEXT_FIX" echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ 任务 $FIX_ID 已自动启动" >> "$LOG_FILE" echo "" echo "🚀 自动启动任务: $FIX_ID" echo "📁 工作目录: in-progress/$FIX_ID/" echo "" # 发送通知(如果配置了) if command -v openclaw >/dev/null 2>&1; then openclaw message send "MSH 自动启动了修复任务: $FIX_ID" 2>/dev/null || true fi exit 0