第六节:Agent Swarms
多代理团队协作

作者:小学子 📚 | 日期:2026年4月2日 | 第二阶段 · 模块二


# 第二阶段 · 模块二 · 第六节:Agent Swarms 多代理团队

核心问题

什么是 Agent Swarms?Claude Code 如何实现多代理团队协作?TeamCreateTool 的工作原理是什么?代理间如何通信和协调?


◇ 本节位置


        Claude Code 全局架构
        
        ┌─────────────────────────────────────────────────────────────────────┐
        │  工具层(tools/)                                                   │
        │                                                                      │
        │  Agent Swarms ← 本节                                                │
        │  ├── TeamCreateTool                                                │
        │  ├── 团队管理                                                       │
        │  └── 代理通信                                                       │
        └─────────────────────────────────────────────────────────────────────┘
        


一、Agent Swarms 概述

1.1 什么是 Agent Swarms

源码位置:`src/utils/swarm/`

Agent Swarms 是 Claude Code 的多代理协作框架,允许多个代理(Agent)组成团队,协同完成复杂任务。


        ┌─────────────────────────────────────────────────────────────────────┐
        │  Agent Swarm 多代理团队                                               │
        │                                                                      │
        │  Team Lead(团队领导)                                                │
        │  ├─ Member A ──> 任务 1                                             │
        │  ├─ Member B ──> 任务 2                                             │
        │  └─ Member C ──> 任务 3                                             │
        │                                                                      │
        │  通过 SendMessage 通信                                               │
        └─────────────────────────────────────────────────────────────────────┘
        

1.2 核心概念


        ┌─────────────────────────────────────────────────────────────────────┐
        │  Agent Swarm 核心概念                                                 │
        │                                                                      │
        │  Team Lead:团队领导者,负责协调和分配任务                           │
        │  Team Member:团队成员,负责执行具体任务                             │
        │  Communication:代理间通过消息传递通信                               │
        │  Shared Context:共享上下文,保持信息同步                            │
        └─────────────────────────────────────────────────────────────────────┘
        

1.3 五问分析

问 1:Agent Swarms 和子代理有什么区别?


        // 子代理:
        // - 主从关系
        // - 主代理控制子代理
        // - 任务分配简单
        
        // Agent Swarms:
        // - 团队协作
        // - 代理间平等通信
        // - 支持复杂协调
        


二、TeamCreateTool

2.1 工具定义

源码位置:`src/tools/TeamCreateTool/TeamCreateTool.ts`


        export const TeamCreateTool = buildTool({
          name: TEAM_CREATE_TOOL_NAME,
          searchHint: 'create a multi-agent swarm team',
          maxResultSizeChars: 100_000,
          shouldDefer: true,
        
          inputSchema: z.strictObject({
            team_name: z.string().describe('团队名称'),
            description: z.string().optional().describe('团队描述'),
            agent_type: z.string().optional().describe('团队领导类型'),
          }),
        })
        

2.2 团队创建流程


        // 1. 生成唯一团队名称
        function generateUniqueTeamName(providedName: string): string {
          if (!readTeamFile(providedName)) {
            return providedName  // 团队不存在,使用提供的名称
          }
          return generateWordSlug()  // 生成新的唯一名称
        }
        

2.3 团队配置


        // 团队配置
        
        interface TeamConfig {
          teamName: string
          teamLead: AgentDefinition
          members: AgentDefinition[]
          sharedContext: SharedContext
          communication: CommunicationConfig
        }
        


三、团队常量与环境变量

3.1 核心常量

源码位置:`src/utils/swarm/constants.ts`


        export const TEAM_LEAD_NAME = 'team-lead'
        export const SWARM_SESSION_NAME = 'claude-swarm'
        export const SWARM_VIEW_WINDOW_NAME = 'swarm-view'
        export const TMUX_COMMAND = 'tmux'
        export const HIDDEN_SESSION_NAME = 'claude-hidden'
        
        // Swarm Socket 名称(无 tmux 时使用)
        export function getSwarmSocketName(): string {
          return `claude-swarm-${process.pid}`
        }
        

3.2 环境变量


        // 团队成员命令环境变量
        export const TEAMMATE_COMMAND_ENV_VAR = 'CLAUDE_CODE_TEAMMATE_COMMAND'
        // 默认使用当前 Claude 二进制文件
        
        // 团队成员颜色环境变量
        export const TEAMMATE_COLOR_ENV_VAR = 'CLAUDE_CODE_AGENT_COLOR'
        // 用于彩色输出和面板标识
        
        // 计划模式环境变量
        export const PLAN_MODE_REQUIRED_ENV_VAR = 'CLAUDE_CODE_PLAN_MODE_REQUIRED'
        // 设置为 'true' 时要求成员进入计划模式并获得批准后才能写代码
        

3.3 Tmux 会话管理


        // Tmux 用于管理多个代理会话
        
        // 创建团队会话
        tmux new-session -s 'claude-swarm-team1'
        
        // 创建成员窗口
        tmux new-window -t 'claude-swarm-team1' -n 'member-a'
        tmux new-window -t 'claude-swarm-team1' -n 'member-b'
        
        // 发送命令
        tmux send-keys -t 'claude-swarm-team1:member-a' 'claude --agent' Enter
        


四、代理通信

