Claude Code 的 Subagent 與 Agent 工具:平行處理複雜任務


這是 Claude Code 系列的進階篇。建議先閱讀: 📖 Claude Code 自訂 Slash Commands:打造你的專屬 AI 工作流 📖 Claude Code Hooks 實戰:讓 AI 工作流自動化的最後一塊拼圖


🎯 前言

你有沒有遇過這種情境?

你:幫我查一下 Claude Code 的 Hooks 文件,
    同時也查一下 MCP Server 的設定方式,
    然後再看看有沒有 Memory 系統的教學

Claude:好的,讓我先查 Hooks...
(花 2 分鐘查完)
好的,接下來查 MCP...
(又花 2 分鐘)
最後查 Memory...
(再花 2 分鐘)

三個獨立的搜尋,一個一個做,花了 6 分鐘。

但如果 Claude 能同時派三個 subagent 去查,三個搜尋平行跑,總共只要 2 分鐘。

Agent tool 就是讓 Claude 做到這件事的機制。


📂 Agent Tool 是什麼?

Agent tool 讓 Claude 啟動一個獨立的 subagent(子代理),在獨立的 context 中執行任務。

主 Claude(你的對話)
├── Subagent A:搜尋 Hooks 文件        ← 平行執行
├── Subagent B:搜尋 MCP 設定          ← 平行執行
└── Subagent C:搜尋 Memory 教學       ← 平行執行

每個 subagent:

  • 有自己的 context window(不佔用主對話的空間)
  • 可以使用工具(搜尋、讀檔、執行指令等)
  • 完成後回傳結果給主 Claude
  • 主 Claude 整理所有結果再回覆你

核心價值:平行化 + context 隔離。


🔑 Subagent 的類型

Claude Code 提供幾種專門的 subagent 類型,各有不同的工具權限和用途:

Explore(快速探索)

最常用的類型。專門用來搜尋程式碼、找檔案、回答 codebase 相關的問題。

適合:
✅ 搜尋特定的函數、類別、檔案
✅ 回答「這個功能在哪裡實作的?」
✅ 快速了解目錄結構

不適合:
❌ 修改檔案(沒有 Edit/Write 權限)
❌ 需要深度分析的任務

Explore agent 有三個徹底程度:

  • quick:基本搜尋,幾秒鐘完成
  • medium:中度探索,會多看幾個檔案
  • very thorough:徹底搜尋,會翻遍多個目錄和命名慣例

Plan(架構規劃)

用來設計實作方案。可以讀檔、搜尋,但不能修改。

適合:
✅ 設計複雜功能的實作計劃
✅ 分析架構 trade-off
✅ 規劃重構策略

不適合:
❌ 實際執行修改

General-purpose(通用型)

最全能的 subagent,擁有所有工具權限。適合複雜的多步驟任務。

適合:
✅ 需要搜尋 + 分析 + 修改的完整任務
✅ 上網搜尋資料
✅ 執行需要多輪操作的工作

注意:
⚠️ 比專門型 agent 慢(工具多,決策多)

⚙️ 什麼時候用 Subagent?

適合用 Subagent 的場景

1. 平行搜尋

需要同時查多個獨立的資訊時:

你:幫我查一下這三個套件的最新版本和 breaking changes:
    React Router、Zustand、TanStack Query

Claude 會同時派三個 subagent 去查,比一個一個查快三倍。

2. 大量資料的前處理

搜尋結果太多,直接放進主對話會吃掉 context:

你:在整個 codebase 中找出所有使用 deprecated API 的地方

Subagent 在自己的 context 中做完搜尋和篩選,只回傳摘要結果,不會塞爆主對話的 context。

3. 獨立的子任務

複雜任務拆成幾個獨立的部分,各自平行執行:

你:幫我寫三篇文章:#4 去識別化、#8 MCP、#9 Git Hooks

如果三篇之間沒有依賴關係,可以平行寫。

4. Worktree 隔離

需要在不影響當前工作目錄的情況下做實驗:

你:在一個隔離的環境中試試看把 React Router 升級到 v7,
    看看會不會壞掉

Subagent 可以在 git worktree 中工作,不影響你的 main branch。

不適合用 Subagent 的場景

場景原因改用什麼
搜尋一個已知檔案Subagent 啟動有額外成本直接用 Glob 或 Read
修改 2-3 個檔案不需要平行化直接讓 Claude 改
需要來回討論Subagent 是「發射後不管」在主對話中做
依賴前一步結果不能平行循序執行

經驗法則:如果任務可以用一句話描述清楚、不需要來回、而且有多個能平行做,就適合用 subagent。


