判斷何時該用子 Agent 的實用指南
Claude Code 裡有個 Agent tool,能在對話中啟動獨立的子 Agent 去做事。子 Agent 有自己的上下文,做完把結果返回給主 Agent。
聽起來很強大,但實際用下來,大部分情況你不需要它。這篇講清楚:什麼時候拆子 Agent 真的有用,什麼時候純粹是添亂。
你在 CLAUDE.md 或 slash command 裡不能直接呼叫 Agent tool——它是 Claude Code 自己決定是否使用的內部工具。但你可以透過提示詞影響它的決策。
子 Agent 的運作方式:
關鍵特性:
- 獨立上下文:子 Agent 看不到主對話歷史,只能看到啟動時給它的 prompt
- 結果壓縮:無論子 Agent 內部讀了多少檔案、跑了多少指令,返回給主 Agent 的只是一段摘要
- 可以並行:多個子 Agent 可以同時啟動,並行執行
最典型的情境。你讓 Claude Code 調查一個問題,需要同時查多個方向。
比如你問:「這個專案的認證機制是怎麼實作的?」
不拆 Agent 的話,Claude Code 會循序執行:讀 auth controller → 讀 middleware → 讀 routes → 讀 model → 讀 config……一步一步來,慢。
拆成子 Agent:
同時啟動 3 個子 Agent:
- Agent 1:查 controller 和 middleware 層的認證邏輯
- Agent 2:查 model 層的使用者和 session 設計
- Agent 3:查設定檔和環境變數中的認證相關設定
三個方向同時跑,結果彙總。你在 CLAUDE.md 裡可以這樣引導:
## 調研類任務
當需要調查跨多個模組的問題時,優先並行啟動多個子 Agent 分頭調研,
最後彙總結論。
Claude Code 的上下文視窗是有限的。如果一個子任務需要讀大量檔案但最終只需要一個結論,用子 Agent 可以把「過程垃圾」擋在主上下文之外。
典型例子:
這些任務的特點是輸入大、輸出小。子 Agent 內部消化掉大量資訊,只把精華返回。
有些任務你不確定會不會搞砸。用子 Agent 加 isolation: "worktree" 參數,它會在一個獨立的 git worktree 裡工作。改壞了也不影響你目前的工作目錄。
## 高風險重構
對於大範圍重構任務,使用帶 worktree 隔離的子 Agent。
確認結果正確後再合併。
適合的情境:
- 嘗試性重構:不確定某個方案行不行,讓子 Agent 先試
- 並行方案對比:同時用兩種方式實作,比較結果
- 程式碼生成:生成大量樣板程式碼,review 後再合入
「把這個函式名從 camelCase 改成 snake_case」— 這種直接改就行了。啟動子 Agent 的開銷(建構上下文、等待返回、解析結果)反而比直接做更慢。
判斷標準:如果一個 Grep + 一個 Edit 就能搞定,別拆 Agent。
「先讀設定 → 根據設定改程式碼 → 根據改動更新測試」
這種鏈式依賴的任務,每一步都依賴上一步的結果。拆成子 Agent 的話,你得把中間結果在 prompt 裡傳來傳去,既麻煩又容易丟資訊。循序執行就好。
子 Agent 返回的是一段摘要文字,不是結構化資料。如果你需要子 Agent 做精確修改(比如在第 47 行插入特定程式碼),直接讓主 Agent 做更可靠。
子 Agent 適合「調研後給結論」,不適合「精確執行修改」。
如果你的對話剛開始,上下文視窗還很空,沒必要為了「保護上下文」而拆 Agent。等到對話變長、主 Agent 開始壓縮歷史訊息時,再考慮用子 Agent 做重活。
以一個真實情境為例:調查一個 Rails 專案裡所有用到 before_action 的 controller,分析認證和授權的實作模式。
不用子 Agent:
Claude Code 會逐個讀取 controller 檔案,每讀一個都佔用主上下文。如果有 20 個 controller,光是檔案內容就可能吃掉大量 token。最後給你分析結論時,前面讀的細節可能已經被壓縮遺失了。
用子 Agent:
啟動子 Agent:「閱讀 app/controllers/ 下所有 controller,
找出所有 before_action 回呼,分析認證和授權模式,
給出分類摘要。」
子 Agent 在自己的上下文裡讀完所有檔案,返回一份乾淨的摘要。主 Agent 的上下文幾乎沒有消耗,拿到結論就能繼續推進。
你不能強制 Claude Code 用或不用子 Agent,但可以透過 CLAUDE.md 給出偏好:
## Agent 使用偏好
### 適合拆子 Agent 的任務
- 跨模組調研(同時查 3 個以上目錄)
- 大範圍程式碼搜尋和統計
- 探索性重構(用 worktree 隔離)
### 不要拆子 Agent 的任務
- 單檔案修改
- 循序依賴的多步操作
- 已經明確知道改哪裡的 bug fix
這個任務的「過程」比「結論」大很多嗎?
如果是 — 用子 Agent,讓它消化過程、只返回結論。
如果不是 — 直接做,別加中間層。
子 Agent 不是越多越好。它是一個上下文管理工具,不是並行程式設計框架。用對了能讓 Claude Code 在大型專案裡保持清醒,用錯了只是在浪費啟動時間。