Claude Code 的 Plan Mode 與 Task 管理:大型任務的拆解策略


這是 Claude Code 系列的進階篇。建議先閱讀: 📖 Claude Code 自訂 Slash Commands:打造你的專屬 AI 工作流


🎯 前言

自訂 Slash Commands 那篇中,我分享了 /interview 指令——先釐清需求,再探索 codebase,最後產出執行計劃。

/interview 是我自己設計的流程。Claude Code 其實有兩個內建機制做類似的事:

  • Plan Mode:讓 Claude 只規劃不執行,專注思考
  • Task 系統:把工作拆成多個步驟,追蹤進度

這篇文章介紹這兩個機制怎麼用,以及它們和 /interview 的差異。


📂 Plan Mode:只想不做

什麼是 Plan Mode?

Plan Mode 是一種模式切換——進入後,Claude 會只分析和規劃,不執行任何修改

正常模式:Claude 分析 → 直接動手改
Plan Mode:Claude 分析 → 產出計劃 → 等你確認 → 退出 Plan Mode → 才開始改

怎麼進入和退出

進入:
- 按快捷鍵 Shift+Tab 切換到 Plan Mode
- 或在對話中說 "進入 plan mode"

退出:
- 再按 Shift+Tab 切回 Normal Mode
- 或在對話中說 "退出 plan mode,開始執行"

進入 Plan Mode 後,輸入框會顯示 (plan) 標記,提醒你目前是規劃模式。

Plan Mode 中 Claude 會做什麼?

可以做不可以做
讀取檔案修改檔案
搜尋程式碼執行 Bash 指令(破壞性的)
分析架構寫入新檔案
列出計劃步驟建立 commit

本質上就是「唯讀模式」加上「強制輸出計劃」。

適合使用 Plan Mode 的場景

場景 1:大型重構

你要重構一個涉及 20 個檔案的模組。先進 Plan Mode,讓 Claude 全面分析影響範圍,列出所有需要修改的檔案和順序,你確認後再開始。

你:(Plan Mode)我要把 auth 模組從 Session 改成 JWT

Claude:
📋 重構計劃

## 影響分析
- 核心檔案:src/lib/session.ts(需完全重寫)
- 中間層:src/middleware/auth.ts(修改驗證邏輯)
- 頁面:12 個使用 getSession() 的頁面
- API 路由:8 個需要更新認證的端點
- 測試:5 個測試檔案需要更新

## 執行順序
1. 新增 src/lib/jwt.ts(JWT 工具函數)
2. 修改 src/middleware/auth.ts(替換驗證邏輯)
3. 逐一更新 12 個頁面...
4. 更新 API 路由...
5. 更新測試...
6. 移除 src/lib/session.ts

## 風險
- 步驟 3 和 4 之間有一段時間 auth 是壞的
- 建議用 feature branch 隔離

確認這個計劃?退出 Plan Mode 後我會開始執行。

場景 2:不確定該怎麼做

你有一個需求但不確定最佳做法。用 Plan Mode 讓 Claude 列出多個方案比較。

你:(Plan Mode)我想加一個全站搜尋功能,
    這個 Astro blog 有什麼做法?

Claude:
📋 方案比較

## 方案 A:靜態搜尋(Pagefind)
- 建置時產生搜尋索引
- 零 server cost
- 限制:只搜尋建置時的內容

## 方案 B:Algolia
- 全託管搜尋服務
- 免費額度足夠小型 blog
- 限制:外部依賴

## 方案 C:自建 Fuse.js
- 純前端模糊搜尋
- 完全自控
- 限制:文章多時效能差

建議:方案 A(Pagefind),最適合靜態 blog。

場景 3:Code Review

讓 Claude 審查但不修改:

你:(Plan Mode)review 一下 src/lib/auth.ts 的安全性

Claude 會列出問題清單但不會自己去改。


📋 Task 系統:追蹤進度

什麼是 Task?

Task 是 Claude Code 內建的工作追蹤機制。你可以把一個大任務拆成多個 task,Claude 會逐一完成並標記進度。

📋 任務清單
[✅] 1. 建立 JWT 工具函數
[🔄] 2. 修改 auth 中間層
[ ] 3. 更新頁面
[ ] 4. 更新 API 路由
[ ] 5. 更新測試

Task 的特性

特性說明
範圍當前 session,session 結束就消失
建立方式Claude 自動建立,或你指定
狀態pending → in_progress → completed
可見性你可以隨時查看進度

怎麼使用

你不需要手動操作 task——Claude 在處理複雜任務時會自動使用。但你可以主動要求:

你:幫我重構 auth 模組。先列出所有步驟,用 task 追蹤。

Claude:
建立了 5 個任務:
[🔄] 1. 建立 JWT 工具函數
[ ] 2. 修改 auth 中間層
[ ] 3. 更新頁面(12 個)
[ ] 4. 更新 API 路由(8 個)
[ ] 5. 更新測試

開始執行任務 1...

每完成一個 task,Claude 會更新狀態:

[✅] 1. 建立 JWT 工具函數
[🔄] 2. 修改 auth 中間層 ← 正在做
[ ] 3. 更新頁面(12 個)
[ ] 4. 更新 API 路由(8 個)
[ ] 5. 更新測試

Task 的好處

1. 不會忘記步驟

