菊香满屋 發表於 2026-3-9 20:56:00

多智能体并行协作开发模式 Claude Code Agent Teams 完整上手攻略

<p>https://zhuanlan.zhihu.com/p/2004878637753730888</p>
<p data-first-child="" data-pid="xsLCnQDW">如果你用过 Claude Code 的智能体功能,应该很熟悉这种流程:一个智能体负责一个任务,按顺序执行,结果统一回到主会话。这种单智能体模式的局限很明显,只能串行推进,没法同时探索多个方案,更谈不上智能体之间的相互校验或讨论。</p>
<p data-pid="iftE3S2V">这正是&nbsp;<strong>Claude Code Agent Teams</strong>&nbsp;要解决的问题。它不只是把任务并行化,而是引入了一种新的协作方式:让多个 AI 实例在同一个项目中一起工作。它们可以<strong>互相通信、共享任务进度,甚至通过「对抗式讨论」来验证各自的判断</strong>。</p>
<p data-pid="HX698JvC">接下来我会结合实际使用过程,讲清楚 Agent Teams(Swarms) 的基本概念、如何配置,以及在什么场景下最值得使用。</p>
<h3><strong>什么是 Claude Code Agent Teams</strong></h3>
<figure data-size="normal">
<div class="RichText-ConditionalImagePortal"><img src="https://picx.zhimg.com/v2-6a01ba33b9fc6a214781299e5362df95_1440w.jpg" class="origin_image zh-lightbox-thumb" width="1080" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="576" data-original-token="v2-1191e668115fcad8b3ddedb4e87bef9f" data-original="https://picx.zhimg.com/v2-6a01ba33b9fc6a214781299e5362df95_r.jpg"></div>
</figure>
<p data-pid="NfXd6h7b">Agent Teams 是 Claude Code 中的一项<strong>实验性功能</strong>,用于协调多个 Claude 实例在同一个项目中协同工作。</p>
<p data-pid="zfRCJ9hK">它的核心思路是:每个队友智能体都运行在各自独立的上下文中,并且可以彼此通信。这意味着通信不再只发生在「主智能体 → 子智能体」之间,而是支持<strong>点对点的直接交流</strong>。</p>
<p data-pid="VdG-xXmh">在一个 Agent Teams 会话中,会有一个智能体作为团队负责人(Team Lead),负责协调整体工作、分配任务和汇总结果。但每个队友依然是独立运行的,彼此之间可以直接交换信息、质疑对方的结论,并在他人工作的基础上继续推进。</p>
<h3><strong>核心组件</strong></h3>
<p data-pid="VADJrC0S"><strong>Team Lead(团队负责人)</strong>:团队的主会话。负责生成队友、分配任务、协调工作并汇总结果。负责人也可以执行任务,但通常可设置为仅负责协调。</p>
<p data-pid="HpGrvCNn"><strong>Teammates(队友智能体)</strong>:各自独立执行分配任务的智能体。每个队友有自己的上下文窗口,加载项目相关信息(<code>CLAUDE.md</code>、MCP 服务器、技能),并可以直接与其他队友通信。</p>
<p data-pid="2Z0Vuvzf"><strong>Task List(共享任务列表)</strong>:队友认领和完成的任务列表。每个任务有三种状态:<code>pending(待处理)</code>、<code>in progress(进行中)</code>、<code>completed(已完成)</code>。任务可设置依赖,未解决依赖的任务无法被认领。</p>
<p data-pid="LJFhxE6x"><strong>Mailbox(消息系统)</strong>:智能体间的通信系统。可以发送给指定队友或广播给全员,消息即时到达,无需轮询。</p>
<h3><strong>团队任务管理</strong></h3>
<p data-pid="9Dz1GVk-">系统会自动处理任务之间的依赖关系。当某个队友完成了其他任务所依赖的任务后,这些被阻塞的任务会自动解锁,不需要人工干预。</p>
<p data-pid="WlyUH7zy">负责人可以显式分配任务,也可以让队友在完成当前任务后,自行领取下一个<strong>未分配且依赖已完成</strong>的任务。为了避免多个队友同时领取同一个任务,任务领取过程使用了文件锁机制来防止竞争条件。</p>
<p data-pid="un81dhc_">团队和任务信息都存储在本地:</p>
<ul>
<li data-pid="XhqlOKOc"><strong>团队配置</strong>:<code>~/.claude/teams/{team-name}/config.json</code></li>
<li data-pid="4row1h9c"><strong>任务列表</strong>:<code>~/.claude/tasks/{team-name}/</code></li>
</ul>
<p data-pid="KqtBVAth">团队配置文件中包含一个&nbsp;<code>members</code>&nbsp;数组,记录了每个队友的名称、Agent ID 和 Agent 类型。队友可以通过读取这个文件来发现团队中的其他成员,从而完成协作。</p>
<h3><strong>上下文与通信</strong></h3>
<p data-pid="ivSUKC1T">每个队友都有自己独立的上下文窗口。创建时,队友会加载与普通会话相同的项目上下文,包括&nbsp;<code>CLAUDE.md</code>、MCP 服务和已启用的技能,同时还会收到负责人提供的启动提示。需要注意的是,负责人的对话历史不会传递给队友。</p>
<h3><strong>队友之间如何共享信息</strong></h3>
<ul>
<li data-pid="T529sXF4"><strong>自动消息投递</strong>:队友发送的消息会自动送达给目标对象,负责人不需要主动轮询或检查状态。</li>
<li data-pid="N2o8qlht"><strong>空闲通知</strong>:当队友完成任务并进入空闲状态时,会自动通知负责人。</li>
<li data-pid="Xqq7-h3X"><strong>共享任务列表</strong>:所有智能体都可以看到任务状态,并领取当前可执行的任务。</li>
</ul>
<h3><strong>队友消息方式</strong></h3>
<ul>
<li data-pid="BPzcbs-v"><strong>message</strong>:向指定的某一个队友发送消息</li>
<li data-pid="fePeIMu1"><strong>broadcast</strong>:同时向所有队友发送消息。由于成本会随团队规模增长,建议谨慎使用</li>
</ul>
<h3><strong>Agent Teams vs Subagents</strong></h3>
<p data-pid="fgrz2b2g">Claude Code 的 Subagents 和 Agent Teams 都可以通过独立上下文实现并行工作。其中,Subagents 是专注于单个任务的工作单元,结果仅汇报给主智能体,所有协调工作也由主智能体统一管理。</p>
<p data-pid="57V7R3WE">Agent Teams 则是真正的协作机制:队友可以直接互相通信,共享任务列表并自我协调。Team Lead 负责整体安排,但不会成为通信瓶颈。需要注意的是,token 消耗会更高。</p>
<table data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">
<tbody>
<tr>
<th>&nbsp;</th>
<th>Subagents</th>
<th>Agent teams</th>
</tr>
<tr>
<td>上下文</td>
<td>各自独立窗口,结果返回给主智能体</td>
<td>各自独立窗口,完全自主</td>
</tr>
<tr>
<td>通信方式</td>
<td>仅向主智能体汇报</td>
<td>队友之间可以直接通信</td>
</tr>
<tr>
<td>协调方式</td>
<td>主智能体统一管理</td>
<td>共享任务列表,自主协调</td>
</tr>
<tr>
<td>适用场景</td>
<td>专注任务,只需结果</td>
<td>复杂任务,需要讨论和协作</td>
</tr>
<tr>
<td>Token 成本</td>
<td>较低</td>
<td>较高,每个队友都是独立实例</td>
</tr>
</tbody>
</table>
<p data-pid="jeyNuaQq">选型建议:</p>
<ul>
<li data-pid="z73CGtFg">需要快速、明确产出结果时,用&nbsp;<strong>Subagents</strong></li>
<li data-pid="TsQK1wZt">任务复杂、需要讨论和协作时,用&nbsp;<strong>Agent Teams</strong></li>
</ul>
<blockquote data-pid="EIvM9P9s">注意:该功能默认关闭,需要通过实验性标志启用。</blockquote>
<h3><strong>快速设置指南</strong></h3>
<p data-pid="n0znGY8g">先从实际配置开始。有几个选项会直接影响 Agent Teams 的工作方式。</p>
<p data-pid="qt8aKUHl"><strong>前置条件</strong></p>
<p data-pid="JwGjp08F">在启用 Agent Teams 之前,请确认你已经具备以下条件:</p>
<ul>
<li data-pid="ETLkdyON">已安装并更新到较新的 Claude Code 版本</li>
<li data-pid="nEjDhAu3">可以访问 Claude Code 的配置文件(<code>~/.claude/settings.json</code>)</li>
<li data-pid="aAg_k3b4">(可选)如果打算分屏查看多个智能体,建议使用 tmux 或 iTerm2</li>
</ul>
<p data-pid="zrVp433h">如有需要,可以先更新 Claude Code:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>claude update
claude --version</code></pre>
</div>
<p data-pid="C8AUURSn">建议版本不低于&nbsp;<code>2.1.33</code>,以避免兼容性问题。</p>
<h3><strong>步骤 1:启用实验性标志</strong></h3>
<p data-pid="Jg9UqJBV">Agent Teams 默认是关闭的,需要手动启用。</p>
<p data-pid="gITR332v">先打开 Claude Code 的配置文件:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code># Mac/Linux
nano ~/.claude/settings.json

