---
title: "协调者与蜂群"
description: "两种多 Agent 协作模式：Coordinator 的星型编排和 Swarm 的竞争认领。理解各自的设计权衡和适用场景。"
keywords: ["协调者模式", "蜂群模式", "Agent Swarm", "多 Agent 协作", "任务编排"]
---

## 核心问题

单个 AI Agent 的上下文窗口有限。当任务复杂到需要同时理解多个模块、执行多个并行操作时，单个 Agent 会力不从心。

多 Agent 协作的目标：让多个 AI Agent 分工合作，各自拥有独立的上下文窗口，协同完成复杂任务。

## 两种协作模式

| 维度 | Coordinator Mode | Agent Swarms |
|------|-----------------|--------------|
| **拓扑** | 星型：Coordinator 居中编排 | 星型 + P2P：Teammate 间可直接通信 |
| **角色** | Coordinator 理解决策，Worker 执行 | Team Lead 协调，Teammate 自主认领 |
| **适用** | 需要集中决策的复杂任务 | 并行度高、任务独立的场景 |

两者不是互斥的——可以组合使用，但那属于高级用法。

## Coordinator Mode：先理解，再分配

### 设计哲学

Coordinator Mode 最核心的约束：**Coordinator 必须先理解问题，再分配任务。**

反模式（禁止）：
> "Based on your findings, fix the auth bug" — 把理解的责任推给了 Worker

正确做法：
> "Fix the null pointer in src/auth/validate.ts:42. The user field is undefined when sessions expire but the token remains cached." — Coordinator 自己理解了问题，给出精确指令

**设计考量**：如果 Coordinator 不理解问题就分配任务，Worker 会因为缺乏上下文而做出错误的决策。Coordinator 的理解质量直接决定了 Worker 的执行质量。

### Coordinator 的工具限制

Coordinator 被剥夺了所有"动手"工具——不写代码、不读文件、不执行命令。只保留编排能力：启动 Worker、发送指令、停止走错方向的 Worker。

**设计洞察**：限制工具不是能力的削弱，而是职责的清晰化。Coordinator 专注于"想"，Worker 专注于"做"。如果 Coordinator 也能动手，它很容易跳过编排直接自己干，失去了多 Agent 的意义。

### Scratchpad：跨 Worker 共享知识

Workers 共享一个 Scratchpad 目录，可以自由读写。Worker A 的研究结果可以写入 Scratchpad，Worker B 直接读取，无需通过 Coordinator 中转。

**设计考量**：不是所有知识都需要通过 Coordinator 中转。中间结果（如搜索结果、分析报告）适合 Worker 间直接共享，只有最终结论和决策才需要 Coordinator 参与。

### 通信协议

Worker 完成后，Coordinator 收到结构化通知，包含状态、结果摘要和 token 使用统计。Coordinator 可以向任何 Worker 发送后续指令，实现"分配 → 执行 → 反馈 → 追加"的循环。

## Agent Teams (Swarm)：竞争认领

### 设计哲学

Swarm 基于一个简单的假设：**如果任务列表是共享的、可见的，多个 Agent 会自然地分工合作。**

不需要一个中央调度器——每个 Teammate 看到任务列表，自己决定认领哪个任务。这和人类团队的工作方式一致：站会上大家看到看板，自己选择下一步做什么。

### 核心机制

| 机制 | 说明 |
|------|------|
| **共享任务列表** | 所有 Teammate 看到同一个任务池 |
| **竞争认领** | 第一个锁定任务的 Teammate 获得执行权 |
| **Mailbox 消息** | Teammate 间可直接通信，无需经过 Lead |
| **异常恢复** | Teammate 崩溃后，其未完成任务被自动重置 |

### 竞争认领的并发安全

两个 Teammate 可能同时想认领同一个任务。文件锁保证原子性——第一个写入者获得锁定，第二个收到 `already_claimed` 错误后选择下一个任务。

**设计考量**：竞争是特性而非缺陷。它确保任务自然地分配给最先空闲的 Agent，不需要中央调度。但需要防止"饿死"——如果某个 Agent 总是慢半拍，它可能永远抢不到任务。实践中这个问题不严重，因为 AI Agent 的执行速度差异不大。

### Teammate 的生命周期

Teammate 异常退出时，其未完成任务被自动重置为无主状态。Team Lead 通过共享任务列表或空闲通知感知到变化，可以重新分配或创建新 Teammate。

**设计哲学**：单个 Agent 的崩溃不应该阻塞整个团队。任务系统保证工作不会因为个别 Agent 的失败而丢失。

### 当前限制

- 不支持嵌套团队（Teammate 不能创建子团队）
- 每会话一个团队
- Lead 固定不可更换

## 模式选择指南

| 场景 | 推荐模式 | 原因 |
|------|---------|------|
| "重构认证系统，需要多模块协调" | Coordinator | 需要集中决策，Worker 间有依赖 |
| "修复 10 个独立的 lint 警告" | Swarm | 任务独立，Teammate 可完全并行 |
| "研究方案 A 和方案 B，然后选一个实现" | Coordinator | 先并行研究，再集中决策 |
| "在大仓库中搜索所有 TODO 并分类" | Swarm | 无依赖，各自领任务即可 |

## 接下来

- **子 Agent** — 理解单个子 Agent 的创建和生命周期
- **Worktree 隔离** — 理解多 Agent 的文件系统隔离
- **任务管理** — 理解支撑协作的任务系统