大型修改做到一半,Claude 可能因為 context 壓縮而忘記後面的步驟。Task 系統是外部的追蹤機制,不受 context 壓縮影響。

2. 你可以中途介入

看到某個 task 的結果不對,你可以暫停:

你:等一下,任務 2 的做法不對。auth 中間層要用這種方式...

Claude:了解,我修改任務 2 的做法,然後繼續。

3. 清楚的完成度

長時間的工作 session,你可以隨時問「現在做到哪了?」,Claude 會回報 task 進度。


🔄 Plan Mode + Task:完整流程

兩個機制搭配使用效果最好:

第一階段:Plan Mode(規劃)
├── Claude 分析需求
├── 探索相關檔案
├── 產出執行計劃
└── 你確認計劃

第二階段:Normal Mode + Task(執行)
├── Claude 把計劃拆成 task
├── 逐一執行,標記進度
├── 你可以隨時查看、中途介入
└── 全部完成,回報結果

實際操作:

你:(Shift+Tab 進入 Plan Mode)
你:我要把 blog 加上標籤系統

Claude:(Plan Mode — 只分析不執行)
📋 計劃
1. 修改 content.config.ts,在 schema 加上 tags 欄位
2. 建立 src/pages/tags/index.astro(標籤總覽頁)
3. 建立 src/pages/tags/[tag].astro(單一標籤頁)
4. 修改 BlogPost.astro layout,顯示標籤
5. 修改 blog/index.astro,加上標籤篩選
6. 在現有文章加上 tags

確認?

你:確認
你:(Shift+Tab 退出 Plan Mode)

Claude:建立 6 個任務,開始執行。
[🔄] 1. 修改 content.config.ts
[ ] 2. 建立標籤總覽頁
...

📊 Plan Mode vs /interview vs 直接下指令

三種方式的比較:

面向直接下指令Plan Mode/interview
啟動方式直接說Shift+Tab/interview
需求釐清不會問你不會問你會主動問你問題
Codebase 探索視情況會做一定會做
產出計劃不一定一定會一定會
等你確認不一定一定等一定等
適合明確的小任務複雜但需求明確需求模糊的任務

選擇建議

需求很明確 + 小修改     → 直接下指令
需求很明確 + 大修改     → Plan Mode
需求不明確             → /interview

/interview 的優勢在於主動追問。如果你說「加一個匯出功能」,Plan Mode 會直接開始規劃,但 /interview 會先問「匯出什麼格式?匯出哪些資料?誰在用?」。

兩者可以結合:先用 /interview 釐清需求,再用 Plan Mode 做更細的技術規劃。


💡 使用建議

什麼時候該用 Plan Mode

情境建議
修改超過 5 個檔案用 Plan Mode 先看全貌
不確定影響範圍用 Plan Mode 讓 Claude 分析
需要和別人討論方案用 Plan Mode 產出計劃,拿去討論
簡單的 bug fix不需要,直接做
修改一兩行程式碼不需要,直接做

什麼時候該用 Task

情境建議
工作需要超過 10 分鐘用 Task 追蹤進度
步驟超過 3 個用 Task 避免遺漏
你可能中途離開用 Task 回來後能接上
快速修改不需要 Task

Plan Mode 不是萬靈丹

Plan Mode 最大的風險是過度規劃

❌ 花 10 分鐘規劃一個 2 分鐘能做完的修改
❌ 規劃到每一行程式碼的層級
❌ 所有任務都先進 Plan Mode

✅ 規劃到「修改哪些檔案、用什麼策略」的層級
✅ 只在修改範圍大或不確定時才用

⚠️ 注意事項

1. Plan Mode 中的操作仍會消耗 context

Plan Mode 中 Claude 讀取的檔案、搜尋的結果都會佔用 context window。如果你在 Plan Mode 中讓 Claude 讀了 50 個檔案,context 可能已經很擠了。

建議:Plan Mode 中的探索要有目的性,不要「先全部看一遍」。

2. Task 在 session 結束後消失

Task 是 session 級別的追蹤機制。如果你關掉 Claude Code 再重開,之前的 task 就不見了。

如果任務需要跨 session:把計劃寫進 CLAUDE.md 或 Memory,而不是依賴 Task。

3. Plan Mode 的計劃不會自動轉成 Task

進入 Plan Mode 產出計劃後,退出 Plan Mode,Claude 不會自動把計劃的每個步驟建成 Task。你需要說:

你:按照剛才的計劃執行,用 task 追蹤進度

4. 計劃可能和現實不符

Plan Mode 中 Claude 分析的是「當下的 codebase」。如果你在 Plan Mode 和實際執行之間修改了某些檔案,計劃可能會失效。

建議:確認計劃後盡快執行,不要隔太久。


🎉 結語

Plan Mode 和 Task 是 Claude Code 內建的「先想再做」機制。

機制用途
Plan Mode強制 Claude 先分析再動手
Task把大任務拆成可追蹤的步驟
兩者搭配Plan Mode 產出計劃 → Task 追蹤執行進度

和之前介紹的 /interview 相比,Plan Mode 更「工具化」(按個快捷鍵就好),/interview 更「流程化」(會主動追問需求)。根據場景選擇適合的方式。

我的習慣是:需求模糊時用 /interview,需求明確但修改範圍大時用 Plan Mode


📎 相關文章