# 或使用你常用的编辑器
code ~/.claude/settings.json</code></pre>
</div>
<p data-pid="lIx0C24R">在配置中添加实验性标志:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>{
"env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}
}</code></pre>
</div>
<p data-pid="utCl1aip">如果你已经配置了其他选项,只需要把该字段合并进现有的&nbsp;<code>env</code>&nbsp;节点即可:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>{
"env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1",
    "OTHER_SETTING": "value"
},
"hooks": {
    // 现有 hooks 配置
}
}</code></pre>
</div>
<p data-pid="5qkL0kLy">保存文件后,重启 Claude Code 使配置生效。</p>
<h3><strong>步骤 2:选择显示模式</strong></h3>
<p data-pid="bs5WXEW_">Agent Teams 提供两种显示模式,侧重点不同。</p>
<p data-pid="5PZHtE0i"><strong>In-Process(进程内模式)</strong></p>
<p data-pid="ngTRYLoL">所有队友运行在同一个终端里,你一次只能看到一个,但可以在它们之间切换。</p>
<ul>
<li data-pid="igIbI962">适用于任何终端(VS Code、Windows Terminal、普通 shell)</li>
<li data-pid="yvjxl2I-">不需要额外工具或配置</li>
<li data-pid="hXtmEd01">使用&nbsp;<code>Shift + Up / Down</code>&nbsp;在队友之间切换</li>
<li data-pid="rxB7vmif">适合快速验证、简单协作或无法使用 tmux 的环境</li>
</ul>
<p data-pid="DsQA-Wu7"><strong>Split-Pane(分屏模式)</strong></p>
<p data-pid="UzjKvD0o">每个队友都有独立的窗格,可以同时看到所有输出。</p>
<ul>
<li data-pid="X4d6eh8A">需要 tmux 或 iTerm2</li>
<li data-pid="PZA9FJmp">更容易掌握整体进度和上下文</li>
<li data-pid="8a4uAEu3">可以直接进入某个窗格与对应智能体交互</li>
<li data-pid="j_R4fyMv">适合复杂任务、多智能体协作和调试场景</li>
</ul>
<p data-pid="sz1Dj6qP">默认模式为&nbsp;<code>auto</code>:如果检测到你在 tmux 中运行,会自动使用分屏模式;否则使用进程内模式。</p>
<p data-pid="DqVyPBc3">如果想手动指定,在&nbsp;<code>settings.json</code>&nbsp;中配置:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>{
"env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
},
"teammateMode": "in-process"
}</code></pre>
</div>
<p data-pid="z3FGlVjh">或使用分屏模式:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>{
"teammateMode": "tmux"
}</code></pre>
</div>
<p data-pid="wGSBTwTM">也可以在启动时为单次会话覆盖:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>claude --teammate-mode in-process
claude --teammate-mode tmux</code></pre>
</div>
<h3><strong>步骤 3:安装 tmux(用于分屏)</strong></h3>
<p data-pid="lIPM_x2V">想用分屏模式的话,需要先把 tmux 装好。</p>
<p data-pid="QrE4K-F7"><strong>Mac:</strong></p>
<div class="highlight">
<pre class="highlighter-hljs"><code>brew install tmux</code></pre>
</div>
<p data-pid="vOxATCyC"><strong>Ubuntu / Debian / WSL:</strong></p>
<div class="highlight">
<pre class="highlighter-hljs"><code>sudo apt update &amp;&amp; sudo apt install tmux</code></pre>
</div>
<p data-pid="fafO98Sv">装完可以简单检查一下:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>which tmux
tmux -V</code></pre>
</div>
<p data-pid="dQDrBjO6"><strong>iTerm2 替代方案:</strong></p>
<p data-pid="lNVrSrEf">在 Mac 上,其实也可以不装 tmux,直接用 iTerm2:</p>
<ol>
<li data-pid="XIgsa4Uc">安装&nbsp;<code>it2</code>&nbsp;命令行工具:<code>brew install mkusaka/it2/it2</code></li>
<li data-pid="lJyF12fy">打开 iTerm2 → Settings → General → Magic</li>
<li data-pid="regYGfoR">启用&nbsp;<code>Enable Python API</code></li>
</ol>
<p data-pid="-P-H3vsR">Claude Code 会自动检测你当前的终端环境,不需要手动指定。</p>
<h3><strong>步骤 4:检查是否生效</strong></h3>
<p data-pid="BUUpb7JR">修改完设置文件后,重启 Claude Code,然后运行&nbsp;<code>/config</code>&nbsp;命令。</p>
<p data-pid="FQWuDvYA">往下翻配置列表,如果看到:</p>
<figure data-size="normal">
<div class="RichText-ConditionalImagePortal"><img src="https://pica.zhimg.com/v2-c32adf470700d25750b0125bf01e2c36_1440w.jpg" class="origin_image zh-lightbox-thumb" width="1080" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="576" data-original-token="v2-6671dc61b52921b92bf6a79712ffb5a6" data-original="https://pica.zhimg.com/v2-c32adf470700d25750b0125bf01e2c36_r.jpg"></div>
</figure>
<p data-pid="fPyHMqn5">说明 Agent Teams 已经成功启用。</p>
<p data-pid="QByofpXU">如果没有这个选项,基本可以确定是配置文件的问题。重点检查:</p>
<ul>
<li data-pid="7mMQ0JAN"><code>env</code>&nbsp;是否写在正确的位置</li>
<li data-pid="SrdUo4wm"><code>CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS</code>&nbsp;是否设置为&nbsp;<code>"1"</code></li>
</ul>
<p data-pid="7eZueoM1">修正后保存文件,重启 Claude Code,再跑一次&nbsp;<code>/config</code>。</p>
<h3><strong>步骤 5:创建你的第一个团队</strong></h3>
<p data-pid="jlJOF7ve">进入 Claude Code 后,直接描述目标即可。最简单的方式是让它自行拆解任务:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>创建一个智能体团队来重构认证模块。
将工作分解为可以独立完成的并行任务。</code></pre>
</div>
<p data-pid="7evGSQ_D">如果你希望更可控,也可以手动指定队友和职责:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>创建一个包含 3 个队友的团队:
- 一个重构登录流程
- 一个重构注册流程
- 一个为两者更新测试

