子代理是什麼,跟主對話直接執行任務有什麼不同?
子代理(subagent)是主對話呼叫出來、獨立運作的一個 Claude 實例,它有自己的系統提示、自己的工具清單、甚至可以用跟主對話不同的模型。主對話只會看到子代理最後回報的摘要結果,看不到它中間讀了哪些檔案、嘗試了哪些步驟——這些過程被隔離在子代理自己的上下文視窗裡,不會佔用主對話的空間。
跟主對話直接執行任務最大的不同在於「上下文隔離」。如果任務直接在主對話裡做,每一步的過程(讀檔、分析、修正)都會完整留在對話紀錄裡,長時間下來會把上下文塞滿;子代理把這些過程隔離開,主對話因此能維持乾淨,可以拿來做更長時間的多輪討論,而不會被單一任務的執行細節淹沒。
子代理為什麼被需要,解決了什麼問題?
在沒有子代理機制之前,複雜任務(例如審查一個大型 PR、或需要多步驟才能完成的重構)如果直接在主對話裡執行,會產生兩個具體問題:一是前面提到的上下文被過程細節塞滿;二是任務之間彼此干擾——如果同時想推進好幾件不相關的工作,混在同一個對話裡處理,很容易互相打斷彼此的脈絡,使用者得不斷提醒 Claude「回到剛才那件事」。
子代理讓每個任務都能有自己乾淨的上下文空間去執行,彼此之間互不干擾;背景模式(background subagent)更進一步讓子代理可以跟主對話並行運作,使用者不需要停下手邊的事等待任務跑完。這讓 Claude 處理複雜、多任務工作流程的方式,從「一次只能專心做一件事」變成「可以並行拆解、各自隔離地推進多件事」。
子代理實際上怎麼運作,有哪些不同的執行模式?
子代理最基本的定義方式,是在 .claude/agents/ 目錄下放一份 Markdown 檔案,用 frontmatter 定義名稱、描述、可用工具、模型,本文則是這個子代理的系統提示。主對話(lead agent)會讀取每個已定義子代理的描述文字,判斷當下的任務適不適合交給它處理,這個判斷方式跟 Claude 判斷要不要呼叫某個工具的邏輯類似。
執行模式上分兩個維度:前景(foreground)與背景(background)。前景子代理會阻塞主對話,使用者得等它做完才能繼續,過程中若遇到需要授權的操作,權限提示會直接傳到使用者這裡;背景子代理則跟主對話並行運作,啟動前會先詢問這個子代理需要哪些工具權限,一旦核准並開始執行,後續任何超出這個授權範圍的操作都會被自動拒絕,不會再另外詢問使用者。另外還有巢狀生成——子代理本身也可以再生成下一層子代理,目前預設支援到一定深度,避免無限層層生成失控。
子代理對我有什麼實際影響,什麼時候該主動定義自己的子代理?
如果你發現自己反覆需要 Claude 做同一類獨立性高的工作(例如每次都要求它「用同一套標準審查程式碼」、「用固定流程檢查安全性」),把這個角色定義成一個具名的子代理,之後只要任務符合這個描述,主對話就會自動判斷要不要委派給它,不需要每次重新描述這個角色該怎麼做。
如果你只是日常使用 Claude Code、沒有自己定義過子代理,也不代表你完全用不到這個機制——像 /code-review 這類內建指令,背後已經預設會以子代理(背景模式)的方式執行,你其實已經在享受這個機制帶來的上下文乾淨度。真正需要留意的時機是:當你發現自己在同一個對話裡,因為切換不同性質的任務而感覺上下文越來越亂、或是想同時推進好幾件不相關的工作,這就是該考慮讓部分工作用子代理拆開處理的訊號。
Claude Code 內建的 /code-review 指令自 2026 年 8 月更新後,預設以背景子代理的形式執行:使用者下達指令後,審查工作在獨立的上下文視窗裡進行,逐檔讀取與分析的過程不會顯示在主對話裡,使用者可以在等待期間繼續在主線處理其他任務,審查完成後才把結論送回主對話。
優點是能把複雜或多個並行的任務隔離到各自獨立的上下文空間,讓主對話保持乾淨、可以持續長時間討論,背景模式還能讓任務跟主對話並行進行不必等待;缺點是過程細節被隔離後不再即時可見,如果原本習慣靠觀察執行過程來判斷任務品質,這種可見度會直接消失,只能看到最終結果。