name: 集群协调 description: 用于OpenCode集群工作流的多智能体协调模式。当处理受益于并行化的复杂任务、协调多个代理或管理任务分解时使用。不要用于简单的单代理任务。 tags:
- 集群
- 多智能体
- 协调 tools:
- swarm_decompose
- swarm_complete
- swarmmail_init
- swarmmail_send
- swarmmail_inbox
- swarmmail_read_message
- swarmmail_reserve
- swarmmail_release
- skills_use
- skills_list related_skills:
- 测试模式
- 系统设计
- cli构建器
集群协调技能
此技能为OpenCode集群工作流中的多智能体协调提供指导。
重要提示: 此技能引用全局技能在global-skills/中。工作者应根据其子任务类型加载领域特定技能。
强制要求:集群邮件
所有协调必须使用swarmmail_*工具。 这是不可协商的。
集群邮件是嵌入式(无需外部服务器)并提供:
- 文件保留以防止冲突
- 代理间消息传递
- 与单元格绑定的基于线程的协调
何时使用集群协调
在以下情况使用集群协调:
- 任务有多个可并行运行的独立子任务
- 任务需要不同专业化(例如,前端 + 后端 + 测试)
- 工作可按文件/模块边界划分
- 完成时间重要且并行化有帮助
在以下情况不要使用集群协调:
- 任务简单,可由单个代理完成
- 子任务彼此有重度依赖
- 协调开销超过收益
任务分解策略
1. 分析任务
分解前,理解:
- 工作有哪些独立单元?
- 哪些部分可并行运行 vs 顺序运行?
- 文件/模块边界是什么?
- 是否有需要协调的共享资源?
2. 选择分解策略
并行策略 - 用于独立子任务:
父任务:"添加用户认证"
├── 子任务1:"创建认证API端点"(后端)
├── 子任务2:"构建登录/注册表单"(前端)
├── 子任务3:"编写认证集成测试"(测试)
└── 子任务4:"添加认证文档"(文档)
顺序策略 - 当顺序重要时:
父任务:"迁移数据库架构"
├── 步骤1:"创建迁移文件"
├── 步骤2:"更新模型定义"
├── 步骤3:"运行迁移"
└── 步骤4:"验证数据完整性"
混合策略 - 混合依赖:
父任务:"添加功能X"
├── 阶段1(并行):
│ ├── 子任务A:"设计API"
│ └── 子任务B:"设计UI模拟"
├── 阶段2(顺序,阶段1后):
│ └── 子任务C:"基于设计实现"
└── 阶段3(并行):
├── 子任务D:"编写测试"
└── 子任务E:"更新文档"
文件保留协议
当多个代理在同一代码库上工作时:
- 首先初始化集群邮件 - 在任何工作前使用
swarmmail_init - 编辑前保留文件 - 使用
swarmmail_reserve声明文件 - 尊重保留 - 不要编辑其他代理保留的文件
- 完成后释放 - 使用
swarmmail_release或让swarm_complete处理 - 在共享文件上协调 - 如果必须编辑保留文件,向拥有代理发送消息
// 首先初始化
await swarmmail_init({
project_path: "$PWD",
task_description: "处理认证功能",
});
// 保留文件
await swarmmail_reserve({
paths: ["src/auth/**"],
reason: "bd-123: 认证实现",
ttl_seconds: 3600,
});
// 工作...
// 完成后释放
await swarmmail_release();
通信模式
广播更新
swarmmail_send({
to: ["*"],
subject: "API完成",
body: "完成API端点,准备前端集成",
thread_id: epic_id,
});
直接协调
swarmmail_send({
to: ["前端代理"],
subject: "认证API规范",
body: "认证API位于/api/auth/*,以下是规范...",
thread_id: epic_id,
});
检查消息
// 检查收件箱(最多5条,无正文以确保上下文安全)
const inbox = await swarmmail_inbox();
// 读取特定消息正文
const message = await swarmmail_read_message({ message_id: N });
报告阻塞
swarmmail_send({
to: ["协调员"],
subject: "阻塞:需要数据库架构",
body: "没有用户表无法继续",
thread_id: epic_id,
importance: "紧急",
});
最佳实践
- 首先初始化集群邮件 - 始终在开始工作前调用
swarmmail_init - 小且专注的子任务 - 每个子任务应可在一次代理会话中完成
- 清晰边界 - 明确定义每个子任务涉及的文件/模块
- 显式交接 - 当一个任务启用另一个时,清晰沟通
- 优雅失败 - 如果子任务失败,不要阻塞整个集群
- 进度更新 - 使用珠子跟踪子任务状态
- 加载相关技能 - 工作者应根据任务类型调用
skills_use():- 测试工作 →
skills_use(name="测试模式") - 架构决策 →
skills_use(name="系统设计") - CLI开发 →
skills_use(name="cli构建器") - 多智能体协调 →
skills_use(name="集群协调")
- 测试工作 →
常见模式
功能开发
分解:
策略:混合
技能:[系统设计, 集群协调]
阶段:
- 名称:设计
并行:true
子任务:[api设计, ui设计]
推荐技能:[系统设计]
- 名称:实现
并行:true
子任务:[后端, 前端]
推荐技能:[系统设计]
- 名称:验证
并行:true
子任务:[测试, 文档, 审查]
推荐技能:[测试模式]
错误修复集群
分解:
策略:顺序
技能:[测试模式]
子任务:
- 复现错误
- 识别根本原因
- 实施修复
- 添加回归测试
推荐技能:[测试模式]
重构
分解:
策略:并行
技能:[测试模式, 系统设计]
子任务:
- 重构模块A
- 重构模块B
- 更新导入
- 运行完整测试套件
推荐技能:[测试模式, 系统设计]
技能集成工作流
对于协调员:
- 使用
swarmmail_init初始化集群邮件 - 加载
集群协调技能 - 分析任务类型
- 基于领域加载额外技能(测试、设计、CLI)
- 在
shared_context中为工作者包含技能推荐
对于工作者:
- 使用
swarmmail_init初始化集群邮件 - 从协调员读取
shared_context - 使用
skills_use(name="技能名称")加载推荐技能 - 将技能知识应用于子任务
- 通过
swarmmail_send报告进度 - 使用
swarm_complete完成
示例shared_context:
## 来自协调员的上下文
过去类似任务:[CASS结果]
项目学习:[语义记忆结果]
## 推荐技能
- skills_use(name="测试模式") - 用于测试创建
- skills_use(name="系统设计") - 用于模块边界
## 任务特定笔记
[来自协调员的领域知识]
集群邮件快速参考
| 工具 | 用途 |
|---|---|
swarmmail_init |
初始化会话(必须首先调用) |
swarmmail_send |
向代理发送消息 |
swarmmail_inbox |
检查收件箱(最多5条,无正文) |
swarmmail_read_message |
读取特定消息正文 |
swarmmail_reserve |
为独占编辑保留文件 |
swarmmail_release |
释放文件保留 |
swarmmail_ack |
确认消息 |
swarmmail_health |
检查数据库健康 |