Team Mode 并行多 Agent 编排
Team Mode 并行多 Agent 编排
学习目标
- 理解 Team Mode 的架构和 12 个 team_* 工具族
- 掌握共享邮箱和文件锁任务列表的设计
- 识别多 Agent 并发编辑冲突的规避策略
前置知识
本章涉及多 Agent 编排的通用原理,建议先阅读:
下文假设你已理解 Orchestrator 模式和并行执行概念,直接聚焦 Oh-My-OpenAgent 的具体实现。
项目实践
Team Mode 架构
Team Mode 将 oh-my-openagent 从「一个 Agent 带子 Agent」转变为真正的多 Agent 系统:
Lead Agent (主编排者) ├── Member 1 (专业 Agent) ──┐ ├── Member 2 (专业 Agent) ──┤── 共享邮箱 (deferred-ack mailbox) ├── Member 3 (专业 Agent) ──┤ ├── ... ┤── 共享任务列表 (文件锁 Claim) └── Member 8 (最大成员数) ──┘启用配置:
{ "team_mode": { "enabled": true, "max_parallel_members": 4, "tmux_visualization": true }}12 个 team_* 工具族
Team Mode 暴露 12 个专用工具,分为三组:
成员管理:
team_create:创建新成员 Agentteam_terminate:终止成员 Agentteam_list:列出所有成员team_status:查询成员状态
通信:
team_send_message:向成员发送消息team_mailbox_send:向共享邮箱发送消息team_mailbox_read:读取邮箱消息
任务管理:
team_task_create:创建任务team_task_claim:声明任务执行权(文件锁)team_task_complete:标记任务完成
可视化:
team_grid:获取 tmux 网格状态team_focus:聚焦到特定成员 pane
共享延迟确认邮箱
成员间通过延迟确认邮箱通信:
- 发送消息后立即返回(非阻塞)
- 接收方在方便时读取和响应
- 避免直接 session 耦合
文件锁任务声明
成员通过文件锁定机制声明对任务的独占权:
team_task_claim获取文件锁- 其他成员看到已 claim 的任务不会重复处理
- 任务完成后释放锁
tmux 可视化
每个成员的 session 输出流到独立 tmux pane:
- focus 窗口:显示选中成员的完整输出
- grid 窗口:所有成员的概览
- 自动清理:成员完成后 pane 回收
问题与规避
多 Agent 编辑冲突
问题:多个成员同时编辑同一文件。
规避:
- 可选 per-member git worktree 隔离
- 文件锁防止同一任务被多人处理
- Hashline 协议检测冲突(哈希不匹配即拒绝)
成员过多导致资源竞争
问题:8 个成员并行运行时竞争 API 限流和系统资源。
规避:
max_parallel_members控制并行度- 每个成员有独立的模型 fallback 链
- tmux 可视化帮助监控资源使用
设计取舍
Team Mode vs 传统 Subagent
| 维度 | 传统 Subagent | Team Mode |
|---|---|---|
| 通信 | 返回值聚合 | 共享邮箱 + 消息传递 |
| 状态 | 独立 | 共享任务列表 + 可选 worktree |
| 适用场景 | 独立短任务 | 协作性强的长任务 |
Oh-My-OpenAgent 的选择:Team Mode 默认关闭(off by default),因为不是所有任务都需要如此强的协作。用户在需要时启用。