7> 协调多个 Claude Code 实例作为一个团队一起工作,具有共享任务、代理间消息传递和集中管理。7> 协调多个 Claude Code 实例作为一个团队一起工作,具有共享任务、代理间消息传递和集中管理。
8 8
9<Warning>9<Warning>
10 Agent teams 是实验性功能,默认禁用。通过将 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` 添加到你的 [settings.json](/zh-CN/settings) 或环境变量来启用它们。Agent teams 在 [已知限制](#limitations) 中存在关于会话恢复、任务协调和关闭行为的问题。10 Agent teams 是实验性功能,默认禁用。通过将 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` 添加到你的 [settings.json](/zh-CN/settings) 或环境变量来启用它们。如果没有该变量,会话启动时不会设置任何团队,不会写入团队目录,Claude 也不会生成或提议队友。Agent teams 在 [已知限制](#limitations) 中存在关于会话恢复、任务协调和关闭行为的问题。
11</Warning>11</Warning>
12 12
13Agent teams 让你协调多个 Claude Code 实例一起工作。一个会话充当团队负责人,协调工作、分配任务和综合结果。队友独立工作,每个都在自己的 context window 中,并直接相互通信。13Agent teams 让你协调多个 Claude Code 实例一起工作。一个会话充当团队负责人,协调工作、分配任务和综合结果。队友独立工作,每个都在自己的 context window 中,并直接相互通信。
15与 [subagents](/zh-CN/sub-agents) 不同,subagents 在单个会话中运行,只能向主代理报告,你也可以直接与个别队友互动,无需通过负责人。15与 [subagents](/zh-CN/sub-agents) 不同,subagents 在单个会话中运行,只能向主代理报告,你也可以直接与个别队友互动,无需通过负责人。
16 16
17<Note>17<Note>
18 Agent teams 需要 Claude Code v2.1.32 或更高版本。使用 `claude --version` 检查你的版本。18 本页描述的是 v2.1.178 版本的 agent teams。设置 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` 后,生成队友不再需要设置步骤,会话退出时会自动清理。在 v2.1.178 之前,你需要要求 Claude 先创建并命名一个团队,Claude 使用 `TeamCreate` 和 `TeamDelete` 工具来设置和删除它。这两个工具已不再存在。Agent 工具上的 `team_name` 输入被接受但被忽略,`TaskCreated`、`TaskCompleted` 和 `TeammateIdle` [hook payloads](/zh-CN/hooks#taskcreated) 中的 `team_name` 字段携带会话派生的名称,已被弃用。
19</Note>19</Note>
20 20
21本页涵盖:21本页涵盖:
25* [控制队友](#control-your-agent-team),包括显示模式、任务分配和委派25* [控制队友](#control-your-agent-team),包括显示模式、任务分配和委派
26* [并行工作的最佳实践](#best-practices)26* [并行工作的最佳实践](#best-practices)
27 27
28## 何时使用 agent teams28<h2 id="when-to-use-agent-teams">
29 何时使用 agent teams
30</h2>
29 31
30Agent teams 最适合用于并行探索能增加真实价值的任务。有关完整场景,请参阅 [用例示例](#use-case-examples)。最强的用例是:32Agent teams 最适合用于并行探索能增加真实价值的任务。有关完整场景,请参阅 [用例示例](#use-case-examples)。最强的用例是:
31 33
36 38
37Agent teams 增加了协调开销,使用的令牌数量明显多于单个会话。当队友可以独立运作时,它们效果最好。对于顺序任务、同一文件编辑或有许多依赖关系的工作,单个会话或 [subagents](/zh-CN/sub-agents) 更有效。39Agent teams 增加了协调开销,使用的令牌数量明显多于单个会话。当队友可以独立运作时,它们效果最好。对于顺序任务、同一文件编辑或有许多依赖关系的工作,单个会话或 [subagents](/zh-CN/sub-agents) 更有效。
38 40
39### 与 subagents 比较41<h3 id="compare-with-subagents">
42 与 subagents 比较
43</h3>
40 44
41Agent teams 和 [subagents](/zh-CN/sub-agents) 都让你并行化工作,但它们的运作方式不同。根据你的工作人员是否需要相互通信来选择:45Agent teams 和 [subagents](/zh-CN/sub-agents) 都让你并行化工作,但它们的运作方式不同。根据你的工作人员是否需要相互通信来选择:
42 46
56 60
57当你需要快速、专注的工作人员报告结果时,使用 subagents。当队友需要分享发现、相互质疑和自我协调时,使用 agent teams。61当你需要快速、专注的工作人员报告结果时,使用 subagents。当队友需要分享发现、相互质疑和自我协调时,使用 agent teams。
58 62
59## 启用 agent teams63<h2 id="enable-agent-teams">
64 启用 agent teams
65</h2>
60 66
61Agent teams 默认禁用。通过将 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` 环境变量设置为 `1`,在你的 shell 环境中或通过 [settings.json](/zh-CN/settings) 来启用它:67Agent teams 默认禁用。通过将 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` 环境变量设置为 `1`,在你的 shell 环境中或通过 [settings.json](/zh-CN/settings) 来启用它:
62 68
68}74}
69```75```
70 76
71## 启动你的第一个 agent team77<h2 id="start-your-first-agent-team">
78 启动你的第一个 agent team
79</h2>
72 80
73启用 agent teams 后,告诉 Claude 创建一个 agent team,并用自然语言描述你想要的任务和团队结构。Claude 创建团队、生成队友并根据你的提示协调工作。81启用 agent teams 后,用自然语言描述你想要的任务和队友。Claude 会生成他们并根据你的提示协调工作。
74 82
75这个例子效果很好,因为三个角色是独立的,可以在不相互等待的情况下探索问题:83这个例子效果很好,因为三个角色是独立的,可以在不相互等待的情况下探索问题:
76 84
77```text theme={null}85```text theme={null}
78I'm designing a CLI tool that helps developers track TODO comments across86I'm designing a CLI tool that helps developers track TODO comments across
79their codebase. Create an agent team to explore this from different angles: one87their codebase. Spawn three teammates to explore this from different angles:
80teammate on UX, one on technical architecture, one playing devil's advocate.88one on UX, one on technical architecture, one playing devil's advocate.
81```89```
82 90
83从那里,Claude 创建一个具有 [共享任务列表](/zh-CN/interactive-mode#task-list) 的团队,为每个角度生成队友,让他们探索问题,综合发现,并在完成时尝试 [清理团队](#clean-up-the-team)。91从那里,Claude 会填充一个 [共享任务列表](/zh-CN/interactive-mode#task-list),为每个角度生成队友,让他们探索问题,并在完成时综合发现。
84 92
85负责人的终端列出所有队友及其正在处理的工作。使用 Shift+Down 循环浏览队友并直接向他们发送消息。在最后一个队友之后,Shift+Down 会回到负责人。93负责人的终端列出所有队友及其正在处理的工作。使用 Shift+Down 循环浏览队友并直接向他们发送消息。在最后一个队友之后,Shift+Down 会回到负责人。
86 94
87如果你想让每个队友在自己的分割窗格中,请参阅 [选择显示模式](#choose-a-display-mode)。95如果你想让每个队友在自己的分割窗格中,请参阅 [选择显示模式](#choose-a-display-mode)。
88 96
89## 控制你的 agent team97<h2 id="control-your-agent-team">
98 控制你的 agent team
99</h2>
90 100
91用自然语言告诉负责人你想要什么。它根据你的指示处理团队协调、任务分配和委派。101用自然语言告诉负责人你想要什么。它根据你的指示处理团队协调、任务分配和委派。
92 102
93### 选择显示模式103<h3 id="choose-a-display-mode">
104 选择显示模式
105</h3>
94 106
95Agent teams 支持两种显示模式:107Agent teams 支持两种显示模式:
96 108
101 `tmux` 在某些操作系统上有已知限制,传统上在 macOS 上效果最好。在 iTerm2 中使用 `tmux -CC` 是进入 `tmux` 的建议入口点。113 `tmux` 在某些操作系统上有已知限制,传统上在 macOS 上效果最好。在 iTerm2 中使用 `tmux -CC` 是进入 `tmux` 的建议入口点。
102</Note>114</Note>
103 115
104默认值是 `"auto"`,如果你已经在 tmux 会话中运行,则使用分割窗格,否则使用 in-process。`"tmux"` 设置启用分割窗格模式,并根据你的终端自动检测是使用 tmux 还是 iTerm2。要覆盖,在 `~/.claude/settings.json` 中设置 [`teammateMode`](/zh-CN/settings#available-settings):116默认值是 `"auto"`,如果你已经在 tmux 会话中运行或你的终端是 iTerm2,则使用分割窗格,否则使用 in-process。`"tmux"` 设置启用分割窗格模式,并根据你的终端自动检测是使用 tmux 还是 iTerm2。要覆盖,在 `~/.claude/settings.json` 中设置 [`teammateMode`](/zh-CN/settings#available-settings):
105 117
106```json theme={null}118```json theme={null}
107{119{
120* **tmux**:通过你的系统包管理器安装。有关特定于平台的说明,请参阅 [tmux wiki](https://github.com/tmux/tmux/wiki/Installing)。132* **tmux**:通过你的系统包管理器安装。有关特定于平台的说明,请参阅 [tmux wiki](https://github.com/tmux/tmux/wiki/Installing)。
121* **iTerm2**:安装 [`it2` CLI](https://github.com/mkusaka/it2),然后在 **iTerm2 → Settings → General → Magic → Enable Python API** 中启用 Python API。133* **iTerm2**:安装 [`it2` CLI](https://github.com/mkusaka/it2),然后在 **iTerm2 → Settings → General → Magic → Enable Python API** 中启用 Python API。
122 134
123### 指定队友和模型135<h3 id="specify-teammates-and-models">
136 指定队友和模型
137</h3>
124 138
125Claude 根据你的任务决定要生成的队友数量,或者你可以指定你想要的确切内容:139Claude 根据你的任务决定要生成的队友数量,或者你可以指定你想要的确切内容:
126 140
127```text theme={null}141```text theme={null}
128Create a team with 4 teammates to refactor these modules in parallel.142Spawn 4 teammates to refactor these modules in parallel. Use Sonnet for
129Use Sonnet for each teammate.143each teammate.
130```144```
131 145
132队友默认不继承负责人的 `/model` 选择。要更改在提示未指定模型时使用的模型,在 `/config` 中设置**默认队友模型**。选择\*\*默认(负责人的模型)\*\*以让队友遵循负责人的当前模型。146队友默认不继承负责人的 `/model` 选择。要更改在提示未指定模型时使用的模型,在 `/config` 中设置**默认队友模型**。选择\*\*默认(负责人的模型)\*\*以让队友遵循负责人的当前模型。
133 147
134### 要求队友的计划批准148<h3 id="require-plan-approval-for-teammates">
149 要求队友的计划批准
150</h3>
135 151
136对于复杂或有风险的任务,你可以要求队友在实施前进行规划。队友在只读计划模式下工作,直到负责人批准他们的方法:152对于复杂或有风险的任务,你可以要求队友在实施前进行规划。队友在只读计划模式下工作,直到负责人批准他们的方法:
137 153
144 160
145负责人自主做出批准决定。要影响负责人的判断,在你的提示中给出标准,例如"仅批准包括测试覆盖的计划"或"拒绝修改数据库架构的计划"。161负责人自主做出批准决定。要影响负责人的判断,在你的提示中给出标准,例如"仅批准包括测试覆盖的计划"或"拒绝修改数据库架构的计划"。
146 162
147### 直接与队友交谈163<h3 id="talk-to-teammates-directly">
164 直接与队友交谈
165</h3>
148 166
149每个队友都是一个完整的、独立的 Claude Code 会话。你可以直接向任何队友发送消息,以提供额外的指示、提出后续问题或改变他们的方法。167每个队友都是一个完整的、独立的 Claude Code 会话。你可以直接向任何队友发送消息,以提供额外的指示、提出后续问题或改变他们的方法。
150 168
151* **In-process 模式**:使用 Shift+Down 循环浏览队友,然后输入向他们发送消息。按 Enter 查看队友的会话,然后按 Escape 中断他们的当前轮次。按 Ctrl+T 切换任务列表。169* **In-process 模式**:使用 Shift+Down 循环浏览队友,然后输入向他们发送消息。按 Enter 查看队友的会话,然后按 Escape 中断他们的当前轮次。按 Ctrl+T 切换任务列表。
152* **Split-pane 模式**:点击队友的窗格以直接与他们的会话交互。每个队友都有自己终端的完整视图。170* **Split-pane 模式**:点击队友的窗格以直接与他们的会话交互。每个队友都有自己终端的完整视图。
153 171
154### 分配和认领任务172<h3 id="assign-and-claim-tasks">
173 分配和认领任务
174</h3>
155 175
156共享任务列表协调整个团队的工作。负责人创建任务,队友完成它们。任务有三种状态:待处理、进行中和已完成。任务也可以依赖其他任务:具有未解决依赖关系的待处理任务在这些依赖关系完成之前无法被认领。176共享任务列表协调整个团队的工作。负责人创建任务,队友完成它们。任务有三种状态:待处理、进行中和已完成。任务也可以依赖其他任务:具有未解决依赖关系的待处理任务在这些依赖关系完成之前无法被认领。
157 177
162 182
163任务认领使用文件锁定来防止多个队友同时尝试认领同一任务时的竞态条件。183任务认领使用文件锁定来防止多个队友同时尝试认领同一任务时的竞态条件。
164 184
165### 关闭队友185<h3 id="shut-down-teammates">
186 关闭队友
187</h3>
166 188
167要优雅地结束队友的会话:189要优雅地结束队友的会话,按名称引用它。例如,对于一个名为 researcher 的队友:
168 190
169```text theme={null}191```text theme={null}
170Ask the researcher teammate to shut down192Ask the researcher teammate to shut down
171```193```
172 194
173负责人发送关闭请求。队友可以批准并优雅地退出,或拒绝并提供解释。195负责人发送关闭请求。队友可以批准,优雅地退出,或拒绝并提供解释。
174 196
175### 清理团队197团队的共享目录在会话结束时自动清理,因此没有单独的清理步骤。请参阅[架构](#architecture)了解哪些目录被删除以及哪些目录为恢复的会话保留。
176 198
177完成后,要求负责人清理:199<h3 id="enforce-quality-gates-with-hooks">
178 200 使用 hooks 强制质量门
179```text theme={null}201</h3>
180Clean up the team
181```
182
183这会删除共享的团队资源。当负责人运行清理时,它会检查活跃的队友,如果仍有任何队友在运行,则失败,所以先关闭他们。
184
185<Warning>
186 始终使用负责人进行清理。队友不应该运行清理,因为他们的团队 context 可能无法正确解析,可能会使资源处于不一致的状态。
187</Warning>
188
189### 使用 hooks 强制质量门
190 202
191使用 [hooks](/zh-CN/hooks) 在队友完成工作或任务创建或完成时强制执行规则:203使用 [hooks](/zh-CN/hooks) 在队友完成工作或任务创建或完成时强制执行规则:
192 204
194* [`TaskCreated`](/zh-CN/hooks#taskcreated):当任务被创建时运行。以代码 2 退出以防止创建并发送反馈。206* [`TaskCreated`](/zh-CN/hooks#taskcreated):当任务被创建时运行。以代码 2 退出以防止创建并发送反馈。
195* [`TaskCompleted`](/zh-CN/hooks#taskcompleted):当任务被标记为完成时运行。以代码 2 退出以防止完成并发送反馈。207* [`TaskCompleted`](/zh-CN/hooks#taskcompleted):当任务被标记为完成时运行。以代码 2 退出以防止完成并发送反馈。
196 208
197## Agent teams 如何工作209<h2 id="how-agent-teams-work">
210 Agent teams 如何工作
211</h2>
198 212
199本部分涵盖 agent teams 背后的架构和机制。如果你想开始使用它们,请参阅上面的 [控制你的 agent team](#control-your-agent-team)。213本部分涵盖 agent teams 背后的架构和机制。如果你想开始使用它们,请参阅上面的 [控制你的 agent team](#control-your-agent-team)。
200 214
201### Claude 如何启动 agent teams215<h3 id="how-claude-starts-agent-teams">
216 Claude 如何启动 agent teams
217</h3>
202 218
203Agent teams 有两种启动方式:219当第一个队友被生成时,agent team 就形成了,主会话充当负责人。队友有两种方式被生成:
204 220
205* **你请求一个团队**:给 Claude 一个受益于并行工作的任务,并明确要求一个 agent team。Claude 根据你的指示创建一个。221* **你请求队友**:给 Claude 一个受益于并行工作的任务,并明确要求队友。Claude 根据你的指示生成他们。
206* **Claude 提议一个团队**:如果 Claude 确定你的任务将受益于并行工作,它可能会建议创建一个团队。你在它继续之前确认。222* **Claude 提议队友**:如果 Claude 确定你的任务将受益于并行工作,它可能会建议生成队友。你在它继续之前确认。
207 223
208在这两种情况下,你都保持控制。Claude 不会在没有你的批准的情况下创建团队。224在这两种情况下,你都保持控制。Claude 不会在没有你的批准的情况下生成队友。
209 225
210### 架构226<h3 id="architecture">
227 架构
228</h3>
211 229
212Agent team 由以下部分组成:230Agent team 由以下部分组成:
213 231
214| 组件 | 角色 |232| 组件 | 角色 |
215| :------------ | :------------------------------ |233| :------------ | :------------------------- |
216| **Team lead** | 创建团队、生成队友并协调工作的主 Claude Code 会话 |234| **Team lead** | 生成队友并协调工作的主 Claude Code 会话 |
217| **Teammates** | 各自处理分配任务的独立 Claude Code 实例 |235| **Teammates** | 各自处理分配任务的独立 Claude Code 实例 |
218| **Task list** | 队友认领和完成的共享工作项列表 |236| **Task list** | 队友认领和完成的共享工作项列表 |
219| **Mailbox** | 代理之间通信的消息系统 |237| **Mailbox** | 代理之间通信的消息系统 |
222 240
223系统自动管理任务依赖关系。当队友完成其他任务依赖的任务时,被阻止的任务会自动解除阻止。241系统自动管理任务依赖关系。当队友完成其他任务依赖的任务时,被阻止的任务会自动解除阻止。
224 242
225团队和任务存储在本地:243团队和任务存储在本地,名称来自会话派生的名称。名称是 `session-` 后跟会话 ID 的前八个字符:
226 244
227* **Team config**:`~/.claude/teams/{team-name}/config.json`245* **Team config**:`~/.claude/teams/{team-name}/config.json`
228* **Task list**:`~/.claude/tasks/{team-name}/`246* **Task list**:`~/.claude/tasks/{team-name}/`
229 247
230Claude Code 在你创建团队时自动生成这两个,并在队友加入、空闲或离开时更新它们。团队配置保存运行时状态,例如会话 ID 和 tmux 窗格 ID,所以不要手动编辑它或预先编写它:你的更改会在下一次状态更新时被覆盖。248Claude Code 在会话启动时自动生成这两个,并在队友加入、空闲或离开时更新它们。团队配置目录在会话结束时被删除。任务列表目录在本地持久化,永远不会上传,所以恢复的会话会保留它们的任务。保留期由你已经为会话记录控制的相同 [`cleanupPeriodDays`](/zh-CN/settings#available-settings) 管理。
249
250团队配置保存运行时状态,例如会话 ID 和 tmux 窗格 ID,所以不要手动编辑它或预先编写它:你的更改会在下一次状态更新时被覆盖。
231 251
232要定义可重用的队友角色,请改用 [subagent 定义](#use-subagent-definitions-for-teammates)。252要定义可重用的队友角色,请改用 [subagent 定义](#use-subagent-definitions-for-teammates)。
233 253
235 255
236没有项目级别的团队配置等效项。项目目录中的 `.claude/teams/teams.json` 之类的文件不被识别为配置;Claude 将其视为普通文件。256没有项目级别的团队配置等效项。项目目录中的 `.claude/teams/teams.json` 之类的文件不被识别为配置;Claude 将其视为普通文件。
237 257
238### 为队友使用 subagent 定义258<h3 id="use-subagent-definitions-for-teammates">
259 为队友使用 subagent 定义
260</h3>
239 261
240生成队友时,你可以引用来自任何 [subagent 范围](/zh-CN/sub-agents#choose-the-subagent-scope) 的 [subagent](/zh-CN/sub-agents) 类型:项目、用户、插件或 CLI 定义。这让你定义一个角色一次,例如安全审查员或测试运行器,并将其同时重用为委派的 subagent 和 agent team 队友。262生成队友时,你可以引用来自任何 [subagent 范围](/zh-CN/sub-agents#choose-the-subagent-scope) 的 [subagent](/zh-CN/sub-agents) 类型:项目、用户、插件或 CLI 定义。这让你定义一个角色一次,例如安全审查员或测试运行器,并将其同时重用为委派的 subagent 和 agent team 队友。
241 263
251 subagent 定义中的 `skills` 和 `mcpServers` frontmatter 字段在该定义作为队友运行时不被应用。队友从你的项目和用户设置加载 skills 和 MCP servers,与常规会话相同。273 subagent 定义中的 `skills` 和 `mcpServers` frontmatter 字段在该定义作为队友运行时不被应用。队友从你的项目和用户设置加载 skills 和 MCP servers,与常规会话相同。
252</Note>274</Note>
253 275
254### 权限276<h3 id="permissions">
277 权限
278</h3>
255 279
256队友从负责人的权限设置开始。如果负责人使用 `--dangerously-skip-permissions` 运行,所有队友也会这样做。生成后,你可以更改个别队友模式,但在生成时无法设置每个队友的模式。280队友从负责人的权限设置开始。如果负责人使用 `--dangerously-skip-permissions` 运行,所有队友也会这样做。生成后,你可以更改个别队友模式,但在生成时无法设置每个队友的模式。
257 281
258### Context 和通信282<h3 id="context-and-communication">
283 Context 和通信
284</h3>
259 285
260每个队友都有自己的 context window。生成时,队友加载与常规会话相同的项目 context:CLAUDE.md、MCP servers 和 skills。它还接收来自负责人的生成提示。负责人的对话历史不会继承。286每个队友都有自己的 context window。生成时,队友加载与常规会话相同的项目 context:CLAUDE.md、MCP servers 和 skills。它还接收来自负责人的生成提示。负责人的对话历史不会继承。
261 287
268 294
269负责人在生成队友时为其分配一个名称,任何队友都可以按该名称向任何其他队友发送消息。要获得可预测的名称,你可以在后续提示中引用,在你的生成指令中告诉负责人如何称呼每个队友。295负责人在生成队友时为其分配一个名称,任何队友都可以按该名称向任何其他队友发送消息。要获得可预测的名称,你可以在后续提示中引用,在你的生成指令中告诉负责人如何称呼每个队友。
270 296
271### 令牌使用297<h3 id="token-usage">
298 令牌使用
299</h3>
272 300
273Agent teams 使用的令牌数量明显多于单个会话。每个队友都有自己的 context window,令牌使用量随活跃队友数量而增加。对于研究、审查和新功能工作,额外的令牌通常是值得的。对于日常任务,单个会话更具成本效益。有关使用指导,请参阅 [agent team 令牌成本](/zh-CN/costs#agent-team-token-costs)。301Agent teams 使用的令牌数量明显多于单个会话。每个队友都有自己的 context window,令牌使用量随活跃队友数量而增加。对于研究、审查和新功能工作,额外的令牌通常是值得的。对于日常任务,单个会话更具成本效益。有关使用指导,请参阅 [agent team 令牌成本](/zh-CN/costs#agent-team-token-costs)。
274 302
275## 用例示例303<h2 id="use-case-examples">
304 用例示例
305</h2>
276 306
277这些示例展示了 agent teams 如何处理并行探索增加价值的任务。307这些示例展示了 agent teams 如何处理并行探索增加价值的任务。
278 308
279### 运行并行代码审查309<h3 id="run-a-parallel-code-review">
310 运行并行代码审查
311</h3>
280 312
281单个审查者往往一次只关注一种类型的问题。将审查标准分解为独立的领域意味着安全性、性能和测试覆盖都同时获得彻底的关注。提示为每个队友分配一个不同的视角,以便他们不重叠:313单个审查者往往一次只关注一种类型的问题。将审查标准分解为独立的领域意味着安全性、性能和测试覆盖都同时获得彻底的关注。提示为每个队友分配一个不同的视角,以便他们不重叠:
282 314
283```text theme={null}315```text theme={null}
284Create an agent team to review PR #142. Spawn three reviewers:316Spawn three teammates to review PR #142:
285- One focused on security implications317- One focused on security implications
286- One checking performance impact318- One checking performance impact
287- One validating test coverage319- One validating test coverage
290 322
291每个审查者从同一个 PR 工作,但应用不同的过滤器。负责人在他们完成后综合所有三个的发现。323每个审查者从同一个 PR 工作,但应用不同的过滤器。负责人在他们完成后综合所有三个的发现。
292 324
293### 使用竞争假设进行调查325<h3 id="investigate-with-competing-hypotheses">
326 使用竞争假设进行调查
327</h3>
294 328
295当根本原因不清楚时,单个代理往往会找到一个看似合理的解释并停止寻找。提示通过让队友明确对抗来对抗这一点:每个队友的工作不仅是调查自己的理论,还要质疑其他队友的理论。329当根本原因不清楚时,单个代理往往会找到一个看似合理的解释并停止寻找。提示通过让队友明确对抗来对抗这一点:每个队友的工作不仅是调查自己的理论,还要质疑其他队友的理论。
296 330
305 339
306有多个独立的调查者积极尝试相互反驳,存活下来的理论更有可能是实际的根本原因。340有多个独立的调查者积极尝试相互反驳,存活下来的理论更有可能是实际的根本原因。
307 341
308## 最佳实践342<h2 id="best-practices">
343 最佳实践
344</h2>
309 345
310### 给队友足够的 context346<h3 id="give-teammates-enough-context">
347 给队友足够的 context
348</h3>
311 349
312队友自动加载项目 context,包括 CLAUDE.md、MCP servers 和 skills,但他们不继承负责人的对话历史。有关详细信息,请参阅 [Context 和通信](#context-and-communication)。在生成提示中包含特定于任务的详细信息:350队友自动加载项目 context,包括 CLAUDE.md、MCP servers 和 skills,但他们不继承负责人的对话历史。有关详细信息,请参阅 [Context 和通信](#context-and-communication)。在生成提示中包含特定于任务的详细信息:
313 351
318httpOnly cookies. Report any issues with severity ratings."356httpOnly cookies. Report any issues with severity ratings."
319```357```
320 358
321### 选择适当的团队规模359<h3 id="choose-an-appropriate-team-size">
360 选择适当的团队规模
361</h3>
322 362
323队友数量没有硬限制,但实际限制适用:363队友数量没有硬限制,但实际限制适用:
324 364
332 372
333仅当工作真正受益于队友同时工作时才扩展。三个专注的队友通常胜过五个分散的队友。373仅当工作真正受益于队友同时工作时才扩展。三个专注的队友通常胜过五个分散的队友。
334 374
335### 适当调整任务大小375<h3 id="size-tasks-appropriately">
376 适当调整任务大小
377</h3>
336 378
337* **太小**:协调开销超过收益379* **太小**:协调开销超过收益
338* **太大**:队友长时间工作而不进行检查,增加浪费努力的风险380* **太大**:队友长时间工作而不进行检查,增加浪费努力的风险
342 负责人将工作分解为任务并自动分配给队友。如果它没有创建足够的任务,要求它将工作分成更小的部分。每个队友有 5-6 个任务可以让每个人保持生产力,并让负责人在有人卡住时重新分配工作。384 负责人将工作分解为任务并自动分配给队友。如果它没有创建足够的任务,要求它将工作分成更小的部分。每个队友有 5-6 个任务可以让每个人保持生产力,并让负责人在有人卡住时重新分配工作。
343</Tip>385</Tip>
344 386
345### 等待队友完成387<h3 id="wait-for-teammates-to-finish">
388 等待队友完成
389</h3>
346 390
347有时负责人开始自己实施任务,而不是等待队友。如果你注意到这一点:391有时负责人开始自己实施任务,而不是等待队友。如果你注意到这一点:
348 392
350Wait for your teammates to complete their tasks before proceeding394Wait for your teammates to complete their tasks before proceeding
351```395```
352 396
353### 从研究和审查开始397<h3 id="start-with-research-and-review">
398 从研究和审查开始
399</h3>
354 400
355如果你是 agent teams 的新手,从具有明确边界且不需要编写代码的任务开始:审查 PR、研究库或调查错误。这些任务展示了并行探索的价值,而不会带来并行实施所带来的协调挑战。401如果你是 agent teams 的新手,从具有明确边界且不需要编写代码的任务开始:审查 PR、研究库或调查错误。这些任务展示了并行探索的价值,而不会带来并行实施所带来的协调挑战。
356 402
357### 避免文件冲突403<h3 id="avoid-file-conflicts">
404 避免文件冲突
405</h3>
358 406
359两个队友编辑同一文件会导致覆盖。分解工作,使每个队友拥有不同的文件集。407两个队友编辑同一文件会导致覆盖。分解工作,使每个队友拥有不同的文件集。
360 408
361### 监控和指导409<h3 id="monitor-and-steer">
410 监控和指导
411</h3>
362 412
363检查队友的进度,重定向不起作用的方法,并在发现时综合发现。让团队无人值守运行太长时间会增加浪费努力的风险。413检查队友的进度,重定向不起作用的方法,并在发现时综合发现。让团队无人值守运行太长时间会增加浪费努力的风险。
364 414
365## 故障排除415<h2 id="troubleshooting">
416 故障排除
417</h2>
366 418
367### 队友未出现419<h3 id="teammates-not-appearing">
420 队友未出现
421</h3>
368 422
369如果在你要求 Claude 创建团队后队友没有出现:423如果在你要求 Claude 创建队友后队友没有出现:
370 424
371* 在 in-process 模式中,队友可能已经在运行但不可见。按 Shift+Down 循环浏览活跃的队友。425* 在 in-process 模式中,队友可能已经在运行但不可见。按 Shift+Down 循环浏览活跃的队友。
372* 检查你给 Claude 的任务是否足够复杂以保证一个团队。Claude 根据任务决定是否生成队友。426* 检查你给 Claude 的任务是否足够复杂以保证需要队友。Claude 根据任务决定是否生成队友。
373* 如果你明确要求分割窗格,请确保 tmux 已安装并在你的 PATH 中可用:427* 如果你明确要求分割窗格,请确保 tmux 已安装并在你的 PATH 中可用:
374 ```bash theme={null}428 ```bash theme={null}
375 which tmux429 which tmux
376 ```430 ```
377* 对于 iTerm2,验证 `it2` CLI 已安装,并在 iTerm2 偏好设置中启用了 Python API。431* 对于 iTerm2,验证 `it2` CLI 已安装,并在 iTerm2 偏好设置中启用了 Python API。
378 432
379### 过多权限提示433<h3 id="too-many-permission-prompts">
434 过多权限提示
435</h3>
380 436
381队友权限请求冒泡到负责人,这可能会造成摩擦。在生成队友之前,在你的 [权限设置](/zh-CN/permissions) 中预批准常见操作,以减少中断。437队友权限请求冒泡到负责人,这可能会造成摩擦。在生成队友之前,在你的 [权限设置](/zh-CN/permissions) 中预批准常见操作,以减少中断。
382 438
383### 队友在错误后停止439<h3 id="teammates-stopping-on-errors">
440 队友在错误后停止
441</h3>
384 442
385队友可能在遇到错误后停止,而不是恢复。在 in-process 模式中使用 Shift+Down 或在分割模式中点击窗格来检查他们的输出,然后:443队友可能在遇到错误后停止,而不是恢复。在 in-process 模式中使用 Shift+Down 或在分割模式中点击窗格来检查他们的输出,然后:
386 444
387* 直接给他们额外的指示445* 直接给他们额外的指示
388* 生成一个替代队友来继续工作446* 生成一个替代队友来继续工作
389 447
390### 负责人在工作完成前关闭448<h3 id="lead-shuts-down-before-work-is-done">
449 负责人在工作完成前关闭
450</h3>
391 451
392负责人可能会在所有任务实际完成之前决定团队已完成。如果发生这种情况,告诉它继续。你也可以告诉负责人在继续之前等待队友完成,如果它开始做工作而不是委派。452负责人可能会在所有任务实际完成之前决定团队已完成。如果发生这种情况,告诉它继续。你也可以告诉负责人在继续之前等待队友完成,如果它开始做工作而不是委派。
393 453
394### 孤立的 tmux 会话454<h3 id="orphaned-tmux-sessions">
455 孤立的 tmux 会话
456</h3>
395 457
396如果 tmux 会话在团队结束后仍然存在,它可能没有被完全清理。列出会话并杀死由团队创建的会话:458如果 tmux 会话在 Claude Code 会话结束后仍然存在,它可能没有被完全清理。列出会话并杀死由团队创建的会话:
397 459
398```bash theme={null}460```bash theme={null}
399tmux ls461tmux ls
400tmux kill-session -t <session-name>462tmux kill-session -t <session-name>
401```463```
402 464
403## 限制465<h2 id="limitations">
466 限制
467</h2>
404 468
405Agent teams 是实验性的。需要注意的当前限制:469Agent teams 是实验性的。需要注意的当前限制:
406 470
407* **In-process 队友没有会话恢复**:`/resume` 和 `/rewind` 不会恢复 in-process 队友。恢复会话后,负责人可能会尝试向不再存在的队友发送消息。如果发生这种情况,告诉负责人生成新队友。471* **In-process 队友没有会话恢复**:`/resume` 和 `/rewind` 不会恢复 in-process 队友。恢复会话后,负责人可能会尝试向不再存在的队友发送消息。如果发生这种情况,告诉负责人生成新队友。
408* **任务状态可能滞后**:队友有时无法将任务标记为已完成,这会阻止依赖任务。如果任务似乎卡住,检查工作是否实际完成,并手动更新任务状态或告诉负责人推动队友。472* **任务状态可能滞后**:队友有时无法将任务标记为已完成,这会阻止依赖任务。如果任务似乎卡住,检查工作是否实际完成,并手动更新任务状态或告诉负责人推动队友。
409* **关闭可能很慢**:队友在关闭前完成他们的当前请求或工具调用,这可能需要时间。473* **关闭可能很慢**:队友在关闭前完成他们的当前请求或工具调用,这可能需要时间。
410* **每个会话一个团队**:负责人一次只能管理一个团队。在启动新团队之前清理当前团队。474* **每个会话一个团队**:一个会话恰好有一个团队,作用域限于该会话。你无法创建额外的命名团队或在会话间共享团队。
411* **没有嵌套团队**:队友无法生成自己的团队或队友。只有负责人可以管理团队。475* **没有嵌套团队**:队友无法生成自己的队友。只有负责人可以管理团队。
412* **负责人是固定的**:创建团队的会话在其生命周期内是负责人。你无法将队友提升为负责人或转移领导权。476* **负责人是固定的**:主会话在其生命周期内是其团队的负责人。你无法将队友提升为负责人或转移领导权。
413* **权限在生成时设置**:所有队友从负责人的权限模式开始。你可以在生成后更改个别队友模式,但在生成时无法设置每个队友的模式。477* **权限在生成时设置**:所有队友从负责人的权限模式开始。你可以在生成后更改个别队友模式,但在生成时无法设置每个队友的模式。
414* **分割窗格需要 tmux 或 iTerm2**:默认 in-process 模式在任何终端中工作。VS Code 的集成终端、Windows Terminal 或 Ghostty 不支持分割窗格模式。478* **分割窗格需要 tmux 或 iTerm2**:默认 in-process 模式在任何终端中工作。VS Code 的集成终端、Windows Terminal 或 Ghostty 不支持分割窗格模式。
415 479
417 **`CLAUDE.md` 正常工作**:队友从他们的工作目录读取 `CLAUDE.md` 文件。使用这个为所有队友提供项目特定的指导。481 **`CLAUDE.md` 正常工作**:队友从他们的工作目录读取 `CLAUDE.md` 文件。使用这个为所有队友提供项目特定的指导。
418</Tip>482</Tip>
419 483
420## 后续步骤484<h2 id="next-steps">
485 后续步骤
486</h2>
421 487
422探索用于并行工作和委派的相关方法:488探索用于并行工作和委派的相关方法:
423 489