Skip to main content

前言

即使是能力强大的Claude Code单实例,面对需要同时探索多个方向的复杂任务时仍会遇到瓶颈:单线程思维在调查大规模Bug时容易被第一个看似合理的假设所锚定;并行代码审查若只有一个审查者,安全、性能、测试覆盖率等维度会相互干扰;跨前后端、数据库的大型功能开发若由单一实例处理,则难以真正并行推进。

AgentTeams(智能体团队)正是为了应对这类场景而设计的。它允许多个Claude Code实例作为团队协同工作——一个实例担任Team Lead负责协调,其余实例作为Teammate各自独立完成任务,并能直接相互通信,由此实现真正的并行探索与协作。

实验性功能

Agent Teams目前是实验性功能,默认处于关闭状态。已知存在会话恢复、任务协调和关闭行为等方面的问题,使用前请了解相关限制。

什么是AgentTeams

Claude Code AgentTeams

AgentTeamsClaude Code提供的多智能体并行协作机制。它协调多个Claude Code实例共同工作:一个会话担任团队Lead,负责创建团队、生成任务列表、调度Teammate并汇总结果;各Teammate各自运行在独立的上下文窗口中,能够直接相互通信,也可以被用户直接操控,而非只能通过Lead间接交互。

SubAgents相比,AgentTeams最核心的区别在于 Teammate之间可以直接通信并共享任务列表 ,这使得需要相互讨论、共同校验、协作推进的复杂任务成为可能。

AgentTeams解决的问题

单实例的瓶颈

Claude Code单实例在以下场景中存在明显局限:

  • 并行探索受限:调查复杂Bug时,单实例容易被第一个假设锚定,难以同时追踪多条排查路径
  • 审查维度干扰:代码审查需要同时关注安全、性能、测试覆盖等多个维度,单实例会在维度之间切换,注意力分散
  • 跨层开发串行化:涉及前端、后端、数据库多层改动的功能,单实例只能逐层推进,无法真正并行
  • 上下文窗口不足:超大规模任务的中间状态积累会快速消耗上下文

AgentTeams的解法

AgentTeams通过多实例并行和直接通信解决上述问题:

问题AgentTeams的解法
假设锚定多个Teammate分别持有不同假设,相互挑战验证
审查维度干扰每个Teammate专注单一维度,互不干扰
跨层开发串行不同Teammate分别负责不同层,真正并行推进
上下文不足每个Teammate拥有独立上下文,互不影响
协调低效共享任务列表+直接通信,自主协调而非集中管控

设计原理

架构组成

一个AgentTeam由4个核心部分构成:

组件说明
Team LeadClaude Code会话,负责创建团队、调度任务、汇总结果
Teammate独立的Claude Code实例,各自持有独立的上下文窗口,完成分配给自己的任务
Task List共享任务列表,Teammate从中认领任务,状态包括pendingin progresscompleted
Mailbox消息系统,实现智能体之间的直接通信,支持单播和广播

团队配置与任务列表存储在本地:

~/.claude/teams/{team-name}/config.json   # Team配置,包含成员列表
~/.claude/tasks/{team-name}/ # 任务列表

工作流程

与SubAgents的核心区别

AgentTeamsSubAgents都支持并行工作,但在通信模式上有本质差异:

对比维度SubAgentsAgentTeams
上下文独立上下文窗口,结果返回给调用方独立上下文窗口,完全独立
通信方式只能向主智能体报告结果Teammate之间可直接通信
协调机制主智能体管理所有工作共享任务列表+自主协调
最适场景只关心结果的专注任务需要讨论、协作和共同校验的复杂任务
Token消耗较低:结果摘要返回主上下文较高:每个Teammate都是独立的Claude实例

选择建议:当任务工作者不需要相互通信时,选SubAgents;当队友需要共享发现、相互挑战、自主协调时,选AgentTeams

启用AgentTeams

AgentTeams默认关闭,需要通过设置环境变量来启用。推荐通过settings.json配置:

{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}
}

也可以直接设置在Shell环境中:

export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1

创建与使用AgentTeams

创建首个团队

启用AgentTeams后,直接用自然语言描述任务和团队结构,Claude会自动创建团队并调度Teammate

I'm designing a CLI tool that helps developers track TODO comments across
their codebase. Create an agent team to explore this from different angles:
one teammate on UX, one on technical architecture, one playing devil's advocate.

