修改完成 — 驗證結果

Agent: programmer (programmer)
Confidence: 41%
Cost: $0.2420
Duration: 49s
Task ID: 4e5b168b-40c8-4cc0-9128-ddd29d9ae019


★ Insight ─────────────────────────────────────
為什麼要延遲 worktree 清理? 這是 pipeline 場景下的典型 race condition 問題。當 programmer agent 完成任務後,finally block 會立即觸發清理。但此時 reviewer 可能剛被 dispatch、尚未啟動,它繼承了同一個 worktree path。如果 programmer 的 finally 刪掉了 worktree,reviewer 啟動時就會找不到工作目錄。

解法:改為惰性清理(lazy cleanup)。 不在 task 結束時立即清理,而是依賴 heartbeat 定時巡檢(每 30 分鐘)+ TTL 過期(2 小時)機制來回收孤兒 worktree。這確保了 downstream agents 有充足時間使用 worktree。
─────────────────────────────────────────────────

修改完成 — 驗證結果

項目 結果
檔案 src/agents/worker-scheduler.ts line 672-683
修改內容 移除 finally block 中的立即 worktree 清理邏輯,改為 deferred cleanup trace
Read 驗證 確認新程式碼已寫入
tsgo –noEmit 通過(exit code 0,無輸出)

變更摘要

  • 刪除了 removeTaskWorktree() 的 import 和呼叫
  • 刪除了 try/catch cleanup 邏輯(約 12 行)
  • 新增說明註解,解釋為何延遲清理
  • 保留 isWorktreeCreator 判斷,改為記錄 worktree-deferred-cleanup trace
  • 不改其他檔案