# 策展 · X (Twitter) 🔥🔥

> 📖 本站完整內容索引（documentation index）：[llms.txt](/llms.txt)

> 作者：Nate Herk (@nateherk) · 平台：X (Twitter) · 日期：2026-06-10

> 原始來源：https://x.com/nateherk/status/2064326627719311775

## 中文摘要

# 如何打造比 99% 的人都更強的 Claude Subagents

一個聰明的老闆，加上一群便宜的 Agent。

這就是讓 Claude Code 的 Subagents（子 Agent）發揮作用的核心心法。

你的主對話視窗就是老闆。它負責與你溝通，然後悄悄地將工作交辦給一群會回報進度的 Agent 團隊。

大多數人要麼從未使用過 Subagents，要麼就是用錯了方式。以下教你如何運用它們，達到超越絕大多數人的境界。

![此圖說明了 AI 代理架構中「子代理（Subagent）」的工作流程，即由主對話發送任務給子代理執行，最後僅回傳結果摘要。](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/7d4662d51975e58c.jpg)

<details class="chart-data"><summary>展開畫面重點</summary><div class="me-note">圖片展示了「子代理（Subagent）」的運作概念，標題為「A subagent is a specialist you send off」（子代理是你派遣出去的專家）。
流程說明如下：
1. 「MAIN CHAT (you)」（主對話/使用者）發送「go do a job」（去執行一項工作）的指令給「SUBAGENT」。
2. 「SUBAGENT」負責執行具體任務，包括「reads files」（讀取檔案）、「runs tests」（執行測試）、「digs」（深入挖掘資訊）。
3. 「SUBAGENT」完成工作後產生「summary」（摘要）。
4. 最終只有「only the answer comes back」（只有答案會回傳）回到「MAIN CHAT」。</div></details>

## 懶人包 (TL;DR)

→ Subagent 本質上就是一個帶有 YAML front matter 的 Markdown 檔案，跟 skill 的原理一樣，只是名稱不同。

→ 每個 Subagent 都在各自獨立的全新 context 中執行，因此研究過程和讀取檔案的雜訊絕不會汙染你的主對話。

→ 讓聰明的 Opus 擔任「老闆」，並將任務委派給便宜的 Haiku 擔任「員工」，能幫你省下大筆費用。

→ 透過工具限制將它們設為唯讀，確保 Agent 絕對無法觸碰你的資料。

→ 當你準備將一堆你這輩子再也不會讀的資料丟進對話時，請使用 Subagent。

→ 動態工作流可以一次啟動數十個 Agent，但如果你不小心，它們會迅速耗盡你的 session 額度。

## Subagent 究竟是什麼？

我曾指示 Claude Code 啟動五個 Subagents，每個都設定了不同的角色，用來審閱我的書。

其中一個是完全的初學者：Linda，58 歲，退休的小學老師。另一個是軟體工程師。一個是 12,000 人規模公司的營運長 (COO)。還有一個是出版商。

這五個 Agent 同時在各自獨立的 session 中執行，每個都有專屬的 Prompt。最後它們回傳了一份綜合審閱報告。我得到的分數大約是 8 分，看來我還有不少地方要改。

重點在於這種結構。你的主 session 是指揮官，也是唯一與你對話的角色。

它可以隨意啟動任意數量的 Subagents，並交給每個 Agent 一項任務（例如：「去讀這些檔案」、「去研究這個議題」、「去修復那個 Bug」），而這些 Agent 只會對主 session 回報。你可以根據需求選擇不同的模型、角色、skill 以及專業領域。

![此圖展示了一種「聰明主管、廉價員工」的 AI 任務分配架構，利用高階模型進行決策，並指派輕量級模型執行具體任務以節省成本。](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/b86126c769bcfea6.png)

<details class="chart-data"><summary>展開畫面重點</summary><div class="me-note">圖片呈現了一個系統架構圖，標題為「Smart boss, cheap workers」。
左側為核心決策單元「THE LEAD」，使用高階模型（Sonnet / Opus），標記為「$$」（高成本）。
右側為三個執行單元，皆使用輕量級模型（Haiku），標記為「$」（低成本），分別負責：
1. scan files（掃描檔案）
2. search code（搜尋程式碼）
3. summarize logs（總結日誌）
該架構意在透過高階模型進行任務規劃與指揮，再由低成本模型處理繁瑣的基礎任務，達到效能與成本的最佳化。</div></details>