每个队友使用 Sonnet 模型。</code></pre>
</div>
<p data-pid="qXrK6AXW">Claude 会自动创建团队、生成队友、分配初始任务,并开始协同推进。</p>
<figure data-size="normal">
<div class="RichText-ConditionalImagePortal"><img src="https://pic4.zhimg.com/v2-325adb6ef0417fb8cef2d99ade84c5db_1440w.jpg" class="origin_image zh-lightbox-thumb" width="1080" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="576" data-original-token="v2-17615d24220606331138cdb9e52c0a5d" data-original="https://pic4.zhimg.com/v2-325adb6ef0417fb8cef2d99ade84c5db_r.jpg"></div>
</figure>
<p data-pid="KDx0FRrH"><strong>导航与交互</strong></p>
<p data-pid="lzvDV6-A">团队运行后,你可以用快捷键在不同队友之间切换和交流。</p>
<p data-pid="D4-LH847"><strong>In-Process 模式:</strong></p>
<table data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">
<tbody>
<tr>
<th>操作</th>
<th>快捷键</th>
</tr>
<tr>
<td>切换当前选中的队友</td>
<td>Shift+Up / Shift+Down</td>
</tr>
<tr>
<td>进入该队友的会话视图</td>
<td>Enter</td>
</tr>
<tr>
<td>回到 Lead 视图</td>
<td>Escape</td>
</tr>
<tr>
<td>打断队友正在执行的操作</td>
<td>Escape (查看队友时)</td>
</tr>
<tr>
<td>显示 / 隐藏任务列表</td>
<td>Ctrl+T</td>
</tr>
<tr>
<td>给选中的队友发消息</td>
<td>Type and press Enter</td>
</tr>
</tbody>
</table>
<p data-pid="JjuAKFYo"><strong>Split-Pane 模式:</strong></p>
<table data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">
<tbody>
<tr>
<th>操作</th>
<th>方式</th>
</tr>
<tr>
<td>选择要交互的队友</td>
<td>点击该队友的分屏</td>
</tr>
<tr>
<td>向队友发送指令或消息</td>
<td>在对应分屏中输入</td>
</tr>
<tr>
<td>查看当前任务列表</td>
<td>在任意分屏执行 /tasks</td>
</tr>
<tr>
<td>切回 Lead 视图</td>
<td>点击 Lead 分屏</td>
</tr>
</tbody>
</table>
<h3><strong>高级控制技巧</strong></h3>
<h3><strong>委托模式(Delegate Mode)</strong></h3>
<p data-pid="DRNm8kp8">有时候你会发现 Team Lead 开始自己写代码,而不是把事情交给队友。通常不是「失控」,而是它觉得自己做更快。如果你希望它只负责调度,可以开启<strong>委托模式</strong>。</p>
<figure data-size="normal">
<div class="RichText-ConditionalImagePortal"><img src="https://picx.zhimg.com/v2-8dbd951f3e11eb66d51d5dc90736669b_1440w.jpg" class="origin_image zh-lightbox-thumb" width="1080" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="576" data-original-token="v2-2017137e98c150974a900052ea7e9871" data-original="https://picx.zhimg.com/v2-8dbd951f3e11eb66d51d5dc90736669b_r.jpg"></div>
</figure>
<p data-pid="kZg-_GYE">在这个模式下,Team Lead 只负责指挥:</p>
<ul>
<li data-pid="GqIqjEGl">拉起或关闭队友</li>
<li data-pid="bGm7x1Zt">给队友发消息、对齐方向</li>
<li data-pid="6cBFX_eA">管理任务列表、跟进进度</li>
</ul>
<p data-pid="NbitRs8n">它不会再改代码、跑命令或直接实现功能。</p>
<p data-pid="Kk_Osj4W">启用方式:</p>
<ol>
<li data-pid="T8lRsMou">先启动团队</li>
<li data-pid="BzDgejEe">按&nbsp;<code>Shift+Tab</code>&nbsp;切换到委托模式</li>
</ol>
<p data-pid="aIk5HUtw">当你希望 Team Lead 专注于调度,而不介入代码实现时,委托模式非常有用。</p>
<h3><strong>计划批准(Require Plan Approval)</strong></h3>
<p data-pid="m7bcNUtQ">对于复杂或高风险的任务,可以让队友在动手前先提交规划。</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>生成一个架构师队友来重构数据库架构。
在它们进行任何更改之前要求计划批准。</code></pre>
</div>
<p data-pid="QWiljK5Y">在计划批准模式下,队友只能读取文件、调查信息,但无法修改代码。完成准备后,它们会将计划提交给 Team Lead 审查。</p>
<figure data-size="normal">
<div class="RichText-ConditionalImagePortal"><img src="https://pic4.zhimg.com/v2-bfde42816897e5760615b60ff053867f_1440w.jpg" class="origin_image zh-lightbox-thumb" width="1080" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="576" data-original-token="v2-625de97a8be9554d828cdacbd8925df1" data-original="https://pic4.zhimg.com/v2-bfde42816897e5760615b60ff053867f_r.jpg"></div>
</figure>
<p data-pid="x6UXYMqU">Team Lead 可以:</p>
<ul>
<li data-pid="CNEq4jQC"><strong>批准</strong>&nbsp;— 队友退出规划模式,开始实施</li>
<li data-pid="Fzs1TXxa"><strong>拒绝并反馈</strong>&nbsp;— 队友保持规划模式,根据反馈修改计划并重新提交</li>
</ul>
<p data-pid="HKBA70-1">你可以通过指定标准来影响批准决策:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>创建一个需要所有队友计划批准的团队。
只批准包含测试覆盖率的计划。
拒绝任何没有迁移就修改数据库架构的计划。</code></pre>
</div>
<h3><strong>指定智能体模型</strong></h3>
<p data-pid="O1F2mT3y">默认情况下,队友会使用与 Team Lead 相同的模型。你也可以针对不同任务指定不同模型:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>创建一个包含 4 个队友的团队:
- 一个使用 Haiku 的研究员,用于快速查找信息
- 一个使用 Opus 的架构师,用于复杂设计决策
- 两个使用 Sonnet 的实现者,用于实际代码更改</code></pre>
</div>
<p data-pid="PEUn9O04">这样可以让每个队友都专注自己擅长的任务,同时控制 token 消耗和性能。</p>
<h3><strong>预批准权限</strong></h3>
<p data-pid="F4V5GqdN">队友执行某些操作时会向 Lead 请求权限。任务多的时候,这可能造成频繁的等待或干扰。</p>
<p data-pid="nnZEARvJ">你可以在生成队友之前,提前批准常用操作:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>/permissions</code></pre>
</div>
<p data-pid="xQ9sfwBO">给项目目录下的文件操作、常用命令以及队友需要用到的工具添加批准,这样队友就能直接执行,无需每次请求。</p>
<figure data-size="normal">
<div class="RichText-ConditionalImagePortal"><img src="https://picx.zhimg.com/v2-5cb1f7a9a567d46cc6166382d8c41327_1440w.jpg" class="origin_image zh-lightbox-thumb" width="1080" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="489" data-original-token="v2-df6902e4aa7e28fcd9ffab5c51d53209" data-original="https://picx.zhimg.com/v2-5cb1f7a9a567d46cc6166382d8c41327_r.jpg"></div>
</figure>
<p data-pid="pA3aDsbz">如果你完全信任团队,也可以跳过权限检查:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>claude --dangerously-skip-permissions</code></pre>
</div>
<blockquote data-pid="8mLqVVdy">⚠️ 注意:跳过权限检查有风险,请确保队友行为可控。</blockquote>
<h3><strong>关闭队友</strong></h3>
<p data-pid="tl9sH7ab">当你需要让某个队友结束工作时,可以发送关闭请求:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>请关闭队友 researcher</code></pre>
</div>
<p data-pid="E4YK_jK8">Lead 发出请求后,队友可以选择同意,安全退出,也可以拒绝并说明原因。</p>
<h3><strong>清理团队</strong></h3>
<p data-pid="M0cJcpn5">当任务完成后,可以让 Lead 清理团队资源:</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>清理团队</code></pre>
</div>
<p data-pid="GvBWlWm0">这会移除共享的团队资源。Lead 在执行清理前会检查是否还有活跃队友,如果有正在运行的队友,清理会失败,所以请先关闭所有队友。</p>
<blockquote data-pid="-akSRmxu">⚠️ 注意:一定要通过 Lead 执行清理。队友自己运行清理可能无法正确处理团队上下文,容易留下不一致的资源状态。</blockquote>
<p class="ztext-empty-paragraph">&nbsp;</p>
<h3><strong>用 Hooks 把好质量关</strong></h3>
<p data-pid="6ulYBna7">Hooks 可以作为最后一道质量门槛,在队友准备收工或提交任务时进行检查:</p>
<ul>
<li data-pid="fhXw7WCC"><strong>TeammateIdle</strong>:队友准备进入空闲状态时触发。如果发现问题,返回&nbsp;<code>exit 2</code>&nbsp;并给出反馈,队友会继续工作。</li>
<li data-pid="xzCrF60W"><strong>TaskCompleted</strong>:任务即将完成时触发。返回&nbsp;<code>exit 2</code>&nbsp;可以阻止任务完成,并把需要修改的意见返回给队友。</li>
</ul>
<p class="ztext-empty-paragraph">&nbsp;</p>
<h3><strong>实战应用场景</strong></h3>
<h3><strong>场景1:并行代码审查</strong></h3>
<p data-pid="lp1zH7Oo">单个审查员通常只能关注一种类型的问题。通过拆分领域,安全、性能、测试等都能得到同时关注,每个队友从不同视角分析同一套代码,更容易发现遗漏和潜在风险。</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>创建一个智能体团队来审查 PR #142,生成三个审查员:
- 安全专家:检查漏洞、注入风险、认证缺陷
- 性能分析师:查找瓶颈、N+1 查询、内存问题
- 测试验证者:检查边缘情况和测试覆盖率

