子 Agent:什麼時候該拆,什麼時候別拆

判斷何時該用子 Agent 的實用指南


Claude Code 裡有個 Agent tool,能在對話中啟動獨立的子 Agent 去做事。子 Agent 有自己的上下文,做完把結果返回給主 Agent。

聽起來很強大,但實際用下來,大部分情況你不需要它。這篇講清楚:什麼時候拆子 Agent 真的有用,什麼時候純粹是添亂。

子 Agent 的機制

你在 CLAUDE.md 或 slash command 裡不能直接呼叫 Agent tool——它是 Claude Code 自己決定是否使用的內部工具。但你可以透過提示詞影響它的決策。

子 Agent 的運作方式:

  1. 主 Agent 啟動一個子 Agent,給它一段 prompt
  2. 子 Agent 在獨立上下文中執行,能用大部分工具(讀檔案、搜尋、跑指令等)
  3. 子 Agent 完成後,把結果以一則訊息返回給主 Agent
  4. 主 Agent 拿到結果繼續工作

關鍵特性:
- 獨立上下文:子 Agent 看不到主對話歷史,只能看到啟動時給它的 prompt
- 結果壓縮:無論子 Agent 內部讀了多少檔案、跑了多少指令,返回給主 Agent 的只是一段摘要
- 可以並行:多個子 Agent 可以同時啟動,並行執行

該用子 Agent 的三個情境

1. 並行搜尋和調研

最典型的情境。你讓 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 分頭調研,
最後彙總結論。

2. 保護主上下文

Claude Code 的上下文視窗是有限的。如果一個子任務需要讀大量檔案但最終只需要一個結論,用子 Agent 可以把「過程垃圾」擋在主上下文之外。

典型例子:

  • 在 50 個檔案裡找某個 API 被呼叫的所有位置,統計呼叫模式
  • 分析一個大型設定檔,只需要擷取幾個關鍵值
  • 審查一組測試檔案,判斷測試覆蓋率夠不夠

這些任務的特點是輸入大、輸出小。子 Agent 內部消化掉大量資訊,只把精華返回。

3. 隔離風險操作

有些任務你不確定會不會搞砸。用子 Agent 加 isolation: "worktree" 參數,它會在一個獨立的 git worktree 裡工作。改壞了也不影響你目前的工作目錄。

## 高風險重構
對於大範圍重構任務,使用帶 worktree 隔離的子 Agent。
確認結果正確後再合併。

適合的情境:
- 嘗試性重構:不確定某個方案行不行,讓子 Agent 先試
- 並行方案對比:同時用兩種方式實作,比較結果
- 程式碼生成:生成大量樣板程式碼,review 後再合入

不該用子 Agent 的情況

簡單直接的任務

「把這個函式名從 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.md 中引導子 Agent 的使用

你不能強制 Claude Code 用或不用子 Agent,但可以透過 CLAUDE.md 給出偏好:

## Agent 使用偏好

### 適合拆子 Agent 的任務
- 跨模組調研(同時查 3 個以上目錄)
- 大範圍程式碼搜尋和統計
- 探索性重構(用 worktree 隔離)

### 不要拆子 Agent 的任務
- 單檔案修改
- 循序依賴的多步操作
- 已經明確知道改哪裡的 bug fix

一句話判斷法

這個任務的「過程」比「結論」大很多嗎?

如果是 — 用子 Agent,讓它消化過程、只返回結論。
如果不是 — 直接做,別加中間層。

子 Agent 不是越多越好。它是一個上下文管理工具,不是並行程式設計框架。用對了能讓 Claude Code 在大型專案裡保持清醒,用錯了只是在浪費啟動時間。