Claude会:

  1. 创建共享任务列表
  2. 按照你描述的角色调度相应数量的Teammate
  3. Lead的终端列出所有Teammate及其当前任务
  4. 完成后尝试自动清理团队

控制团队

选择显示模式

AgentTeams支持两种显示模式:

模式说明前置条件
in-process(进程内模式)所有Teammate运行在主终端内,通过Shift+Down循环切换无需额外配置,任何终端均可用
split-panes(分屏模式)每个Teammate独占一个窗格,可同时看到所有输出需要tmuxiTerm2

默认模式("auto"):若已在tmux会话中则使用分屏模式,否则使用进程内模式。可在settings.json中覆盖:

{
"teammateMode": "in-process"
}

或通过命令行参数指定:

claude --teammate-mode in-process

分屏模式需要安装tmuxiTerm2 it2 CLI

# 安装 tmux(macOS)
brew install tmux

# 验证 tmux 可用
which tmux

指定队友数量和模型

可以明确告诉Lead需要多少Teammate及使用哪款模型:

Create a team with 4 teammates to refactor these modules in parallel.
Use Sonnet for each teammate.

要求计划审批

对于高风险任务,可要求Teammate先制定计划,经Lead审批后再执行:

Spawn an architect teammate to refactor the authentication module.
Require plan approval before they make any changes.

Teammate会在只读计划模式下工作,制定完计划后向Lead发送审批请求。Lead审批通过后Teammate才开始执行。若被拒绝,Teammate修订计划后重新提交。

可以在提示词中给Lead设置审批标准,例如:

Only approve plans that include test coverage.
Reject plans that modify the database schema directly.

直接与Teammate通信

每个Teammate都是完整的独立Claude Code会话,可以直接与任意Teammate交互:

  • 进程内模式Shift+Down循环切换到目标Teammate,直接输入消息发送;按Enter进入Teammate会话,Escape中断当前轮次;Ctrl+T切换任务列表显示
  • 分屏模式:点击对应Teammate的窗格直接交互

任务认领

共享任务列表协调团队工作。任务有三种状态:pendingin progresscompleted,并支持任务依赖(依赖未完成的任务不可认领)。Lead可以显式分配,也可以让Teammate自主认领:

# 显式分配
Tell the backend teammate to take the database migration task.

# 让 Lead 等待 Teammate 完成再继续
Wait for your teammates to complete their tasks before proceeding.

任务认领使用文件锁防止多个Teammate同时认领同一任务时出现竞态条件。

关闭Teammate

优雅关闭某个Teammate

Ask the researcher teammate to shut down.

Teammate可以批准(正常退出)或拒绝(附带原因说明)。

清理团队

工作完成后:

Clean up the team.
清理注意事项

必须通过Lead执行清理。Teammate不应发起清理,其团队上下文解析可能不正确,可能导致资源状态不一致。清理前需确保所有Teammate已关闭,否则Lead会检测到活跃Teammate并拒绝清理。

使用Hooks自动化质量门控

借助Hooks可以在Teammate完工或任务完成时自动执行检查:

Hook事件触发时机典型用途
TeammateIdleTeammate即将进入空闲退出码2可发送反馈并让Teammate继续工作
TaskCompleted任务即将被标记为完成退出码2可阻止完成并发送反馈

使用示例

并行多维度代码审查

单个审查者倾向于一次专注于一类问题。将审查维度拆分给独立的Teammate,可以让安全、性能、测试覆盖率同时得到充分关注:

Create an agent team to review PR #142. Spawn three reviewers:
- One focused on security implications
- One checking performance impact
- One validating test coverage
Have them each review and report findings.

三位审查者从同一PR出发,各自应用不同的审查视角,Lead在全部完成后汇总结论。

竞争假设并行调试

Bug根因不明时,单一智能体容易找到一个看似合理的解释就停止探索。通过让多个Teammate分别持有不同假设并相互挑战,大幅提升找到真实根因的概率:

Users report the app exits after one message instead of staying connected.
Spawn 5 agent teammates to investigate different hypotheses. Have them talk to
each other to try to disprove each other's theories, like a scientific debate.
Update the findings doc with whatever consensus emerges.

