# ExitPlanMode

送出在計畫模式中所撰寫的實作計畫供使用者核准，若獲核准則讓工作階段離開計畫模式，以便開始進行編輯。

## 使用時機

- 在 `EnterPlanMode` 期間撰寫的計畫已完成，可供審閱。
- 任務偏向實作（程式碼或設定變更），而非純研究，因此明確的計畫適合此任務。
- 所有前置閱讀與分析已完成；在使用者決定之前無需進一步調查。
- 助理已列出具體的檔案路徑、函式與步驟，而非僅是目標。
- 使用者要求查看計畫，或計畫模式流程即將交接給編輯工具。

## 參數

- `allowedPrompts`（array，選填）：使用者可在核准畫面上輸入的 prompts，用以自動核准或修改計畫。每個元素指定一個範圍化的權限（例如一個操作名稱與所適用的工具）。不設定則使用預設核准流程。

## 範例

### 範例 1：標準送出

在計畫模式中調查認證重構並把計畫檔案寫入磁碟後，助理不帶參數呼叫 `ExitPlanMode`。Harness 會從正式位置讀取計畫，顯示給使用者，並等待核准或拒絕。

### 範例 2：預先核准的快捷動作

```
ExitPlanMode(allowedPrompts=[
  {"tool": "Bash", "prompt": "run tests"},
  {"tool": "Bash", "prompt": "install dependencies"}
])
```

讓使用者預先授權慣用的後續指令，助理在實作期間就不必為每個權限提示暫停。

## 注意事項

- `ExitPlanMode` 只對實作類工作有意義。若使用者的請求是沒有檔案變更的研究或說明任務，直接作答——不要只為了退出而走計畫模式流程。
- 計畫必須在呼叫此工具之前已寫入磁碟。`ExitPlanMode` 不接受將計畫內容作為參數；它從 harness 預期的路徑讀取。
- 若使用者拒絕計畫，你會回到計畫模式。依回饋修訂後再次送出；在計畫未核准前不要開始編輯檔案。
- 核准允許你離開計畫模式並在計畫描述的範圍內使用變更性工具（`Edit`、`Write`、`Bash` 等）。事後擴大範圍需要新的計畫或使用者明確同意。
- 不要在呼叫此工具前用 `AskUserQuestion` 問「這個計畫可以嗎？」——請求計畫核准正是 `ExitPlanMode` 所做的事，而且在計畫送出前使用者看不到它。
- 計畫要簡潔且可執行。審閱者應能在一分鐘內掃讀完畢，並確切了解會變更什麼。
- 若你在實作途中發現計畫錯了，請停下來向使用者回報，而不是悄悄偏離。重新進入計畫模式是一個可行的下一步。
