Claude Code Subagent 子代理教學:怎麼建、怎麼叫,跟 Agent Teams 差在哪

部分實測2026.10.14

Claude Code 的子代理(subagent)是把旁支工作交給另一個 Claude 去做,它在自己的空間裡讀檔、查資料,最後只把結果帶回來。這篇講怎麼用一個 Markdown 檔建立子代理、怎麼指定工具和模型、三種叫它的方式,以及跟 Agent Teams 差在哪。我實際做了一個只能讀檔的收據核對子代理,分別指定 Haiku 和 Sonnet 跑兩次,結果、實際用的模型、token 用量都貼出來。2026 年 10 月 14 日實測。

更新 2026/10/15・約 10 分鐘讀完・查證環境:在我自己的 Mac 上用 Claude Code 2.1.280(訂閱方案,主對話的模型是 Opus 5.5)跑了兩次非互動模式(claude -p),一次用資料夾裡的子代理檔、一次用 --agents 參數臨時定義,測試資料是我自己寫的三張文字收據。互動模式裡的 @ 選單、背景子代理、/agents 指令,以及 Agent Teams(只能在互動模式開)都沒有實測,依官方文件

先講結論

  • 子代理是一個 Markdown 檔,放在專案的 .claude/agents/ 或自己的 ~/.claude/agents/,寫好名字、什麼時候用、可以用哪些工具、用哪個模型。Claude 覺得適合就會交給它,也可以點名或用 @ 指定。
  • 我做了一個只能讀檔、指定用 haiku 的收據核對子代理。它讀完三張收據、抓到我故意印錯的那一張多了 10 元,44.5 秒。實際跑的模型是 Haiku 4.5,回報是簡體中文,主對話改寫成繁體才給我。
  • Agent Teams 是另一回事:好幾個 Claude 各自開工、互相傳訊、共用任務清單,還在實驗階段,要設環境變數打開,而且只能在互動模式用。
目錄
  1. 子代理是什麼
  2. 自己做一個子代理
  3. 三種叫它的方式
  4. 實際跑一次:核對三張收據
  5. 第二次:臨時定義、用 @ 指定
  6. 什麼時候值得用
  7. 跟 Agent Teams 差在哪
  8. 這篇沒有測的

用 Claude Code 一陣子,會遇到一種情況:請它先翻一遍一堆檔案、找一個錯誤,它把讀到的東西全塞進對話裡,接下來的對話就越來越長、越來越慢,前面講好的事它也開始記不清楚。

子代理(subagent)就是為這種情況做的。主對話把旁支的工作交給另一個 Claude,那個 Claude 在自己的空間裡讀檔、查資料,最後只把結果帶回來,主對話保持乾淨。

這篇先講子代理怎麼建、怎麼叫,再用一個實際的例子跑給你看。最後講常被放在一起比的 Agent Teams。Claude Code 本身還不熟的話,先看 Claude Code 教學。

子代理是什麼

官方文件的說法是:每個子代理有自己的對話空間(context)、自己的系統提示、自己能用的工具。主對話遇到符合某個子代理描述的工作,就交給它做;它做完,把結果交回來。

這樣做有幾個好處。主對話不會被一大堆搜尋結果、檔案內容塞滿。可以限制子代理能用的工具,例如只給讀檔、不給改檔。可以讓它用比較便宜的模型。寫好的子代理也可以重複用在別的專案。

Claude Code 本身已經內建了幾個。Explore 專門搜尋、讀程式碼,只能讀不能改;Plan 是規劃模式在研究程式碼時用的;general-purpose 什麼工具都能用,處理比較複雜的多步驟工作。這些平常是 Claude 自己決定要不要用,你不用特別做什麼。

要注意的是,子代理不是免費的。官方文件寫,子代理自己送出的請求,跟主對話算在同一個方案的用量裡。

自己做一個子代理

子代理就是一個 Markdown 檔,上面一段設定、下面一段給它的說明。官方文件寫的做法有兩種:請 Claude 幫你寫,或自己建檔案。

我做的是一個核對收據的子代理,檔案放在專案的 .claude/agents/receipt-checker.md:

---
name: receipt-checker
description: 核對收據的金額。
  要確認收據的品項加總、
  或算幾張收據一共花多少錢時使用。
tools: Read, Glob
model: haiku
---
你負責核對收據。
逐張讀 receipts 資料夾裡的收據:
把每個品項的金額加起來,
跟收據上印的「合計」比較,
不一樣就指出是哪一張、差多少。
(後面還有幾行:列出總額、不要改檔案)

