名称: 群协调 描述: | OpenCode 群工作流的多代理协调模式。当工作从并行化或协调中受益时使用。涵盖:任务分解、工人生成、文件预留、进度跟踪和审查循环。
群协调
此技能指导 OpenCode 群工作流中的多代理协调。
何时使用群
当调用 /swarm 时,始终使用群。 用户的明确调用会覆盖任何启发式方法。
群的使用除了并行化外还有多个目的:
- 上下文保存 - 工人从协调器中卸载工作
- 会话弹性 - 如果协调器压缩,工人可以持续存在
- 进度跟踪 - 蜂窝细胞跟踪完成状态
- 学习捕获 - 集体智能存储每个子任务的发现
即使小任务(1-2个文件)在上下文珍贵时也能从群中受益。
对于顺序工作,使用子任务之间的依赖关系,而不是拒绝使用群。
工具访问(通配符)
此技能根据用户选择配置了 tools: ["*"]。如果需要后续进行筛选访问,请用显式工具列表替换通配符。
前台与后台
- 前台代理 可以访问 MCP 工具。
- 后台代理 没有 MCP 工具。
- 对
swarmmail_*、swarm_*、hive_*和 MCP 调用使用前台工人。 - 仅对文档编辑和静态工作使用后台工人。
MCP 生命周期缓解
Claude Code 从 mcpServers 配置自动启动 MCP 服务器。除非用于调试,否则不要要求手动 swarm mcp-serve。
协调器协议(高级)
- 初始化群邮件 (
swarmmail_init)。 - 查询过去的学习 (
hivemind_find) - 分解前必须执行。 - 分解 (
swarm_plan_prompt+swarm_validate_decomposition)。 - 生成工人并指定文件列表。
- 审查工人输出 (
swarm_review+swarm_review_feedback)。 - 记录结果 (
swarm_complete)。 - 存储学习 (
hivemind_store) - 群完成后必须执行。
工人协议(高级)
- 初始化群邮件 (
swarmmail_init)。 - 预留文件 (
swarmmail_reserve)。 - 在范围内工作并报告进度。
- 存储发现 (
hivemind_store) - 任何陷阱、模式或决策。 - 完成 (
swarm_complete)。
集体智能使用(必须)
代理必须使用集体智能来构建集体记忆:
工作前:
hivemind_find({ query: "相关主题或代码库模式" })
工作中(当发现某事时):
hivemind_store({
information: "认证模块在 Y 之前需要 X",
tags: "auth,陷阱,代码库名称"
})
工作后:
hivemind_store({
information: "完成任务 X。关键学习点:...",
tags: "群,完成,史诗ID"
})
大量存储。内存廉价;重新发现陷阱代价高昂。
文件预留
工人必须在编辑前预留文件,并通过 swarm_complete 释放。
协调器从不预留文件。
进度报告
在完成度 25%、50% 和 75% 时使用 swarm_progress 触发自动检查点。
生成工人(关键 - 请阅读此部分)
步骤 1: 使用 swarm_spawn_subtask 准备子任务
const spawnResult = await swarm_spawn_subtask({
bead_id: "cell-abc123", // 此子任务的蜂窝细胞 ID
epic_id: "epic-xyz789", // 父史诗 ID
subtask_title: "添加日志工具",
subtask_description: "创建一个带有结构化日志支持的日志器模块",
files: ["src/utils/logger.ts", "src/utils/logger.test.ts"], // 字符串数组,不是 JSON 字符串
shared_context: "此史诗正在添加可观察性。其他工人正在添加指标和跟踪。",
project_path: "/absolute/path/to/project" // 用于跟踪的必需项
});
步骤 2: 使用 Task 工具生成工人
// 解析结果以获取提示
const { prompt, recommended_model } = JSON.parse(spawnResult);
// 生成工人
await Task({
subagent_type: "swarm:worker",
prompt: prompt,
model: recommended_model // 可选:使用自动选择的模型
});
常见错误
错误 - 文件作为 JSON 字符串:
files: '["src/auth.ts"]' // 不要这样做
正确 - 文件作为适当数组:
files: ["src/auth.ts", "src/auth.test.ts"] // 这样做
错误 - 缺少 project_path:
swarm_spawn_subtask({
bead_id: "...",
epic_id: "...",
// 没有 project_path - 工人无法初始化跟踪!
})
正确 - 始终包含 project_path:
swarm_spawn_subtask({
bead_id: "...",
epic_id: "...",
project_path: "/Users/joel/myproject" // 必需!
})
并行与顺序生成
并行(独立任务)
在单个消息中发送多个 Task 调用:
// 所有在一个消息中 - 并行运行
Task({ subagent_type: "swarm:worker", prompt: prompt1 })
Task({ subagent_type: "swarm:worker", prompt: prompt2 })
Task({ subagent_type: "swarm:worker", prompt: prompt3 })
顺序(依赖任务)
在生成下一个之前等待每一个:
const result1 = await Task({ subagent_type: "swarm:worker", prompt: prompt1 });
// 审查 result1...
const result2 = await Task({ subagent_type: "swarm:worker", prompt: prompt2 });
故事状态流
状态转换应遵循:
- 协调器 在生成工人时将故事设置为
in_progress - 工人 完成工作并将其设置为
ready_for_review - 协调器 审查并将其设置为
passed或failed
工人不设置最终状态 - 那是协调器在审查后的工作。
技能加载指南
工人应根据任务类型加载技能:
- 测试或修复 →
testing-patterns - 架构 →
system-design - CLI 工作 →
cli-builder - 协调 →
swarm-coordination