💡 怎麼讓 Claude 使用 Subagent?

你不需要手動呼叫 Agent tool。Claude 會根據任務的性質自動判斷。但你可以用這些方式引導它:

暗示平行化

✅ "同時幫我查這三個東西"
✅ "這些搜尋可以平行做"
✅ "用 agent 幫我探索一下 codebase"

明確指定

✅ "啟動一個 Explore agent 幫我找所有用到 auth 的檔案"
✅ "用 Plan agent 幫我設計這個功能的架構"

批次任務

✅ "幫我寫 #1 #2 #3 這三篇文章"(Claude 會判斷是否能平行)

🛠️ 實戰範例

範例 1:平行搜尋 codebase

你:我要重構 auth 模組。
    幫我查一下:
    1. 所有 import auth 相關模組的檔案
    2. Session 相關的程式碼在哪裡
    3. 有沒有現成的 JWT 相關程式碼

Claude 會派三個 Explore agent 同時搜尋,最後整合結果:

Claude:三個搜尋都完成了:

1. 引用 auth 模組的檔案(共 12 個):
   - src/middleware/auth.ts
   - src/pages/login.astro
   ...

2. Session 相關程式碼:
   - src/lib/session.ts(核心)
   - src/middleware/session.ts
   ...

3. JWT 相關:目前 codebase 中沒有 JWT 相關程式碼。

範例 2:平行寫多篇文章

這個部落格實際的使用方式——一次請 Claude 寫多篇文章:

你:幫我寫 #4(去識別化)、#8(MCP Server)、#9(Git Hooks)這三篇

Claude:
├── Agent A:研究 MCP 最新文件(需要上網查)
├── 同時直接寫 #4(已有足夠素材)
├── 同時直接寫 #9(已有足夠素材)
└── Agent A 回傳後,寫 #8

三篇文章的產出時間從「一篇一篇寫 30 分鐘」壓縮到「平行寫 15 分鐘」。

範例 3:Worktree 隔離實驗

你:在隔離環境中試試把 Astro 升級到 v6,
    看看 build 會不會壞掉

Claude:(在 git worktree 中啟動 subagent)
subagent:
  1. 建立 worktree
  2. 執行 npx @astrojs/upgrade
  3. 跑 npm run build
  4. 回報結果

Claude:升級到 Astro v6 後,build 有 3 個錯誤:
  - Content Collections API 變更...
  - 需要更新 astro.config.mjs...
  主分支沒有被影響。

📊 Subagent vs 直接操作的比較

面向直接操作Subagent
速度(單一任務)較快(無啟動成本)較慢(有啟動成本)
速度(多個任務)循序,較慢平行,較快
Context 使用佔用主對話空間獨立空間,只回傳摘要
精準度高(你直接看到過程)中(你只看到結果)
適合明確、簡單的任務探索性、大量、可平行的任務

⚠️ 注意事項

1. Subagent 看不到主對話的內容

Subagent 啟動時會拿到一段 prompt,但看不到你和主 Claude 之前的對話。所以 prompt 要包含足夠的上下文:

❌ "根據剛才的討論,幫我查一下相關檔案"
✅ "在 src/ 目錄中搜尋所有引用 auth.ts 的檔案,列出檔案路徑和引用行號"

Claude 在啟動 subagent 時會自動組裝足夠的上下文,但如果你發現結果不對,可能是上下文不足。

2. 平行 ≠ 一定更快

如果任務之間有依賴(B 需要 A 的結果),強行平行反而會出錯。Claude 通常能判斷,但有時候需要你提示:

"先查完 auth 的架構,再根據結果設計重構計劃"
(這兩步必須循序,不要平行)

3. 多個 Subagent 修改同一個檔案

如果兩個 subagent 同時修改同一個檔案,會產生衝突。Claude 會盡量避免這種情況,但如果你的任務描述不夠清楚,可能還是會撞到。

解法:明確分工,確保每個 subagent 負責不同的檔案。

4. 結果需要你判斷

Subagent 回傳的結果是摘要,不是完整過程。如果摘要看起來不對,可以請 Claude 重新做一次,或者改用直接操作來手動驗證。


🎉 結語

Agent tool 的核心價值是兩個字:平行

如果你的任務可以拆成多個獨立的子任務,subagent 能幫你省下大量等待時間。如果你的搜尋會產生大量結果,subagent 的 context 隔離能保護你的主對話不被塞爆。

但它不是銀彈——簡單任務直接做更快,有依賴的任務不能平行,結果需要你把關。

和 Claude Code 的其他機制一樣,用對場景才有效果。


📎 相關文章