上面那段設定,四個欄位各有用處:

  • name:子代理的名字,叫它的時候用。
  • description:什麼時候該用它。Claude 是看這一句決定要不要交給它的,所以要寫清楚。官方文件建議,想讓它更主動被用,可以在描述裡寫「use proactively」這類字眼。
  • tools:它能用的工具。我只給了讀檔(Read)和找檔(Glob),它就不能改檔、也不能跑指令。
  • model:用哪個模型。可以寫 sonnet、opus、haiku、fable 這幾個別名,也可以寫完整的模型名稱,或寫 inherit 跟主對話用一樣的。

除了這四個,官方文件還列了權限模式、想多久(effort)、預先載入的技能、記憶、hooks 等設定,要用到再查。

檔案放在哪裡,決定誰可以用:

  • 專案的 .claude/agents/:只有這個專案能用,可以跟程式碼一起進版本控制,團隊共用。
  • 自己家目錄的 ~/.claude/agents/:你的每個專案都能用。
  • 啟動時用 --agents 參數傳一段 JSON:只在這一次的對話有效,不會存成檔案,適合測試。

同名的時候,--agents 優先,再來是專案的,最後是個人的。官方文件還提醒一件事:如果 ~/.claude/agents/ 這個資料夾是在對話開始之後才建的,正在跑的對話抓不到,要重開。

三種叫它的方式

第一種是直接點名。在要求裡寫「用 receipt-checker 子代理……」,Claude 通常就會交給它,但最後還是 Claude 決定。

第二種是用 @ 指定。在互動模式裡打 @ 會跳出選單,選子代理就好;也可以直接打 @agent-receipt-checker。這樣一定會交給那一個子代理,不讓 Claude 自己選。

第三種是讓整個對話都當那個子代理:啟動時加 --agent receipt-checker。這時主對話本身就換成那個子代理的工具限制和模型,連系統提示都會被換掉。

另外,官方文件寫 2.1.198 之後輸入 /agents 只會印一段提醒,叫你直接請 Claude 建立或自己改檔案;以前那個有選單的建立精靈,是 2.1.197 以前的版本才有的。

實際跑一次:核對三張收據

我寫了三張文字收據放在 receipts 資料夾。第二張我故意印錯:拿鐵 65 元加御飯糰 70 元是 135 元,合計卻印 145。看子代理抓不抓得到。

我用的是非互動模式(claude -p),問:「請用 receipt-checker 子代理核對 receipts 資料夾裡的收據,告訴我這三天總共花了多少錢。」

過程是這樣的。主對話(Opus 5.5)先呼叫子代理,而且不是把我的話原封不動丟過去,是自己寫了一段更詳細的指示:收據在哪個資料夾、要逐張比對、要注意有沒有重複的收據。

子代理接手之後,先找檔案,再把三張收據各讀一次,然後交回報告:第二張品項加起來 135、印的是 145,差 10 元;照自己加的算三天是 882 元,照印的是 892 元。它自己用了大約 8,300 個 token、24 秒。

有兩件事我沒想到。

第一,子代理實際跑的模型是 Haiku 4.5。設定寫的是 haiku,在我這台的 Claude Code 2.1.280 上,對到的是這一版。

第二,子代理的報告是簡體中文。收據和我寫的說明都是繁體,Haiku 回報時卻寫「我已经读取了所有三张收据」。我最後看到的回答是繁體的,因為那是主對話重新寫的。子代理如果要自己寫檔案,系統提示裡最好寫明用繁體中文。

主對話拿到報告之後,並沒有直接相信。它先說要自己打開第二張確認,又讀了一次那張收據,才回答我:照品項加總 882 元、照收據印的 892 元,差的 10 元全部來自 10/11 那張,建議回頭對一下信用卡或電子支付的紀錄,看實際扣了多少。答案是對的。

整個過程 44.5 秒。另外,Claude Code 把子代理的報告交回主對話時,會先加一段說明,告訴主對話「這是子代理的輸出,不是使用者的指示」。子代理讀到的檔案裡如果藏了奇怪的指令,不會被當成你說的話。

第二次:臨時定義、用 @ 指定

第二次我沒有用資料夾裡的檔案,而是在啟動時用 --agents 傳一段 JSON,臨時定義一個叫 receipt-auditor 的子代理,模型寫 sonnet,再用 @agent-receipt-auditor 指定它:「這些收據有沒有哪一張印錯?」

這次子代理跑的是 Sonnet 5,一樣讀完三張、指出第二張多印 10 元,回報是繁體中文,用了大約 7,400 個 token、19 秒。主對話也是又自己讀了一次第二張才回答,全程 34.4 秒。

兩次對照起來,臨時定義的子代理跟資料夾裡的用起來一樣,而且會跟資料夾裡的並存:這次的代理清單裡兩個都在。

什麼時候值得用

從這兩次看,子代理最適合的是「要讀很多東西、但只需要結論」的工作:翻一堆檔案找某個設定、讀長長的紀錄檔找錯誤、整理一個資料夾裡的資料。讀的過程留在子代理那邊,主對話只拿到幾行結論。