接著，主 session 會接收它們的報告並轉達給你。

## 為什麼它們值得使用？

第一個原因是：保持 context 清潔。

![此圖比較了「親自處理（Do it yourself）」與「指派子代理（Send a subagent）」兩種工作模式在處理大量檔案時的記憶體與資訊管理差異。](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/00962826927ba0ba.jpg)

<details class="chart-data"><summary>展開畫面重點</summary><div class="me-note">本圖透過對比說明了 AI 代理的工作流程差異：
1. 左側「Do it yourself」：顯示一個圓形圖示，標註「memory fills up」。說明文字指出：「Every file you read piles into your chat and stays there all session.」（你讀取的每個檔案都會堆積在對話中，並在整個對話期間持續佔用記憶體）。
2. 右側「Send a subagent」：顯示一個矩形圖示，標註「mess stays here」（混亂留在這裡），並透過箭頭指向另一個較小的矩形「clean」（乾淨）。說明文字指出：「It reads the pile in its own window. You get one clean summary.」（它在獨立的視窗中讀取這些堆積的檔案，你最終只會得到一份乾淨的摘要）。</div></details>

當你在主 session 中聊天、開發或進行研究時，你的 context window 會逐漸被填滿。你可以從狀態列觀察到。一旦被雜訊汙染，回答品質就會下降。

將繁重的工作交給 Subagent，它會在一個全新的對話中執行。那些雜訊完全不會進入你的主視窗。

第二個原因是：省錢。你的主 session 可能正在使用最昂貴的 Opus 模型，但 Subagent 可以在 Haiku 或 Sonnet 上執行同樣的研究工作。

![此圖表展示了 Anthropic Claude 系列模型（Haiku、Sonnet、Opus）的定位與成本分級。](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/6c6ae80cc3a65601.jpg)

<details class="chart-data"><summary>展開畫面重點</summary><div class="me-note">圖片呈現了一個階梯狀的架構圖，將 Claude 模型分為三個等級，並標示了其成本與適用場景：
1. **Haiku**：標示為「$」，適用於 scan（掃描）、search（搜尋）、docs（文件處理）。
2. **Sonnet**：標示為「$$」，適用於 build（建構）、review（審閱）。
3. **Opus**：標示為「$$$」，適用於 deep reasoning（深度推理）、security（安全性）。
這些模型透過虛線連接，呈現由輕量級到重量級的遞進關係。</div></details>

我曾讓一個研究型 Agent 去搜尋一個名為 Fireflies.ai 的工具。主 session 保持在 Opus，而 Subagent 則在較便宜的模型上執行網頁搜尋，最後只回傳摘要給我。

第三個原因是：它們是專家。自從我開始經營頻道以來，我對 AI 的看法就是如此。擁有一個什麼都會的超級助理固然有趣，但更好的做法是讓每個 Agent 在單一領域發揮極致。

![這張圖表展示了「多代理人系統（Multi-Agent System）」的概念，強調透過分工讓專門的 AI 執行特定任務，比單一 AI 處理所有事務更有效率。](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/e61eefb6fa12839e.jpg)

<details class="chart-data"><summary>展開畫面重點</summary><div class="me-note">圖片標題為「Each one is a specialist」（每一位都是專家），下方列出了四個專門的 AI 角色及其職責：
1. **security-auditor**：負責找出漏洞 (finds vulnerabilities)。
2. **test-runner**：負責執行並修復測試 (runs and fixes tests)。
3. **doc-writer**：負責保持文件同步 (keeps docs in sync)。
4. **db-expert**：負責執行安全的資料庫查詢 (safe queries only)。

圖片底部總結了核心理念：「One AI doing one thing really well beats one AI doing everything okay. So you split the work across experts.」（一個 AI 把一件事做得非常好，勝過一個 AI 把所有事做得普通。因此，你將工作分配給不同的專家。）</div></details>

你的主 Agent 因為具備各種 skill，所以是個通才，而 Subagents 才是真正的專家。

→ 一個負責安全稽核的 Agent

→ 一個負責撰寫測試的 Agent

