高手篇 · 第 10 章
多代理人與後台自動化
這一章是給進階玩家和團隊用的。如果你才剛學會叫 Claude Code 改檔案,這些可以先放著——知道「它有這些能力」就夠了,哪天真的需要,再回來照做。這一章會帶你認識:怎麼派出小助手分工、怎麼讓它在背景默默跑、怎麼把它寫進腳本自己排程,甚至換一台裝置也能接著用。看不懂的段落直接跳過,不影響你日常使用。
10.1 同時做很多事:四種分工方式
有時候一個任務很大——比方說「把整個專案的程式重寫一遍」——讓一個 Claude 慢慢做會很久。這時你可以讓好幾個 Claude 同時開工、各做一塊,就像找一組人分工,而不是一個人校長兼撞鐘。
官方提供四種分工做法。它們的差別,講白話就三件事:誰來指揮、它們之間要不要互相講話、會不會同時改到同一個檔案打架。下面用一張表認識它們,看完你大概知道哪些跟你有關、哪些純粹是「知道有就好」。
| 方式 | 是什麼(白話) | 什麼時候用 |
|---|---|---|
| 子代理人 () |
在同一個對話裡派出小助手去處理某個小任務,做完回報給主對話 | 想讓主對話保持乾淨、限制某個助手只能用哪些工具、或把瑣事丟給比較便宜的模型省錢 |
| 背景代理人 (agent view) |
同時跑好幾個完整的對話,用一個畫面統一監看 | 想平行處理好幾件互不相干的工作 |
| 多個會「互相傳訊息」的對話一起協作(指令列功能、實驗中、預設關閉) | 需要彼此協調的複雜任務(進階) | |
| 動態工作流 () |
用一段腳本當作計畫,在背景把工作拆給數十到上百個助手 | 超大型、需要規模化分工的任務(進階) |
新手只要先認識前兩種(子代理人、背景代理人)就夠了。後面兩種(agent teams、動態工作流)是給有規模化需求的進階玩家,這裡列出來只是讓你知道天花板在哪——你現在完全不必碰。
往下跨一步之前,三個容易踩的雷
任務之間有依賴,平行就會壞掉。子代理人和背景代理人彼此的 context 完全隔離,A 看不到 B 在做什麼、也看不到 B 做出來的東西。如果「B 要用到 A 的結果」,把兩個同時派出去,B 十之八九會拿不到它要的東西而卡住或亂猜。這種情況得改成接力:先讓 A 做完,把結果摺進交辦給 B 的那句話裡,再派 B——不是平行,是排隊。
好幾個助手同時搶改同一個檔案。沒有協調機制時,兩個助手前後存檔,後存的會直接蓋掉先存的,通常不會跳出任何警告——你只會發現「奇怪,我叫它改的東西不見了」。安全作法是按檔案分工,或讓每個助手在自己的一份工作副本裡動手、互不干擾,第 18 章的 worktree 隔離就是在解這個問題。
agent teams 燒錢的速度比想像快。官方文件提到 plan mode 下 team 的 token 用量大約是單一對話的七倍,且隨成員數幾乎線性往上加,官方建議團隊維持 3~5 人、每人分 5~6 個任務就好。另外要記住一條安全設計:代理人之間互傳的訊息不算你本人核准——某個成員被擋下來的操作,不能透過另一個成員轉手就繞過權限檢查。
想知道原理:這四種做法到底差在哪?
關鍵差別在三個問題:(1) 誰來協調——子代理人由主對話指揮;背景代理人各自獨立、你用一個畫面看;agent teams 彼此自己協調;動態工作流由一段腳本當總指揮。(2) 它們要不要互相講話——只有 agent teams 會互傳訊息,其餘各做各的。(3) 會不會改到同一個檔案——獨立的工作各自處理不同檔案最安全;要動到同一份檔案、又有多個助手在跑時,才需要 agent teams 這種會協調的做法,否則容易互相覆蓋。記住這三個問題,你就能判斷某個任務該用哪一種。
10.2 子代理人:派一個小助手去辦事
子代理人,你可以想成是 Claude Code 從主對話裡「派出去的小助手」。你把一件子任務交給它,它自己跑、自己查,做完只把結論帶回來給主對話——中間一堆瑣碎的查找過程,不會塞爆你正在看的主對話。
為什麼要用它?有幾個實在的好處:
- 主對話保持乾淨:瑣碎的查找丟給小助手,你的主對話只看到重點。
- 限制工具範圍:你可以規定某個小助手「只能讀檔、不能改檔」,更安全。
- 跨專案重用:一個寫好的小助手,換個專案也能叫它出來做事。
- 省錢:把不需要動腦的瑣事,交給比較快、比較便宜的模型去做。
怎麼建立、怎麼派它出馬?最簡單的入口是在對話裡打一個指令:/agents。它會開一個面板,讓你建立和管理自己的小助手。下面帶你實際走一遍。
-
動手做
在對話裡打開 /agents 面板
在你正在跟 Claude Code 對話的視窗裡,直接輸入
/agents再按 Enter。它會跳出一個面板,上面有兩個分頁:Running(執行中)列出目前正在跑的小助手;Library(資料庫)讓你建立和編輯自己的小助手。 -
動手做
切到 Library 分頁,建立一個新的子代理人
點面板上的 Library 分頁,依畫面指示新增一個子代理人。最重要的是幫它寫一段「description(描述)」——用一句話講清楚「這個小助手是幹嘛的」。例如:「專門找出程式裡跑很慢的地方」。
-
動手做
讓 Claude 自己決定何時派它出馬
建好之後你不用每次手動叫它。Claude 會根據你寫的那段 description,在適合的時候自動派這個小助手去做事。描述寫得越清楚,它派得越準。
預期會看到# 之後當你交辦相關任務時,主對話裡會看到類似這樣的提示 > 正在派「效能檢查」子代理人處理這個任務… ✓ 子代理人已完成,回報結果如下
一個實用的玩法是把小助手串起來用。例如你可以這樣交辦:「先用『效能檢查』子代理人找出跑很慢的地方,再用『最佳化』子代理人把它們修好。」一個負責找問題、一個負責修,分工清楚。
想自己手刻一個?子代理人的檔案長這樣
/agents 面板背後其實就是在幫你寫一個檔案。子代理人的定義是一份開頭一段設定、底下接一段 Markdown 說明文字的 .md 檔,放進專案的 .claude/agents/ 資料夾(放在使用者層級的 ~/.claude/agents/ 則每個專案都叫得到)。必填只有兩樣:name(名字)跟 description(描述)——Claude 就是靠這段描述判斷什麼時候該派它出馬,寫得越具體,派得越準。一個最精簡的版本大概長這樣:
# 存成 .claude/agents/code-reviewer.md
---
name: code-reviewer
description: 審查程式碼品質與最佳實務,程式碼一改完就主動使用
tools: Read, Glob, Grep
model: sonnet
---
你是一位程式碼審查員。收到任務時,仔細看過變動的程式碼,
針對品質、安全性、最佳實務給出具體、可以直接動手改的意見。
tools 欄位能把這個小助手能用的工具鎖進一個安全範圍——像這個例子只給了三個唯讀工具,它想手動改檔案也沒有權限,這就是前面「限制工具範圍」那條好處的具體做法。model 欄位決定它跑哪個模型,不寫的話預設沿用主對話當下用的模型。不想留檔案、只是想臨時測試,也可以在啟動指令上用 --agents 旗標直接帶一段等效的設定進去,只在那次 session 有效。要留意的是:如果系統裡設了 CLAUDE_CODE_SUBAGENT_MODEL 這個環境變數,它的優先權比檔案裡的 model 欄位還高,會悄悄蓋過你的設定又不會有任何提醒——子代理人跑的模型跟你預期的不一樣,先檢查看看是不是這個變數在搞鬼。
內建的三個子代理人,開箱就能用
不用自己寫,Claude Code 本身就內建三個子代理人:Explore(唯讀,專門搜尋、理解程式碼庫)、Plan(唯讀,plan mode 時做研究)、general-purpose(工具齊全,扛複雜的多步驟任務)。前兩個的個性像圖書館員——只負責找資料、看懂脈絡,不動手改東西,拿來「先幫我摸清這個專案在幹嘛」特別安全;但它們是一次性的,做完這次任務就結束、不能之後接著問,需要接續同一個探索脈絡往下追問的話,得改用 general-purpose 或自己寫的子代理人。
10.3 讓它在背景默默跑、隨時回來看
有時候 Claude Code 在跑一件要花點時間的工作,你又想空出終端機去做別的事。這時你可以把整個對話「丟到」,讓它自己慢慢跑,你的終端機就空出來了。之後想看它跑到哪,再用指令叫它出來。
這三個指令搭配著用:
- 把目前的對話丟到背景:在對話裡打
/background。終端機會被釋放出來,讓你繼續做別的。 - 看所有在背景跑的對話:在終端機打
claude agents,會打開一個「agent view(代理人總覽)」畫面,列出每個對話的狀態,還會標出哪一個正在等你回話。 - 看目前這個對話在背景跑什麼:在對話裡打
/tasks,可以查看、接回、或停掉某個背景任務。
建議執行:想讓它在背景跑時再用
# 在對話裡:把目前這個對話丟到背景,空出終端機
/background
# 在終端機:打開「代理人總覽」,看所有背景對話的狀態
claude agents
# 在對話裡:查看 / 接回 / 停掉目前的背景任務
/tasks
/background 和 claude agents 差在哪?
/background 是「把這一個對話收到背後」;claude agents 是「打開一個畫面,把所有背景對話一次看清楚」。一個是動作、一個是總覽,搭配著用:先 /background 收起來,需要時用 claude agents 找出來。
背景代理人卡住不動?先查這兩個原因
原因一:它在等你點頭。背景代理人一樣會遇到需要許可的操作,提示會浮現在你的主 session 裡,你可以核准、或按 Esc 只拒絕那一次工具呼叫,不影響它繼續跑其他部分;較舊版本的行為不同,會直接自動拒絕該次操作,讓它自己想辦法繞過去。卡住先回主 session 看看有沒有一則等你回應的提示,實際行為以你目前安裝版本的表現為準。
原因二(通常不是問題):每個背景 session 預設會自動開一份獨立的 git worktree 工作副本(放在 .claude/worktrees/ 底下),彼此的檔案改動不會互相干擾。如果你以為它該改到主要工作區、卻沒看到動靜,很可能是它其實改在自己那份副本裡,去 .claude/worktrees/ 找找看就找得到。不想要這個自動隔離,設定裡把 worktree.bgIsolation 設成 none 就能關掉。
10.4 寫進腳本:用管線把資料餵給它
這一節偏進階,新手看過、知道有這回事就好,不必照做。
平常我們是「跟 Claude Code 對話」——它問你答、來回討論。但有時你只想要一個乾脆的答案、不想進對話,好把它寫進腳本自動跑。這時用 claude -p "你的問題" 就行:它不開對話,直接給你結果。這種「不進對話、直接出答案」的用法,叫做 (無介面模式)。
更厲害的是,Claude Code 遵循一個老牌的設計哲學叫「Unix 哲學」——簡單講就是:每個小工具各做一件事、再用「管線」把它們串起來。你可以把其他指令的輸出,用一條直線符號 |(叫做「管線」)餵給 Claude Code,讓它接手分析。
# 把最近 200 行的程式日誌餵給它,發現異常就用 Slack 通知我
tail -200 app.log | claude -p "Slack me if you see any anomalies"
# 把這次相對 main 分支改動的檔案清單餵給它,做一次安全檢查
git diff main --name-only | claude -p "review these changed files for security issues"
想知道原理:那條直線「|」管線到底在做什麼?
那條直線符號 | 叫「管線(pipe)」。它的作用是:把左邊指令印出來的東西,直接當成右邊指令的輸入,不用先存成檔案再讀進來。以 tail -200 app.log | claude -p "…" 為例:tail -200 app.log 先抓出日誌的最後 200 行,| 把這 200 行原封不動交給 claude -p,Claude 就拿這段內容去分析。這正是 Unix 哲學的精髓——小工具各做一件事,再用管線像水管一樣接起來,組合出強大的自動化。
claude -p 後面還能接很多參數(flags)去微調行為,完整清單在官方的 CLI 參考頁(章末「官方出處」有連結)。這部分純粹是進階玩家的工具,你現在記得「它能被寫進腳本」這個能力存在就夠了。
兩個容易卡住的地雷
塞進去的內容太大會直接失敗。用管線餵資料給 claude -p 時,內容大小是有上限的(官方文件目前標示約 10MB),超過就會直接報錯、不會幫你偷偷截斷。想分析一份很大的 log 或資料檔,別直接把整份 cat 塞進去,改成先把要分析的部分存成一個檔案,再讓 Claude 讀那個檔案路徑。
它幫你開的背景服務,答案一出來就會被關掉。如果提示詞是「幫我啟動一個開發伺服器,然後……」,要留意 headless 模式在拿到最終答案之後,大概幾秒內就會把期間開的背景程序(像那個伺服器)強制關掉,不會讓它一直留著跑。這跟你自己 /background 丟到背景是不同的機制,不能拿來當長駐服務用。
如果你想要「不管在哪台機器跑,結果都一模一樣」——像是排進 CI 管線——還有 --bare(跳過 hooks/skills/MCP/CLAUDE.md 自動載入)、--output-format json 這類讓輸出變成程式讀得懂的固定格式可以用,這些留到大師篇的〈Headless 與 CI〉章節細講。
成本怎麼算?
用 claude -p、Agent SDK 這類「自動化跑」的用量,計費方式可能和你平常互動聊天的用量不同。實際計費以官方公告為準;本教學第 8 章有整理用量與方案的選擇,需要時翻過去看。
10.5 排程:讓它定時自己跑
除了你主動叫它,Claude Code 還能設定時間自己跑——像鬧鐘一樣,到點就自動執行你交代好的任務。常見的用法像是:每天早上自動幫你審一次程式提交、每週稽核一次相依套件、每晚分析一次測試失敗的原因。你休息時,它仍能繼續工作。
排程有三種做法,差別在「它跑在哪台電腦上、有什麼特點」:
| 方式 | 跑在哪 | 特點 |
|---|---|---|
| Anthropic 的雲端 | 你的電腦關機也照跑;可由程式呼叫或 GitHub 事件觸發;從網頁、桌面版、或在指令列打 /schedule 建立 |
|
| 桌面排程任務 | 你自己的電腦 | 能直接用到你本機的檔案和工具,適合需要碰本地檔案的工作 |
/loop |
同一段對話內 | 在同一個對話裡重複跑同一個提示,適合快速、短期的輪詢(例如「每分鐘看一下好了沒」) |
三種裡,/loop 最輕量、就在你眼前的對話裡跑;桌面排程綁你這台電腦;Routines 最強的地方是「電腦關機也照跑」,因為它跑在雲端,不靠你的電腦開著。
建議執行:想試排程時
# 建立一個雲端 routine(之後依面板指示設定時間與任務)
/schedule
# 在同一個對話裡,重複跑同一個提示做輪詢
/loop
Routines 除了「到時間自動跑」,官方還開放另外兩種觸發方式,同一個 routine 可以疊加不只一種:API 呼叫(你自己的系統送一個帶專屬驗證金鑰的請求,等於從外部「按一下開關」)、以及 GitHub 事件(PR 開啟、release 發布時自動觸發)。這代表你能把它接在別的系統後面當收尾——例如告警系統一偵測到異常,順手打一支 API 就讓 Claude 接手去查,不用自己盯著告警面板手動貼進對話框。
Routines 跑起來,中途不會停下來問你
這點務必記住:routine 執行期間不會跳出任何許可提示,不是那種「危險指令會先問你要不要」的互動模式,設定好觸發之後就是全自動跑到底——能讓它做什麼,動工前得先想清楚、把權限收好,別抱著「先跑跑看、危險的它會自己問我」的僥倖心態。官方預設也把它寫死在安全那一側:只能推到 claude/ 開頭的分支,不會自己直接推上 main。
10.6 隨處工作:換裝置也不中斷
你的工作不一定要綁死在同一台電腦上。Claude Code 提供好幾個「換場景接著用」的入口——在公司電腦開的工作,回家用手機接著看;在手機上丟個任務,回桌機已經幫你開好。下面這六個入口,看過知道有就好,需要哪個再去設定。
Remote Control
從手機或任何一台電腦的瀏覽器,接續你本機正在跑的那個對話。人離開座位了,工作還能繼續看、繼續下指令。
從手機 App 丟一個任務出去,它會在你的桌面版自動開一個對話來處理(Pro/Max 方案)。
在網頁版或 iOS App 開一個長時間的任務,之後用 claude --teleport 把它「拉」回你的終端機接手繼續做(需要 claude.ai 訂閱)。
/desktop
把終端機裡的對話「交棒」給桌面版 App,用視覺化的畫面看程式改了哪些地方(macOS/Windows + Claude 訂閱)。
Slack
在 Slack 裡標記 @Claude 丟一個 bug 給它,它會回你一個修好的 PR。完整流程見第 11 章。
Channels
把 Telegram、Discord、iMessage,或你自己設定的 webhook 事件,推進一個對話裡處理。
不用全部試一遍
這六個入口、前面那些子代理人和排程,都是「有需要再學」的進階能力。你日常用 Claude Code,光是在終端機裡跟它對話、叫它改檔,就已經很夠用了。這一章的價值,是讓你知道「當你需要時,這些路都在」——哪天工作變大、變複雜,回來這裡找對應的招式就行。