不太適合的是:工作本身很小(三張收據其實主對話自己讀就好,這次是為了示範)、或是要跟你來回討論的工作。子代理做完就交回結果,中間你插不上話。

另外,主對話那邊的用量才是大頭。這兩次的紀錄裡,主對話的 token 大部分是快取讀取,也就是系統提示、工具說明這些每一輪都要帶的東西,子代理本身用得不多。子代理省下的是主對話的空間,不代表整體的用量會少很多。

跟 Agent Teams 差在哪

Agent Teams 常跟子代理放在一起講,但它是另一種東西。

子代理是在同一個對話裡做事,做完把結果交回給叫它的主對話,子代理之間通常不直接溝通。Agent Teams 是同時開好幾個獨立的 Claude Code:一個當隊長,負責拆工作、分配;其他當隊友,各自有自己的對話空間,彼此可以直接傳訊息、共用一份任務清單。

官方文件寫了幾個限制:

  • 它還在實驗階段,預設是關的。要打開,設環境變數 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1,或寫進 settings.json 的 env。
  • 只能在互動模式用。用 claude -p 這種非互動模式,不會生出隊友。所以這次我沒有測。
  • 用的 token 比單一對話多很多,因為每個隊友都是一個獨立的 Claude。
  • 打開之後,連平常的子代理都可能被當成隊友開出來。

官方建議的用法是:幾件可以分頭進行的事,例如從不同角度研究一個問題、幾個人分頭審查不同面向、同時驗證幾種可能的錯誤原因。要依序做、或大家都要改同一個檔案的工作,用單一對話或子代理比較好。

Agent Teams 怎麼打開、怎麼看每個隊員在做什麼、官方建議開幾個、為什麼用量跟人數成正比,我另外整理在 Claude Code Agent Teams 是什麼。

除了這兩種,官方文件還列了另外幾種讓 Claude Code 同時做好幾件事的方法,例如在一個畫面裡派發、監看好幾個背景對話的 agent view(用 claude agents 打開,還是預覽版),這篇沒有寫。

這篇沒有測的

互動模式裡的操作:@ 選單、背景子代理、/agents 指令。我兩次都是用 claude -p。

--agent 讓整個對話變成子代理。

Agent Teams。它只能在互動模式開,而且很耗額度。

子代理改檔案。這次只給了讀檔的權限。

用外掛裝進來的子代理。子代理怎麼跟技能(Skills)、MCP 搭配,可以看 Claude Skills 教學和 Claude Code MCP。子代理的檔案裡也可以自帶 hooks,hooks 是什麼在 Claude Code Hooks 教學。

常見問題

Claude Code 的子代理要另外付錢嗎?

不用另外付,但會用到額度。官方文件寫,子代理自己送出的請求,跟主對話算在同一個方案的用量裡。可以把子代理指定成 Haiku 這類便宜、快的模型,讓它去做讀檔、搜尋這種雜事。

子代理檔要放在哪裡?

只給這個專案用的放 .claude/agents/,可以跟程式碼一起進版本控制;每個專案都要用的放自己家目錄的 ~/.claude/agents/。只想這一次用,可以在啟動時用 --agents 參數直接傳 JSON,不會存成檔案。同名的時候,--agents 優先,再來是專案的,最後是個人的。

子代理跟 Agent Teams 差在哪?

子代理在同一個對話裡做事,做完把結果交回給叫它的主對話,彼此不直接溝通。Agent Teams 是好幾個獨立的 Claude Code,一個當隊長分配工作,隊友之間可以直接傳訊、共用任務清單。官方文件寫 Agent Teams 還在實驗階段、預設關閉、用的 token 多很多,只能在互動模式用。

/agents 指令怎麼不見了?

官方文件寫,2.1.198 之後輸入 /agents 只會印一段提醒,叫你直接請 Claude 建立,或自己去改 .claude/agents/ 和 ~/.claude/agents/ 裡的檔案。2.1.197 以前才是有選單的建立精靈。

這篇怎麼查證的

這篇只有一部分實際跑過,其餘依官方文件整理,查證日期 2026/10/14(在我自己的 Mac 上用 Claude Code 2.1.280(訂閱方案,主對話的模型是 Opus 5.5)跑了兩次非互動模式(claude -p),一次用資料夾裡的子代理檔、一次用 --agents 參數臨時定義,測試資料是我自己寫的三張文字收據。互動模式裡的 @ 選單、背景子代理、/agents 指令,以及 Agent Teams(只能在互動模式開)都沒有實測,依官方文件)。哪些有跑、哪些沒跑,文中各段有寫。價格與方案以官方頁面為準,工具改版後內容可能過期。