让它们独立完成审查,然后将结果整合成按优先级排序的问题列表。</code></pre>
</div>
<p data-pid="uZmco89I">每个审查者都基于同一个 PR,但各自关注不同的检查重点。审查完成后,由负责人汇总三方结论,形成统一的审查结果。</p>
<h3><strong>场景2:对抗式调试</strong></h3>
<p data-pid="yAhTBqQS">当根本原因不明确时,让多个智能体同时测试不同理论,比顺序排查能更快找到问题。</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>用户报告结账端点间歇性 500 错误,大约 5% 的请求失败,没有明显规律。

创建 5 个队友智能体来调查不同可能原因:
1. 数据库连接池在高负载下耗尽
2. 库存预留中的竞态条件
3. 第三方支付 API 超时处理
4. 内存压力导致垃圾回收暂停
5. 服务间网络问题

让队友相互挑战、反驳彼此的理论。
最终能存活的假设最可能指向根本原因。</code></pre>
</div>
<p data-pid="rciKgLD0">在多智能体排查问题时,我发现对抗式调试非常有效。相比顺序逐一排查,让多个调查者相互质疑、挑战假设,往往能更快、更准确地定位根本原因。</p>
<h3><strong>场景3:跨层功能开发</strong></h3>
<p data-pid="YGuqiGuX">在功能开发中,适合把一个完整功能拆成互不干扰的部分,让队友各自负责一块。</p>
<div class="highlight">
<pre class="highlighter-hljs"><code>创建一个智能体团队来开发通知系统:
- 队友 1:后端 API(创建、列表、标记已读)
- 队友 2:数据库表结构和迁移
- 队友 3:前端 React 组件(通知铃铛、下拉菜单、列表)
- 队友 4:实时更新的 WebSocket 集成
- 队友 5:端到端集成测试