→ 一個負責撰寫文件的 Agent

→ 一個精通資料庫架構與查詢的 Agent

你可以將工作拆解成一條 Agent 生產線，讓每個 Agent 各司其職，把事情做到最好。

而且你可以直接借用這些專業知識。GitHub 上有一個名為「Awesome Claude Code Subagents」的儲存庫，裡面有數百個預先建置好的 Agent：API 設計師、後端開發者、GraphQL 架構師、TypeScript 和 SQL 專家等等。

那些比你更懂 CLI 開發的人，已經將他們的知識打包成 Markdown 檔案。你只需要直接拿來用即可。

有一點要注意：由於這些是開源檔案，請留意 Prompt Injection 或任何惡意程式碼。你甚至可以建立一個唯讀的驗證型 Subagent，它的唯一工作就是掃描儲存庫並確認裡面沒有任何有害內容，且不具備將資料傳送到任何地方的權限。

## 它只是一個 Markdown 檔案

自訂的 Subagent 存放在你專案目錄下的 `.claude/agents` 資料夾中，就是一個 Markdown 檔案。它與 `skill.md` 檔案在本質上完全相同，只是名稱不同而已。

![這是一份定義 AI 代理（AI Agent）行為的設定檔，用於指派其擔任資深程式碼審查員的角色。](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/6c0a9bc43b2e1aa0.png)

<details class="chart-data"><summary>展開畫面重點</summary><div class="me-note">這張圖片顯示了一個用於設定 AI 代理的 YAML 格式配置區塊，內容如下：
---
name: code-reviewer
description: Review code after changes. Use proactively.
tools: Read, Grep, Glob, Bash
model: sonnet
---
You are a senior code reviewer.
When invoked:
1. Run git diff to see the changes
2. Review the modified files
Flag: bugs, security holes, missing tests.

這段內容定義了一個名為「code-reviewer」的 AI 代理，其核心任務是擔任「資深程式碼審查員」。配置中指定了該代理可使用的工具（Read, Grep, Glob, Bash）以及所使用的模型（sonnet）。在執行邏輯上，它被要求在被呼叫時執行 `git diff` 來查看變更，審查修改過的檔案，並特別標記出程式錯誤（bugs）、安全漏洞（security holes）以及缺失的測試（missing tests）。</div></details>

上方是 YAML front matter，下方則是指令。

以我的 `clickup-searcher` Agent 為例。Front matter 包含了名稱、描述、模型和顏色。設定顏色後，當它執行時會顯示該顏色，讓你清楚看到它正在運作。我只需要用自然的語言呼叫它，它就會開始工作。

![這是一份定義 ClickUp 資料分析代理（Agent）行為與職責的 Markdown 設定檔。](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/3c292485b4c93c3b.jpg)

<details class="chart-data"><summary>展開畫面重點</summary><div class="me-note">這是一份名為 `clickup-searcher.md` 的設定檔，用於定義一個專門處理 ClickUp 資料的 AI 代理。內容如下：

```markdown
---
name: clickup-searcher
description: "Searches and analyzes ClickUp data. Use this agent whenever a skill or task needs to pull tasks, subtasks, statuses, or other data from ClickUp. Keeps ClickUp API responses out of the main conversation context."
model: sonnet
color: green
---

You are a ClickUp data analyst. Your job is to query ClickUp, process the results, and return clean, structured summaries.

## How You Work

- You receive a specific query or set of instructions from the parent conversation
- You use ClickUp MCP tools OR the `clickup_chat.py` script to pull data
- You process and analyze the raw data
- You return a clean, structured summary -- not raw API responses
```

**畫面重點解讀：**
1. **元數據（Metadata）**：定義了代理名稱（clickup-searcher）、描述、使用的模型（sonnet）以及介面顏色（green）。
2. **角色定位**：明確指出該代理的角色為「ClickUp 資料分析師」。
3. **工作流程**：規範了代理的操作邏輯，強調必須將原始 API 回應進行處理與結構化，避免將冗長的原始資料直接輸出給使用者，以保持對話的簡潔與易讀性。</div></details>

Front matter 非常重要，因為這涉及「漸進式揭露」(progressive disclosure)。Claude Code 只會讀取名稱和描述來判斷該 Agent 是否符合你的需求。如果不符合，Claude 就不會載入剩下的內容，從而避免浪費 token。