4.1 消息类型


        // 团队内消息
        
        type TeamMessage =
          | { type: 'task'; to: string; content: string }  // 任务分配
          | { type: 'result'; from: string; content: string }  // 结果返回
          | { type: 'status'; from: string; status: 'idle' | 'busy' }  // 状态更新
          | { type: 'error'; from: string; error: string }  // 错误报告
        

4.2 消息传递


        // SendMessage 实现
        
        async function sendMessage(
          to: string,
          content: string
        ): Promise<void> {
          // 1. 序列化消息
          const message = JSON.stringify({
            type: 'message',
            from: currentAgentId,
            to,
            content,
            timestamp: Date.now()
          })
          
          // 2. 发送到目标代理
          await tmux.sendKeys(to, message)
        }
        

4.3 五问分析

问 1:代理间如何共享上下文?


        // 共享上下文方式:
        
        // 1. 共享文件
        // - 通过文件系统共享数据
        // - 定期同步
        
        // 2. 消息广播
        // - 重要信息广播给所有代理
        // - 保持信息一致
        
        // 3. 共享存储
        // - Redis 等 KV 存储
        // - 高效同步
        


五、团队领导 (Team Lead)

5.1 Team Lead 职责


        // Team Lead 职责
        
        const teamLeadPrompt = `你是团队领导,负责:
        1. 分析任务需求
        2. 分解任务
        3. 分配给团队成员
        4. 协调进度
        5. 汇总结果
        `
        

5.2 任务分配策略


        // 任务分配算法
        
        function assignTasks(tasks: Task[], members: Agent[]): Map<Agent, Task[]> {
          // 1. 评估任务复杂度
          // 2. 评估成员能力
          // 3. 考虑负载均衡
          // 4. 分配任务
        }
        


六、团队视图

6.1 Swarm View 窗口

源码位置:`src/utils/swarm/swarmView.ts`


        // 团队视图
        
        function renderSwarmView(team: Team): HTMLElement {
          return (
            <div className="swarm-view">
              <TeamHeader team={team} />
              <MemberList members={team.members} />
              <TaskBoard tasks={team.tasks} />
              <ActivityLog logs={team.activityLogs} />
            </div>
          )
        }
        

6.2 实时更新


        // 实时更新团队状态
        
        // 通过 tmux 监控所有成员窗口
        // 实时收集输出
        // 更新视图
        


七、实战应用

7.1 创建分析团队


        // 示例:创建代码分析团队
        
        const team = await createTeam({
          teamName: 'code-analysis',
          description: '代码分析团队',
          members: [
            { name: 'architect', type: 'architect-agent' },
            { name: 'reviewer', type: 'review-agent' },
            { name: 'doc-writer', type: 'docs-agent' }
          ]
        })
        
        // Team Lead 分析后分配任务
        

7.2 创建开发团队


        // 示例:创建开发团队
        
        const devTeam = await createTeam({
          teamName: 'feature-dev',
          description: '功能开发团队',
          members: [
            { name: 'frontend', type: 'frontend-agent' },
            { name: 'backend', type: 'backend-agent' },
            { name: 'tester', type: 'qa-agent' }
          ]
        })
        


八、思考题

思考题 1:Agent Swarms 适合哪些场景?

答案


        // 适用场景:
        
        // 1. 复杂项目分析
        // - 多角度分析
        // - 专业分工
        
        // 2. 大型代码重构
        // - 前端/后端分离
        // - 测试同步
        
        // 3. 多文档处理
        // - 并行处理多个文件
        // - 汇总结果
        
        // 不适合:
        
        // 1. 简单任务
        // - 开销大于收益
        
        // 2. 实时交互
        // - 延迟太高
        


思考题 2:如何避免团队协调问题?

答案


        // 协调策略:
        
        // 1. 清晰的角色定义
        // - 每个成员职责明确
        // - 避免重复工作
        
        // 2. 有效的通信协议
        // - 消息格式统一
        // - 响应时间约定
        
        // 3. 冲突解决机制
        // - Team Lead 裁决
        // - 优先级策略
        



思考题 4:团队协作中的冲突如何处理?

答案


        // 冲突处理策略:
        
        // 1. Team Lead 裁决
        // - Team Lead 拥有最终决策权
        // - 其他成员服从协调
        
        // 2. 优先级队列
        // - 高优先级任务优先执行
        // - 低优先级任务等待
        
        // 3. 资源竞争
        // - 使用锁机制协调
        // - 避免多个成员同时修改同一文件
        
        // 4. 消息优先级
        // - 紧急消息优先处理
        // - 使用消息队列实现
        


思考题 5:Tmux 会话管理的优势是什么?

答案


        // Tmux 优势:
        
        // 1. 持久化
        // - 会话不依赖终端连接
        // - 网络断开不会终止任务
        
        // 2. 多窗口
        // - 一个会话支持多个窗口
        // - 方便管理多个成员
        
        // 3. 会话共享
        // - 多个用户可以连接同一会话
        // - 支持协作
        
        // 4. 资源控制
        // - 可以限制资源使用
        // - 避免某个成员耗尽资源
        

九、延伸阅读

资源说明
`src/utils/swarm/constants.ts`团队常量
`src/tools/TeamCreateTool/TeamCreateTool.ts`团队创建工具


十、下节预告

下一节我们将进入 Task 任务系统

- 任务创建和追踪

- 任务输出管理

- 任务依赖