- Published on
Claude Code Sub-agents 使用最佳實踐:20 小時測試後的經驗分享
前言
我發現有蠻多人對於 Claude Code 的 sub-agent 有一些錯誤的理解,剛好看到這部影片,它把相關的運作原理說明的還蠻清楚的,有在用 Claude Code 的,可以看一下,我覺得不一定要跟作者用一樣的方式來實作,不過,至少要了解 sub-agent 的運作原理,才能夠正確地使用它
影片一開頭就表示,Claude Code 的 sub-agent 功能經常被誤解和誤用,導致許多開發者體驗到性能下降和效率降低,作者將深入探討 sub-agent 的正確使用方式,分享經過 20 多小時測試後得出的最佳實踐
Sub-agent 功能的設計初衷
解決上下文視窗限制
Claude Code 引入 sub-agent 的主要目的是優化大型語言模型的上下文視窗(context window)限制與高代幣(token)消耗問題。在 sub-agent 功能推出之前,主 agent 必須自行處理所有任務,包括
- 閱讀檔案
- 列出檔案
- 編輯檔案
- 搜尋程式碼庫
這些操作會將整個檔案內容納入對話歷史,極度消耗代幣,並很快觸發「壓縮對話」(compact conversation)指令,導致模型失去上下文,性能急劇下降
上下文工程與優化
Sub-agent 的核心目的在於上下文工程(context engineering)與上下文優化(context optimization)。透過任務工具(task tool),主 agent 可以將任務指派給另一個 sub-agent,而 sub-agent
- 擁有與主 agent 相同的工具集
- 可以執行掃描程式碼庫、理解相關檔案等任務
- 工作過程中產生的所有中間步驟都不會計入主 agent 的對話歷史
- 只會向主 agent 提供簡要研究報告或總結
原本會消耗大量代幣的檔案讀取與搜尋操作,就能以數百個代幣的總結形式呈現,極大優化了上下文管理
常見的誤用與問題
直接實作的陷阱
許多用戶(包括影片作者初期)在使用 sub-agent 時常遇到負面體驗:反應緩慢、消耗更多代幣,且感覺並未帶來更好的結果。這通常源於對 sub-agent 用途的誤解
最大的誤用是嘗試讓 sub-agent 直接進行實際的實作(implementation)。例如,設想的「前端開發 agent」和「後端開發 agent」各自專精於特定實作,主 agent 僅負責協調和任務委派。但這種模式會引發以下問題
上下文受限問題
每個 sub-agent 的任務都是一個「獨立會話」
- 前端開發 agent 無法得知上次會話的內容
- 無法了解後端開發 agent 的進度
- 當需要修復錯誤時,sub-agent 缺乏必要的全面上下文
主 agent 資訊不足
主 agent 僅能看到
- 任務被指派給 sub-agent
- Sub-agent 完成任務的回報
但無法得知
- Sub-agent 執行了哪些具體操作
- 建立了哪些檔案
- 填寫了哪些內容
這使得主 agent 在除錯時,因缺乏詳細資訊而難以有效解決問題
最佳實踐:研究員與規劃者角色
核心理念
Claude Code 團隊的關鍵工程師 Alan Wolf 證實:Sub-agent 的最佳作用是尋找資訊,並將少量總結回傳給主對話線程
基於此洞察,應該將每個 sub-agent 視為研究員(researcher)或規劃者(planner)
實踐方式
1. 建立專業 sub-agent
為不同的服務建立專門的 sub-agent
- Vercel
- AI SDK
- Supabase
- Tailwind
- Shadcn
- Stripe
這些 sub-agent 載入了其領域的最新文件、最佳實踐和設計原則
2. 規劃而非實作
專業 sub-agent 的任務是分析現有程式碼庫,並基於其專業知識提出實作計畫,而非直接執行實作
3. 檔案系統作為上下文管理系統
借鑑 Manus 團隊的上下文工程經驗
- 不將工具的執行結果直接儲存在對話歷史中
- 儲存到本機檔案(例如
.md
檔案) - 在
cloud
資料夾下,建立一個task
資料夾 - 用於存放每個功能的上下文資訊
工作流程
主 agent 工作流程
- 建立包含專案資訊的上下文檔案(如
context_session_X.md
) - 委派任務給相關的專業 sub-agent
- 讀取 sub-agent 建立的計畫檔案
- 基於計畫執行實際實作
Sub-agent 工作流程
- 開始工作前,先讀取上下文檔案,了解整體專案計畫和當前進度
- 執行研究和規劃工作
- 將詳細的研究報告或實作計畫儲存為獨立的 Markdown 檔案
- 更新上下文檔案
透過這種方式,主 agent 始終掌握著全面的專案上下文,而 sub-agent 則專注於高效地進行資訊檢索與計畫制定
建立 Sub-agent 的實用技巧
系統提示詞設定
- 將大量重要的文件內容直接包含在系統提示詞中
- 確保 sub-agent 遵循最新的最佳實踐
- 提供專用的工具(MCP 工具)以檢索重要上下文
明確目標設定
為每個 sub-agent 設定清晰的目標
- 「設計、提出詳細的實作計畫,並且絕不執行實際的實作」
- 指令 sub-agent 完成後,將設計檔案儲存到指定路徑
輸出格式規範
明確規範 sub-agent 最終輸出訊息的格式
- 例如:「我已經建立了一個計畫檔,請在繼續之前先閱讀它」
- 這些訊息會回傳給主 agent,指示其參考相關檔案
行為規則制定
- 指令 sub-agent 在開始工作前,必須先讀取上下文檔案
- 指令 sub-agent 完成工作後,必須更新上下文檔案
- 重申 sub-agent 不應執行實際實作
- 避免 sub-agent 呼叫自身(Cloud MCP Client),以避免混淆
實例:打造 ChatGPT 複製品
前端 UI 構建流程
- 主 agent 建立專案上下文檔案
context_session_1.md
- 任務委派給 Shadcn UI 專家 agent
- Shadcn agent 先讀取上下文檔案,然後利用專用的 MCP 工具檢索組件資訊和範例程式碼
- Shadcn agent 完成後,建立包含 UI 設計、整體佈局和組件使用計畫的詳細文件,並更新上下文檔案
- 主 agent 讀取此計畫,並基於此執行實際的 UI 實作
Vercel AI SDK 整合流程
- 主 agent 委派任務給 Vercel AI SDK 實作規劃器 agent
- Vercel agent 先讀取上下文檔案,然後檢視整個程式碼庫以確定最佳整合方式
- Vercel agent 完成後,建立 Vercel AI SDK 的實作計畫文件,並更新上下文檔案
- 主 agent 讀取此計畫,並執行相應的整合實作
關鍵成功因素
在整個過程中,所有實際的程式碼執行和錯誤修復都由主 agent負責,因為它擁有最完整的上下文資訊,能夠最有效地解決問題。Sub-agent 的角色僅限於提供詳細的規劃和研究報告
總結
透過將 sub-agent 定位為專業的研究員和規劃者,並採用檔案系統作為共享上下文的核心機制,可以大幅提高 Claude Code 的開發效率和成果品質。關鍵要點包括
- 正確理解 sub-agent 的設計目的:上下文工程與優化,而非直接實作
- 避免常見誤用:不要讓 sub-agent 執行實際的程式碼實作
- 建立專業化的研究型 sub-agent:專注於特定領域的知識和最佳實踐
- 使用檔案系統管理上下文:透過 Markdown 檔案共享資訊和計畫
- 保持主 agent 的實作責任:確保主 agent 擁有完整上下文進行實作和除錯
這種方法不僅能提升開發效率,還能確保程式碼品質和專案的整體一致性。對於正在使用或考慮使用 Claude Code sub-agent 功能的開發者來說,這些最佳實踐將是寶貴的參考
支持創作
如果這篇文章對您有幫助,歡迎透過 贊助連結 支持我持續創作優質內容。您的支持是我前進的動力!
圖片來源:AI 產生