這就是為什麼描述是最重要的一行。它是觸發條件。

精確的描述意味著更少的誤判。誤判指的是：該啟動的 Agent 沒啟動，或者不該啟動的 Agent 卻啟動了。

你可以透過實際使用來進行調整。當它沒啟動而你認為應該啟動時，問問原因，然後更新描述。

文件列出了你在 front matter 中可以使用的所有參數：

→ 它可以使用哪些工具

→ 禁止使用的工具（你可以藉此將其設為明確的唯讀）

→ 允許存取哪些 MCP 伺服器

→ 可以呼叫哪些 skill

沒錯，Subagents 可以呼叫 skill，而 skill 也可以呼叫 Subagents。它們是協同運作，而非互相對立。

還有一點要區分：專案層級 vs. 全域層級。專案層級的 Agent 存放在儲存庫的 `.claude` 資料夾中，會隨儲存庫一起發布。全域層級的 Agent 存放在使用者層級，適用於你電腦上的所有專案，且不會在你 push 到 GitHub 時被共享。由於它們只是 Markdown 檔案，在兩者之間移動非常簡單。

## 實際建立一個 Agent

使用 `/agents` 指令即可完成。選擇個人、全域或專案層級，然後選擇「generate with Claude」或手動設定。

我建立了一個「計畫毒舌家」(plan roaster)。Prompt 是：批評我的工作、扮演魔鬼代言人、找出所有漏洞、狠狠地吐槽它。當我說「roast my plan」或「review my plan」時觸發。

接著它會引導你完成剩餘步驟：

1️⃣ 工具：我選擇了唯讀。如果你有需要，可以深入設定 MCP 伺服器和 bash 等個別工具。

2️⃣ 模型：我選擇了 Haiku，或者你也可以選擇繼承父層級的模型。

3️⃣ 顏色：粉紅色。

4️⃣ 記憶：專案、無、使用者或本機。我預設為專案。如果你希望它每次啟動時都像一張白紙，請選擇「無」。

當 Claude 產生 Agent 時，描述通常會寫得很長。請精簡它。漸進式揭露意味著冗長的描述只會浪費 token。

這裡發生了一件真實案例。我餵給它一個糟糕的計畫：在芝加哥橡樹街海灘開一家冰淇淋攤，沒有冰箱，賣著 20 美元一小球的冰淇淋。

結果它沒啟動。我的 `roast` skill 先搶走了工作，因為該 skill 本身也會啟動五個 Subagents。

所以我直接在對話中進行除錯。我問 Claude 為什麼計畫毒舌家沒啟動。結果發現我忘了在 front matter 中關閉引號，導致 YAML 格式錯誤。這是機械性的錯誤，而非判斷錯誤。

小撇步：記得一定要關閉引號。開了一個卻忘了關，會導致整個檔案失效。

當我明確指令後（「使用 plan roaster subagent，不要用 roast skill」），它就啟動了。傳送過去的 Prompt 是：「狠狠地吐槽這個商業計畫」。它針對沒有冰箱和荒謬的 20 美元定價進行了猛烈抨擊。

這個計畫毒舌家在過程中消耗了 22.8K 個 token。但這些 token 完全沒有汙染我的主 session。我收到的只有最終的結論。

這就是這一切帶來的價值。

順帶一提，從終端機複製貼上內容非常痛苦。建議讓它寫入文字檔，或是使用桌面版應用程式。

## 何時該用，何時該跳過？

核心問題是：這項任務是否會將一堆我這輩子再也不會讀的資料丟進對話中？

如果是，就委派出去。如果不是，就直接在對話中處理。

![這張圖表總結了何時該使用 AI 子代理（Subagent）與動態工作流的決策準則。](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/5d0b54d628e90907.jpg)

<details class="chart-data"><summary>展開畫面重點</summary><div class="me-note">圖表分為三個區塊，說明何時該使用 AI 代理（Reach for one）以及何時該避免（Skip it）：

**Reach for one（建議使用）：**
- 它會讀取大量的檔案。
- 它會產生大量的輸出內容。
- 這是一項需要重複執行的工作。
- 獨立的工作，可以並行執行。
- 你需要一位公正的審查者。

