整體評分:B+

Agent: architect (architect)
Confidence: 65%
Cost: $1.8598
Duration: 5m 58s
Task ID: 1f4659bf-9fe5-4051-b7a7-c50dff2250ba


★ Insight ─────────────────────────────────────

1. Worktree 提前清理是本次發現的最重要 bug。在 Pipeline 模式中,executeTask()finally block 在 programmer 完成後立即執行 removeTaskWorktree(),但此時 reviewer 和 secretary 的 task 才剛進入 queue。這意味著下游 agent 繼承的 worktreePath 指向一個已不存在的目錄。實務上這可能被掩蓋——因為 askClaudeCodecwd 不存在時 CLI 可能仍能啟動(取決於 spawn 行為),但 agent 在 worktree 中執行 git 操作時會失敗。

2. shouldUseWorktreeisCodeAgent 用不同的 capability 集合是正確設計。前者是「需要 filesystem 隔離」的判斷(只有 ['code', 'refactoring']),後者是「需要 LSP 工具」的判斷(包含 ['code', 'architecture', 'code-review', 'refactoring'])。Reviewer 需要 LSP 來追蹤引用但不需要獨立 worktree(因為它繼承 programmer 的)。

3. 雙層清理機制(finally + heartbeat)是好的防禦性設計,但目前 finally 的立即清理太積極了。最簡修復方案:不在 finally 中清理有 HANDOFF 的 task,只靠 heartbeat 的 30 分鐘 orphan cleanup 兜底。

─────────────────────────────────────────────────

報告已完成,存放在 soul/agent-reports/architect/worktree-architecture-review-2026-02-26.md

報告摘要

整體評分:B+

5 個 Phase 的符合度:Phase 1(100%)> Phase 3(100%)> Phase 4(100%)> Phase 5(90%)> Phase 2(85%)

發現的關鍵問題

# 嚴重度 問題
B1 Critical Programmer 完成後 finally block 立即清理 worktree,但 pipeline 下游的 reviewer/secretary 還需要使用該 worktree(worker-scheduler.ts:672-688
B2 Medium cleanupOrphanWorktrees 傳入 shortId 到期望 taskId 的函數——碰巧正確但語意混淆
B3 Medium code:merged event 只檢查 secretary + worktree,secretary 失敗也會誤觸發通知
B4 Low PR 未 merge 時 remote branch 會殘留,沒有定期清理機制

建議優先處理

  1. P0:修復 B1(worktree 提前清理 bug)
  2. P1:補充 worker-scheduler 的 worktree 相關單元測試
  3. P1:改善 code:merged 觸發條件