每个队友只修改自己负责的文件。
通过共享任务列表进行协调。
需要依赖他人结果时,明确标记任务依赖。</code></pre>
</div>
<p data-pid="mlarXQrC">每个智能体只负责自己那一部分文件,几乎不会产生合并冲突。通过这种拆分方式,整体推进速度通常比顺序开发快得多。任务列表用于管理依赖关系,例如测试相关的队友会在 API 和前端组件完成后再开始工作。</p>
<h3><strong>最佳实践与注意事项</strong></h3>
<h3><strong>何时使用 Agent Teams</strong></h3>
<p data-pid="ovnyGaXd"><strong>✅ 适合使用的场景</strong>:</p>
<ul>
<li data-pid="GmOUmeRx">并行推进能明显提高效率</li>
<li data-pid="gWjXwoog">各个队友可以在相对独立的范围内工作</li>
<li data-pid="qYGLPpWp">调研、代码审查、新功能拆分开发</li>
<li data-pid="7JZQ0Vhm">需要队友之间直接讨论、对齐结论</li>
</ul>
<p data-pid="o_SwZD1O"><strong>❌ 不适合使用的场景</strong>:</p>
<ul>
<li data-pid="Fe2a5Zfo">任务本身是严格顺序的,无法并行</li>
<li data-pid="XytIFGtn">多个队友需要频繁修改同一个文件</li>
<li data-pid="m7u87qcH">工作之间强依赖,容易出现相互等待</li>
<li data-pid="RQXKL10U">体量很小的日常任务,协调成本高于收益</li>
</ul>
<h3><strong>Token 成本考量</strong></h3>
<p data-pid="b4TtVe9D">每个队友都是一个独立的 Claude 实例,拥有各自的上下文窗口。随着活跃队友数量增加,token 消耗会线性增长。</p>
<p data-pid="3wJMjLO7"><strong>成本效益分析</strong>:</p>
<ul>
<li data-pid="Bm1ZmpG1">队友越多,花费越高</li>
<li data-pid="_dpilelL">并行探索、审查和模块化开发,通常是值得的</li>
<li data-pid="wMalSepv">普通任务用单个会话反而更省钱</li>
</ul>
<h3><strong>当前功能限制</strong></h3>
<p data-pid="VPHHksrH">Agent Teams 目前仍处于实验阶段,存在以下已知限制:</p>
<ul>
<li data-pid="LO4H_fKA"><strong>不支持会话恢复</strong>:<code>/resume</code>&nbsp;和&nbsp;<code>/rewind</code>&nbsp;不会恢复 in-process 模式下的队友</li>
<li data-pid="tRtfAlfC"><strong>任务状态可能不同步</strong>:队友有时不会及时将任务标记为&nbsp;<code>completed</code></li>
<li data-pid="tALBEDwf"><strong>关闭存在延迟</strong>:队友会先完成当前请求再退出</li>
<li data-pid="H0nMDZDC"><strong>单会话单团队</strong>:一个 Team Lead 同一时间只能管理一个团队</li>
<li data-pid="WPumaC8p"><strong>不支持嵌套团队</strong>:队友无法创建或管理子团队</li>
<li data-pid="wK6cYvOs"><strong>终端依赖</strong>:Split-pane 模式需要 tmux 或 iTerm2,默认使用 in-process 模式</li>
</ul>
<h3><strong>最佳实践</strong></h3>
<p data-pid="3oI--9F2"><strong>从调研和审查类任务入手</strong>:选择边界清晰、不涉及直接改代码的任务,例如审查 PR、调研或排查问题。这类任务能直观体现并行探索的价值,同时不会增加并行写代码的复杂度。</p>
<p data-pid="9TFCT18k"><strong>尝试跨层功能开发</strong>:前端、后端、测试等模块分别由不同队友负责,职责明确、交付可控,有助于降低协作成本。</p>
<p data-pid="0xFwmEjE"><strong>控制任务粒度</strong>:任务过小,协调成本过高;任务过大,队友长时间无反馈,返工风险增加。比较理想的任务是自包含的工作单元,有明确产出,如一个函数、一个测试文件或一份审查结论。</p>
<p data-pid="WFRW-yga"><strong>避免多人修改同一文件</strong>:给每个队友分配独立的文件或模块范围,可避免不必要的冲突。</p>
<p data-pid="rGQWts6u"><strong>持续关注团队动态</strong>:定期查看任务进度,及时调整策略,把有价值的发现汇总。长时间放任团队运行可能浪费 token 和精力。</p>
<h3><strong>总结与展望</strong></h3>
<p data-pid="O87wrR_L">Claude Code Agent Teams 是当前自然语言多智能体编排中较为优雅的一种实现。它与 Claude Code 生态深度结合,在不破坏既有能力的前提下,引入了声明式的团队协作机制。尽管仍处于早期阶段,但整体使用体验已经具备较高的实践价值。</p>
<p data-pid="LdXe5CC2">这种方法的价值并不局限于软件开发。如果多智能体协作能够在工程实践中跑通,同样也适用于研究、分析、内容创作和项目规划等复杂工作。</p>
<p data-pid="wkOg_SbD">如果你的项目涉及复杂的多模块开发、多角度调研,或需要并行推进和调试,不妨尝试一下 Agent Teams。</p><br><br>
来源:https://www.cnblogs.com/dhcn/p/19694044
頁: [1]
查看完整版本: 多智能体并行协作开发模式 Claude Code Agent Teams 完整上手攻略