08 - Subagents 與平行工作

07-Skills與斜線指令 | 00-Index | 下一篇 → 09-Hooks自動化


四種平行方式,先分清楚

方式是什麼適合
Subagent同一個 session 裡的專門助手,有自己的 context window側邊任務會洗版主對話時
Agent view / background agent多個獨立 session 平行跑,一個畫面監看好幾件不相關的工作
Agent team會互相溝通的多個 session需要協作的複雜工作
Dynamic workflows大規模編排 subagent系統性的大改造

🔴 重要的成本認知:以上四種全部都算 Claude 的額度。 要把產出成本移到 ChatGPT Plus,那是 Herdr + Codex 的做法,不是這一章。


Subagent

它解決什麼問題

當一個側邊任務會用大量搜尋結果、log、檔案內容淹沒你的主對話,而那些內容你之後根本不會再看——讓 subagent 在它自己的 context 裡做,只回傳結論。

好處:

  • 保住 context:探索和實作不進主對話
  • 限制權限:可以限定它能用哪些工具
  • 跨專案重用:使用者層級的 subagent
  • 專門化:針對特定領域的 system prompt
  • 控制成本:路由到更快更便宜的模型(如 haiku

放哪裡

位置範圍優先序
--agents CLI flag目前 session2(高)
.claude/agents/目前專案3
~/.claude/agents/你所有專案4
Plugin 的 agents/plugin 啟用處5(低)

專案 subagent 是從工作目錄往上走掃描,所以在子目錄啟動也會撿到 repo 根目錄的。同名時用離工作目錄最近的

⚠️ /agents 指令現在不再開互動建立精靈了,跑它只會提示你直接叫 Claude 建,或自己編 .claude/agents/

Frontmatter 欄位

欄位必填說明
name小寫字母加連字號。不能含 :(那是 plugin 命名空間用的)
description什麼時候該委派給這個 subagent——Claude 靠這個決定
tools能用的工具。省略則繼承全部。要預載 skill 用 skills 欄位,不要在這裡列 Skill
disallowedTools從清單裡移除的工具
modelsonnet / opus / haiku / fable / 完整 ID / inherit(預設 inherit
permissionModedefault / acceptEdits / auto / dontAsk / bypassPermissions / plan
maxTurns最多幾輪就停
skills啟動時預載進 context 的 skill(注入完整內容,不只描述)
mcpServers這個 subagent 可用的 MCP server
hooks綁在這個 subagent 的生命週期 hook
memoryuser / project / local——開啟跨 session 學習
backgroundtrue = 永遠當背景任務跑。不設的話 Claude 自己決定(v2.1.198 起預設在背景跑)
effort思考力度
isolationworktree = 在暫時的 git worktree 裡跑,拿到 repo 的隔離副本。沒改動的話會自動清掉
color在任務清單和 transcript 裡的顏色
initialPrompt當它作為主 session agent 時自動送出的第一則訊息

一個實際的例子(給你的 vault)

.claude/agents/inventory.md

---
name: inventory
description: 盤點某個專科資料夾的所有筆記,產出時效性報告。當使用者要求「盤點」「哪幾篇該更新」「檢查時效」時使用。只讀不改。
tools: Read, Glob, Grep
model: haiku
memory: local
color: cyan
---
 
你是筆記盤點員。**你只讀,不寫任何檔案。**
 
給定一個專科資料夾,掃描所有 `*_overview.md`,產出表格:
 
| 檔案 | updated 年份 | modified 日期 | 內文引用的最新 guideline 年份 | PMID 數量 |
 
規則:
- guideline 年份從「⚡ 資料更新至:」行與 Key References 區抓
- **不要自己判斷哪個 guideline 比較新**——那是主 agent 的工作
- 不確定的欄位填「?」,不要猜
 
只回傳表格和一句話總結。不要貼出筆記內容。

為什麼這樣設計

  • model: haiku → 純掃描不需要貴的模型
  • tools: Read, Glob, Grep物理上不可能改到你的筆記
  • 「不要自己判斷哪個 guideline 比較新」→ 對應 CLAUDE.md §0「絕不捏造」,判斷留給有 PubMed MCP 的主 agent

什麼載入 / 什麼不載入

  • 主對話的 auto memory 不會載入 subagent(例外是 fork,它繼承父對話與 system prompt)
  • subagent 自己的 auto memory(memory 欄位)是獨立的目錄
    • user~/.claude/agent-memory/<name>/
    • project.claude/agent-memory/<name>/
    • local.claude/agent-memory-local/<name>/

auto mode 下的 subagent

classifier 在三個點檢查 subagent:

  1. 啟動前檢查委派的任務描述(危險的任務在生成時就擋掉)
  2. 執行中每個動作都過 classifier,跟主 session 同規則,subagent frontmatter 裡的 permissionMode 會被忽略
  3. 結束時審查完整動作歷史;有疑慮會在結果前面加安全警告

Worktree 隔離 ⭐

兩種用法:

主 session 用 worktree 起步

claude -w feature-auth              # 在 <repo>/.claude/worktrees/feature-auth
claude -w                           # 自動產生名字
claude -w '#123'                    # 從 origin 抓 PR #123 開 worktree
claude -w feature-auth --tmux       # 順便開 tmux session

讓 subagent 在隔離 worktree 裡跑

isolation: worktree

它會拿到 repo 的隔離副本,預設從你的 default branch 分出來(不是父 session 的 HEAD)。沒改動就自動清掉。

🔴 這對你的 vault 特別重要。 obsidian-git 每 10 分鐘會自己 commit/pull/push main。讓多個 agent 直接在同一個 checkout 上改是自找衝突。 isolation: worktree單一 session 內的隔離;跨 session 的隔離用 herdr worktreeclaude -w


Background agents 與 agent view

跑多個獨立 session、一個畫面看:

claude agents                    # 開 agent view
claude agents --json             # 列出進行中的 session(給腳本用)
claude agents --json --all       # 含已完成的背景 session
claude --bg "調查那個 flaky test"  # 直接開一個背景 session
claude attach <id>               # 在這個終端接上某個背景 session
claude logs <id>                 # 印出某個背景 session 的近期輸出
claude stop <id>                 # 停掉
claude respawn <id>              # 重啟(對話保留);--all 重啟全部
claude rm <id>                   # 從清單移除(transcript 還在,可用 --resume)

claude agents 可以用 --cwd <path> 只看某個目錄底下開的 session,也可以用 --permission-mode / --model / --effort / --agent 設定派送出去的 session 的預設值。

在 session 裡:/background [prompt] 把目前 session 轉成背景 agent,/fork [prompt] 把目前對話複製成一個新的背景 session。

💡 /fork 很好用:正在做一件事,想同時試另一個方向,又不想丟掉目前的 context。

背景 subagent 的控制鍵Ctrl+X Ctrl+K 停掉這個 session 所有背景 subagent(3 秒內按兩次確認)。


該用哪個?決策表

情況用什麼
搜尋 / 探索會洗版主對話subagenttools 限制成唯讀)
同一個 repo、彼此獨立的多個修改subagent + isolation: worktree
好幾個不相關的專案要同時推進background agents + agent view
需要 agent 之間溝通agent team
大規模、系統性的改造/batch 或 dynamic workflows
想省 Claude 額度、工作可外包Herdr + Codex

🔗 相關筆記


最後更新:2026-08-04