dispatch.sh 1.1 KB

12345678910111213141516171819202122232425262728
  1. #!/usr/bin/env bash
  2. # dispatch.sh — multi-branch 标准派发器
  3. # 用法: dispatch.sh <项目目录> <任务书路径> [模型] [DONE标记]
  4. # 职责: ack 记录 → 后台 spawn 执行层 → 状态可查
  5. set -euo pipefail
  6. PROJECT_DIR="${1:?用法: dispatch.sh <项目目录> <任务书路径> [模型] [DONE标记]}"
  7. BRIEF="${2:?缺任务书路径}"
  8. MODEL="${3:-deepseek-v4-flash}"
  9. DONE_TAG="${4:-DONE}"
  10. TS=$(date +%Y%m%d-%H%M%S)
  11. LOG="/tmp/mb-${TS}.log"
  12. cd "$PROJECT_DIR"
  13. echo "[ack] $(date '+%F %T') 任务书=$BRIEF 执行层=claude 模型=$MODEL" >> /tmp/mb-status.log
  14. export ANTHROPIC_BASE_URL="${ANTHROPIC_BASE_URL:-https://api.fmode.cn}"
  15. export ANTHROPIC_AUTH_TOKEN="${ANTHROPIC_AUTH_TOKEN:-$FMODE_API_KEY}"
  16. /opt/data/npm-global/bin/claude -p "$(cat "$BRIEF")" --model "$MODEL" --dangerously-skip-permissions 2>&1 | tee "$LOG" | tail -3
  17. if grep -q "$DONE_TAG" "$LOG"; then
  18. echo "[done] $(date '+%F %T') $BRIEF" >> /tmp/mb-status.log
  19. exit 0
  20. else
  21. echo "[failed] $(date '+%F %T') $BRIEF (无DONE标记, 需续跑: 加'先检查现状续做勿重复'重派)" >> /tmp/mb-status.log
  22. exit 1
  23. fi