本教程面向已经会用单个 Claude Code 会话改代码、却苦于"大任务卡在一个会话里"的开发者。目标只有一个:把一份大活拆成多份并行的小活,让多个 Claude 同时干。学完你能分清 Claude Code 的四种并行 Agent 模式(Subagent / Agent View / Agent Teams / Dynamic Workflows),知道每种什么时候用、怎么配、怎么盯,并用 Worktree 做隔离底座、/batch 一键收口,最终跑通一个"代码库五维并行审计"的完整案例。
settings.json 和 YAML frontmatter很多人一听到"并行 Agent"就以为只有"子代理"这一种东西。其实 Claude Code 在 2026 年已经长出四套并行方案,它们的本质区别只有三个问题:
官方给的四套对应关系如下:
| 方案 | 协调者 | 工人是否互通 | 适合场景 |
|---|---|---|---|
| Subagent(子代理) | 当前会话里的 Claude | 只把摘要回传上级 | 侧任务会淹没主对话(搜索结果、日志、大段文件) |
Agent View(claude agents) |
你自己分派、一个面板盯梢 | 各自只跟你汇报 | 多个独立任务,想随时插手其中某个 |
| Agent Teams | 一个 lead 会话排兵布阵 | 共享任务表 + 互相发消息 | 把一个项目拆成几块,工人之间要同步 |
| Dynamic Workflows(动态工作流) | 一段脚本(不再靠对话里的临场判断) | 脚本收集结果并交叉验证 | 子代理数量超过个位数、需要结果互查,如全库审计、500 文件迁移 |
记住这条主线:Subagent 是"会话内的工人",Agent View 是"你当调度台",Agent Teams 是"Claude 当包工头",Dynamic Workflows 是"脚本当包工头且会互查作业"。
下面这套决策图,能帮你 5 秒内选定方案:
flowchart TD
Q1{谁来协调?}
Q1 -->|"Claude 在当前会话里分派"| A[Subagent]
Q1 -->|"我自己分派并盯梢"| B[Agent View]
Q1 -->|"Claude 当 lead 统筹工人"| C[Agent Teams]
Q1 -->|"一段脚本说了算"| D[Dynamic Workflows]
A --> A1{工人改同一份文件?}
B --> B1{工人改同一份文件?}
A1 -->|是| A2[配 worktree 隔离]
A1 -->|否| A3[直接并行]
B1 -->|是| B2[每个会话各自 worktree]
B1 -->|否| B3[只读任务可共用主分支]
C --> C1[按文件分工,避免互踩]
D --> D1{是否需要结果交叉验证?}
D1 -->|是| D2[fan-out 后加 verify 阶段]
D1 -->|否| D3[纯 fan-out 并行即可]
子代理是"在当前会话里另开一个独立上下文窗口干完一件侧任务,只把摘要交回来"的工人。最大价值不是"快",而是省主上下文:你想让 Claude 翻 50 个文件找漏洞,与其让搜索结果刷屏主对话,不如丢给一个 security-auditor 子代理,让它在自己窗口里翻完,只回一句"发现 3 处疑似注入,分别在……"。
Claude Code 自带几个内置子代理,无需配置,Claude 会在合适时机自动调用:
一个容易忽略的细节:Explore 和 Plan 会跳过你的 CLAUDE.md 和 git 状态,所以又快又省 token;其它内置和自定义子代理则会正常加载这两者。
当你发现自己反复"派同一种工人、说同一种话",就该把它固化成自定义子代理。新建文件 .claude/agents/security-auditor.md:
---
name: security-auditor
description: 审计源码中的注入风险、硬编码密钥、不安全反序列化。当代码评审涉及安全漏洞时使用。
tools: Read, Grep, Glob, Bash
model: sonnet
---
你是安全审计员。对给定目录做静态安全审计,只报告、不修改任何文件。
输出结构化清单,每条包含:
- file: 文件路径
- line: 行号
- severity: critical | high | medium | low
- issue: 一句话描述
- evidence: 周围 5 行上下文
不要给出大段修复代码,只指出问题与位置。
几个关键点:
description 写清楚:Claude 靠它判断"什么时候该派这个工人"。描述越准,自动触发命中率越高。tools 收紧:审计员给 Read/Grep/Glob/Bash 即可,不必给 Edit/Write——它本来就不该改文件,权限从根上挡住误操作。model 路由:高价值的审计用 sonnet;若是机械的批量分类活,可设 model: haiku 降本。预期结果:保存后无需重启,下次你说"帮我审一下 src/auth 的安全风险",Claude 会自动把活派给 security-auditor,主对话只会收到一份精简清单,搜索噪声全留在子代理窗口里。
description 写得像通用任务。加触发词,比如"当代码评审涉及安全漏洞时使用"。@ 提及列表里,能看到状态。Subagent 是"会话内的工人",Agent View 则是把整个会话本身当工人:你用 claude agents 打开一个面板,分派若干后台会话,每个会话自动落进自己的 worktree,互不干扰;你在一个屏幕里看全部状态,哪个需要你插手就切进去。
claude agents
它解决的是 Subagent 解决不了的问题——你想完全把任务"交出去",回头再来看。比如:
注意:Agent View 是 research preview;
/agents是另一回事——自 v2.1.198 起/agents不再开面板,只打印子代理文件位置提示。调度台是claude agents,管理子代理定义才用/agents,两者别混。
预期结果:面板里每行一个会话,显示状态(运行中/等待输入/完成)、所在 worktree;点进去即可接管或继续。
这是最"像团队"的模式:一个 lead 会话负责拆活、排期、督工,多个 worker 会话认领任务、干活、还能互相发消息。区别于 Agent View 的地方就是工人之间共享一张任务清单并可直接通信。
典型场景:你要做一个不算小的项目——前端、后端、测试三块。lead 把它拆成三条任务,分派给三个 worker;前端 worker 发现接口字段变了,直接给后端 worker 发消息同步,不用绕回 lead。
注意:Agent Teams 是实验特性、默认关闭。它不适合 teammates 会改同一批文件的情况——Teams 默认不在 worktree 里隔离工人,所以按文件分工(每个 worker 负责不同目录)是安全前提。要共用文件,请回到 Subagent + worktree。
当一份活大到"超过 Claude 一轮一轮判断的舒适区",或者需要结果互查(比如审计发现要被另一个视角复核),就该让脚本接管编排。
核心机制:你写一段 JavaScript 工作流脚本,用 agent() 派子代理、用 parallel()/pipeline() 控并行与流水线、用 phase() 分阶段。脚本本身持有计划,子代理只管执行并回数据。运行后用 /workflows 看进度——每个阶段、多少个 agent 完成、一目了然。
它相比 Subagent 的杀手锏是交叉验证:第一阶段 fan-out N 个发现者,第二阶段对每条发现再派验证者去"试着推翻它",多数否决就丢掉。这正是对抗"听起来有理实则错误"的发现的关键。
保存为 .claude/workflows/repo-audit.mjs(或直接交给 Claude 以动态工作流运行):
export const meta = {
name: 'repo-audit',
description: '多维度代码库审计 + 交叉验证',
phases: [{ title: 'Audit' }, { title: 'Verify' }],
}
// schema:强制子代理返回结构化数据,省去解析
const FINDINGS = {
type: 'object',
properties: {
findings: {
type: 'array',
items: {
type: 'object',
properties: {
title: { type: 'string' },
file: { type: 'string' },
severity: { type: 'string' },
},
required: ['title', 'file', 'severity'],
},
},
},
required: ['findings'],
}
const VERDICT = {
type: 'object',
properties: { isReal: { type: 'boolean' }, reason: { type: 'string' } },
required: ['isReal', 'reason'],
}
// 五个审计维度,各自一个子代理,并行 fan-out
const DIMENSIONS = [
{ key: 'security', prompt: '审计注入风险与硬编码密钥,输出 findings' },
{ key: 'types', prompt: '找出潜在的类型错误与 any 滥用,输出 findings' },
{ key: 'tech-debt', prompt: '扫描 TODO/FIXME 与重复实现,输出 findings' },
{ key: 'deps', prompt: '检查依赖中已知漏洞与过期版本,输出 findings' },
{ key: 'tests', prompt: '定位测试覆盖缺口,输出 findings' },
]
// pipeline:每个维度审完立即进入验证,维度间无需互相等待
const results = await pipeline(
DIMENSIONS,
d => agent(d.prompt, { label: `audit:${d.key}`, phase: 'Audit', schema: FINDINGS }),
(audit, d) =>
parallel(
(audit.findings || []).map(f => () =>
agent(
`试着推翻这条发现,默认存疑:${f.title}(${f.file})`,
{ label: `verify:${d.key}`, phase: 'Verify', schema: VERDICT }
).then(v => ({ ...f, dimension: d.key, verdict: v }))
)
)
)
// 只保留经得起验证的发现
const confirmed = results
.flat()
.filter(Boolean)
.filter(f => f.verdict && f.verdict.isReal)
return { confirmed, count: confirmed.length }
为什么用 pipeline 而不是先 parallel 全部审完再验证? 因为维度 A 的发现可以边出边验证,不必等最慢的维度 E。pipeline 让每个维度独立流过两阶段,墙钟时间取决于最慢的那一条链,而不是所有阶段之和。
预期结果:运行后输入 /workflows 看到两阶段进度树;最终返回一份"已交叉验证"的发现清单,剔除了大量误报。
agent() 返回 null? 用户中途跳过某 agent 会让其返回 null。链路上用 .filter(Boolean) 兜底,别裸用 .map。min(16, CPU核数-2) 个 agent 并发,超出会排队。传入 100 个 item 也会全部完成,只是分批。四种模式只要涉及"多个工人改代码",都得靠 worktree 防互踩。一个 worktree 是同一个仓库的独立工作目录 + 独立分支,共享历史与远端,但文件互不污染。
# 在 .claude/worktrees/feature-auth/ 下开新分支 worktree-feature-auth
claude --worktree feature-auth
# 等价简写
claude -w feature-auth
# 不取名,自动生成如 bright-running-fox
claude --worktree
在会话里也能临时切:"帮我在一个 worktree 里做这件事",Claude 会调 EnterWorktree 创建,还能在 .claude/worktrees/ 下的不同 worktree 间直接切,旧的不动。
新 worktree 默认从 origin/HEAD(远端默认分支)拉,保证干净起点。两种覆盖方式:
// 项目根 settings.json
{ "worktree": { "baseRef": "head" } } // 从本地 HEAD 拉,带上你未推送的提交
baseRef 只接受 "fresh"(默认)或 "head",不能填任意 ref。要基于某个 PR:
claude --worktree "#1234" # 自动 fetch pull/1234/head,落到 .claude/worktrees/pr-1234
worktree 是全新检出,.env、.env.local 这类 gitignore 文件不会出现,会导致跑不起来。在项目根放一个 .worktreeinclude(用 .gitignore 语法),列出要复制的 gitignore 文件:
# .worktreeinclude
.env
.env.local
config/secrets.json
规则是"既匹配模式、又是 gitignore 的文件"才会被复制,受版本控制的文件永不会被重复,安全。
最后别忘了把 .claude/worktrees/ 加进 .gitignore,免得主检出里冒出一堆未跟踪文件。
/batch 把一个大改动切成 N 个 worktree 各自提 PR如果你嫌上面几种都要自己编排,/batch 是打包好的开箱方案:你给一个大改动,Claude 把它拆成 5 到 30 个 worktree 隔离的子代理,每个独立完成后各自开一个 PR。本质是 Subagent + Worktree 的封装,不是第五种协调风格。
适合"一个大特性、想拆成多个小 PR 平行评审"的场景。代价同样明显——PR 数量多、token 消耗大,适合有充分 review 带宽的团队。
把四件套串起来:用 Subagent 做单点深挖、Dynamic Workflow 做五维 fan-out + 交叉验证、Worktree 隔离、最后用 /batch 把修复切成多个 PR。
目标:对 src/ 做安全/类型/技术债/依赖/测试五维审计,互查后产出可执行修复清单。
# 项目根
echo ".claude/worktrees/" >> .gitignore
# 让 worktree 带上本地未推送的工作
cat > settings.json <<'EOF'
{ "worktree": { "baseRef": "head" } }
EOF
# 复制必要的 gitignore 文件
cat > .worktreeinclude <<'EOF'
.env
.env.local
EOF
除第五节的 security-auditor 外,再补一个 tech-debt-scout(.claude/agents/tech-debt-scout.md):
---
name: tech-debt-scout
description: 扫描 TODO/FIXME、重复实现、过期 API 用法并分级排期。当评估技术债时使用。
tools: Read, Grep, Glob
model: haiku
---
你是技术债侦察兵。按"烧不烧人"给每条债分级:
critical(阻塞发布) / high(本迭代还) / medium(季度内) / low(有空再说)。
输出 file、line、severity、issue、suggested_fix_at。
注意 tech-debt-scout 用 haiku——机械的分类活降本,security-auditor 这种高价值的才上 sonnet。
把第五节的 repo-audit.mjs 放进 .claude/workflows/,然后在会话里说"按 repo-audit 工作流审计 src/"。Claude 启动工作流,五个维度并行;用 /workflows 观察进度:
▶ Audit [████████░░] 4/5
▶ Verify [██░░░░░░░░] 7/23
工作流返回 { confirmed: [...], count }。把它喂给会话里的 Claude:"根据这些已验证发现,给一份修复计划,按严重度排序,标出每条涉及的文件。"
/batch 切成多 PR 收口确认计划后:
/batch 把上面修复计划按模块拆成多个独立 PR,每个 PR 聚焦一个模块
/batch 自动为每个模块开 worktree、派子代理修、各自提 PR。你在 GitHub 上逐个 review 合并即可。
flowchart LR
Repo[(代码库 src/)] --> WF
subgraph WF[Dynamic Workflow: repo-audit]
direction TB
Audit{五维 fan-out}
Audit --> S1[security-auditor sonnet]
Audit --> S2[types 检查]
Audit --> S3[tech-debt-scout haiku]
Audit --> S4[deps 检查]
Audit --> S5[tests 覆盖]
S1 & S2 & S3 & S4 & S5 --> V[Verify 阶段<br/>逐条试着推翻]
end
WF -->|confirmed findings| Plan[Claude 出修复计划]
Plan --> Batch["/batch 拆 N 个 worktree"]
Batch --> PR1[PR: auth 模块]
Batch --> PR2[PR: 依赖升级]
Batch --> PR3[PR: 测试补全]
PR1 & PR2 & PR3 --> Review((GitHub Review))
--worktree、baseRef、.worktreeinclude、PR 模式、非 git VCS 钩子。claude --help 与 /agents、/tasks、/workflows 三个斜杠命令:分别对应"看子代理定义、看会话内后台任务、看动态工作流运行"。verify 阶段的动态工作流脚本。--worktree、baseRef、.worktreeinclude、PR 模式与隔离机制的权威说明[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