这里的排他性设计是关键机制:每个Teammate不仅要验证自己的假设,还要主动攻击其他Teammate的假设。能在"辩论"中存活的理论,更可能就是真实根因。

跨层功能并行开发

前端、后端、数据库层可以分别交给不同的Teammate,真正实现并行推进:

Create an agent team to implement the user notification feature.
Spawn three teammates:
- Frontend teammate: implement the notification UI components in src/components/
- Backend teammate: implement the notification API endpoints in src/api/
- Database teammate: write the migration and data access layer in src/db/
Each teammate should only modify files in their assigned directory.

设置安全审查后置门控

结合Hooks,可以在每个Teammate完成任务后自动触发安全扫描:

# .claude/hooks/teammate-idle.sh
#!/bin/bash
# 在 Teammate 空闲前检查是否有安全问题
if grep -r "eval\|exec\|__import__" src/ --include="*.py" -q; then
echo "Security check failed: dangerous functions detected"
exit 2 # 阻止 Teammate 进入空闲,要求其修复
fi

带计划审批的架构重构

Spawn an architect teammate to refactor the authentication module.
Require plan approval before they make any changes.
Only approve plans that:
- Include unit tests for all modified functions
- Don't change the public API interface
- Include a rollback strategy

最佳实践

团队规模建议

  • 推荐起点3-5Teammate,平衡并行收益与协调开销
  • 任务分配:每个Teammate对应5-6个任务,保持工作饱满度同时避免过度上下文切换
  • 扩大规模的条件:工作可以真正独立并行推进时再考虑增加Teammate数量,3个专注的Teammate通常优于5个分散的

上下文与提示词

Teammate启动时会自动加载项目上下文(CLAUDE.mdMCP ServerSkills),但不会继承Lead的对话历史。在调度提示词中需要包含任务所需的关键背景:

Spawn a security reviewer teammate with the prompt: "Review the authentication
module at src/auth/ for security vulnerabilities. Focus on token handling,
session management, and input validation. The app uses JWT tokens stored in
httpOnly cookies. Report any issues with severity ratings."

任务粒度建议

任务粒度问题
过小协调开销超过并行收益
过大Teammate长时间无检查点,出错代价大
适中能产出清晰可交付物(一个函数、一个测试文件、一份审查报告)

避免文件冲突

两个Teammate同时编辑同一个文件会导致内容覆盖。务必将工作拆分为每个Teammate负责独立的文件集

主动监控与引导

不要让团队长时间无人监管。检查Teammate的进度,对偏离方向的Teammate及时调整,主动汇总阶段性结果,防止方向偏差导致大量无效工作。

常见问题排查

Teammate未出现

  • 进程内模式Teammate可能已在运行但不可见,按Shift+Down切换查看
  • 任务不够复杂Claude根据任务复杂度决定是否调度Teammate,可以明确说"请创建一个团队"
  • 分屏模式:检查tmux是否已安装(which tmux),若用iTerm2则需确认it2 CLI已安装且Python API已在偏好设置中开启

权限请求过多

Teammate的权限请求会汇报给Lead,可能产生大量确认交互。在调度Teammate前,在权限设置中预先批准常见操作。

Teammate遭遇错误后停止

Shift+Down(进程内模式)或点击对应窗格(分屏模式)查看Teammate输出,随后:

  • 直接给Teammate发送额外指令
  • 或调度一个新Teammate来接续工作

Lead在工作完成前关闭

告诉Lead继续工作,或预先在提示词中加入约束:

Wait for your teammates to complete their tasks before proceeding.

tmux会话残留

# 列出所有 tmux 会话
tmux ls

# 删除指定会话
tmux kill-session -t <session-name>

当前限制

限制项说明
无会话恢复(进程内模式)/resume/rewind不会恢复进程内Teammate
任务状态滞后Teammate有时无法自动将任务标记为完成,需手动更新状态
关闭较慢Teammate需完成当前请求或工具调用后才能关闭
每会话仅一个团队Lead同时只能管理一个团队
不支持嵌套团队Teammate不能调度自己的子团队
Lead不可转移创建团队的会话始终是Lead,不能提升TeammateLead
权限在调度时确定Teammate继承Lead的权限模式,调度后可单独修改但无法在调度时差异化设置
分屏模式限制需要tmuxiTerm2,不支持VS Code集成终端、Windows TerminalGhostty

参考资料