**Skip it（建議跳過/不使用）：**
- 這只是一個快速的編輯。
- 步驟之間具有前後依賴關係。
- 代理之間需要進行對話。
- 它需要完整的對話上下文。
- 它需要向你詢問問題。

**Rule of thumb（經驗法則）：**
- 10 個以上的檔案，或是你永遠不會回頭閱讀的輸出內容 = 適合使用子代理（subagent）。
- 擴展訊號：數十個並行工作，或是針對整個程式碼庫的處理 = 適合使用動態工作流（dynamic workflow）。</div></details>

在以下情況使用 Subagent：

→ 你準備要閱讀大量檔案

→ 你會產生大量的輸出內容

→ 這是一個你會重複執行的工作，所以建立一個自訂 Agent

→ 工作是獨立且平行的，例如同時審閱 15 個章節

→ 你想要一個沒有記憶、沒有偏見的客觀審閱者

在以下情況跳過它：

→ 只是簡單的編輯

→ 步驟之間有前後依賴關係（先做 1，再做 2，再做 3）

→ Agent 之間需要互相對話（那是 Agent 團隊，不是 Subagents）

→ Agent 需要完整的對話 context，或者需要問你問題

值得注意的是：Subagents 與主 session 是一對一的關係，不是一對多。同時執行的五個 Agent 無法互相對話。如果它們需要協調並共享任務清單，那屬於 Agent 團隊，成本會更高。

並且要記住權限思維。如果 AI 可以讀取或觸碰資料，請假設它一定會這麼做，即使你從未要求它。明確的工具和 MCP 限制才是真正的防護層。在 Prompt 中寫「請不要那樣做」是沒用的，這兩者有巨大的差別。

![此圖展示了「唯讀代理人（read-only agent）」的概念，強調其透過限制寫入權限來確保系統安全性。](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/d205e9cc7191cb22.jpg)

<details class="chart-data"><summary>展開畫面重點</summary><div class="me-note">圖片標題為「A read-only agent cannot break things」（唯讀代理人無法破壞事物）。中間方框標示為「code-reviewer」，並註解「an agent that only looks, never touches」（一個只會查看、絕不更動的代理人）。下方列出了五個權限狀態：
- 已啟用（綠色框）：Read（讀取）、Grep（搜尋）、Glob（檔案匹配）。
- 已停用（紅色框）：Write（寫入）、Edit（編輯）。
這張圖說明了透過限制代理人的權限，可以有效防止其對程式碼庫造成意外的損壞。</div></details>

你也可以透過設定最大執行次數（例如 10 次）來限制失控的 Agent，防止它陷入研究的迴圈。我很少用到這個功能，但這是一個可用的手段。

成本計算是最直觀的例子。一份 300 頁的報告，如果你只需要三個事實，根本不需要 Opus，甚至連 Sonnet 都不用。傳給 Haiku Subagent，拿回摘要就好。聰明的老闆，便宜的員工，既快速又省錢。

## 動態工作流，謹慎使用

這會啟動一個工作流，將任務平行委派給大量的 Subagents。概念一樣，由主對話指揮，但現在是一次啟動三到四十個 Agent。

我見過它同時啟動 41 個。在測試時，我甚至曾一次觸發 210 個。雖然成功了，但它瘋狂地消耗了我的 session 額度。

觸發詞也改了。以前是「workflow」，現在是「ultracode」，這樣當你在討論其他事情時，Claude 就不會意外啟動大規模的擴散任務。

功能強大，但代價昂貴。啟動時請務必深思熟慮。

## 總結

Subagents 並非魔法。它們只是 Markdown 檔案、乾淨的 context、適合該工作的模型，以及一個知道該交辦什麼的老闆。

不要強迫使用它們。簡單的小事不需要用到 Subagent。用太多反而會讓結果變差。

但當你有一堆再也不會重讀的資料、需要獨立平行的工作，或是想要一份全新的審閱報告時，就啟動一個吧。無論是在終端機、桌面版應用程式、VS Code 還是網頁版，效果都一樣。

我在完整影片中一步步示範了這些細節。連結在第一則回覆中。

## 標籤

Claude Code, Agent, 教學資源, Skills, Anthropic, Claude
