@cr903/opencode-swarm

中文文档
1.11.0发布于 2026/11/07MITES Module近 30 天下载 2986

Swarm多会管弦乐为OpenCode:计划员分出任务,dev执行器,测试员独立验证,审查员审计语义. 原子队列 沙盒核查门 时间表审计 TUI板.

中文使用文档
文档目录10 节
  1. 安装
  2. 上手(三步)
  3. 命令速查
  4. 插件 options(opencode.json)
  5. 门禁说明
  6. 运行时产物(在你的项目里,不进包)
  7. 测试
  8. 1.1.0 行为变更(并行多轮修复)
  9. 版本与兼容
  10. License

@cr903/opencode-swarm

Swarm 多会话编排插件(OpenCode v2):planner 拆任务 → dev 实现 → tester 独立验收 → reviewer 语义评审 → 自动派下一单。从生产仓库提炼,300+ 回归用例锁定。

  • 原子队列(tmp+fsync+rename / 目录锁 / CAS)+ FSM 状态机单源
  • 门禁管道:verify 真跑 + verdict/commit 绑定 + policy 禁区 + secret 扫描 + diff/security(lint/type/tenant 可选)
  • 时间线溯源(timeline.jsonl 可重放 rebuild)+ 本地事件通道(FileBus)
  • 高风险软卡(人工 approve)、3-strike 熔断、revert 回门禁前、nightly 只读重跑、eval 导出
  • TUI 大屏(sidebar 窄卡 + 整页 board + footer 状态行,只读)

安装

opencode plugin add @cr903/opencode-swarm
# 或在 opencode.json(c) 里加:
# { "plugins": ["@cr903/opencode-swarm"] }
opencode service restart

要求:Node ≥ 18,git 可用。插件零运行时依赖(除 @opencode/plugin 与 TUI 的 solid-js / @opentui/*)。

上手(三步)

/swarm-init      # 安装配套文件到本项目:agents/*.md + .opencode/review/_default.md(已存在的不覆盖;skills 随插件自动注册)
/swarm-up --planner-model <p> --dev-model <d> --tester-model <t> --name <需求名>
# 默认主会话即 planner:直接在当前窗口
#plan 拆解 <需求或PRD路径>
/swarm-start     # 必须显式派发(up 只开轮不派发;未 start 前 dev/test 认领会被拒)

想恢复「另建一个 plan 会话」的旧行为:/swarm-up ... --plan-session new。

完整操作手册见 docs/swarm-使用手册.md,设计说明见 docs/swarm-SPEC.md。

命令速查

/swarm-up /swarm-start /swarm-status /swarm-drained /swarm-halt /swarm-retry /swarm-revert /swarm-nightly /swarm-eval /swarm-runs /swarm-switch /swarm-migrate /swarm-models /swarm-mode /swarm-clean(共 17 个,另有 /swarm-board TUI 大屏)。

工具(agent 调用):swarm_plan / swarm_claim / swarm_next / swarm_done / swarm_test / swarm_review / swarm_approve / swarm_halt / swarm_revert / swarm_read_queue / swarm_config。

角色:swarm-plan(只拆不写)→ swarm-dev(一次一单)→ swarm-test(独立验证,write/edit deny)→ swarm-reviewer(只审不改,subagent)。

插件 options(opencode.json)

{
  "plugins": [["@cr903/opencode-swarm", {
    "queue": ".swarm/queue.jsonl",   // 兼容旧调用;默认按 run 切分到 .swarm/runs/<id>/
    "maxRetries": 3,                 // test fail 熔断阈值
    "verifyTimeoutMs": 300000,
    "allowlist": ["task"],           // 追加到 verify_cmd 白名单
    "autoWake": true,
    "policyDeny": [],                // 追加禁区
    "sensitivePaths": [],            // 命中即按高风险提示
    "gates": { "lint": true, "type": true, "tenant": true },  // 默认关闭的门
    "executor": "hybrid"             // sessions | subagents | hybrid(默认 hybrid:dev/plan 走会话,test/reviewer 走子代理)
  }]]
}

门禁说明

  • verify:白名单裸命令(禁 shell 拼接),异步跑 + 硬超时 + 输出截断。
  • lint 默认跑 make gate(可 lint_cmd 覆盖);type 必须显式传 type_cmd(本包不假设技术栈,未传直接拒收并指引);tenant 默认跑包内 lib/swarm-tenant-check.mjs,检查脚本按 SWARM_TENANT_CHECK 环境变量 → 当前仓库 smarterlab-backend/scripts/tenant-check.sh 查找,缺失给明确指引退出(自备脚本或传 tenant_cmd)。
  • review=true 的任务 test pass 后进 reviewing,swarm_review 出结论(Important 必答,Nit 不拦,wontfix 须写 reason)。

运行时产物(在你的项目里,不进包)

.swarm/runs/<runId>/{queue.jsonl,timeline.jsonl,events.jsonl,round.json,meta.json}
  round.json = { name, sessions:{plan,dev,test}, members:{<sessionID>: {role, at}} }
               members 记录主会话/子代理等非角色会话,供「会话 → run」反查(footer 跟随 / sidebar 高亮)
  meta.json  = { name, createdAt, executor, roleModels{dev,dev_backend,dev_frontend,test,reviewer}, startedAt?, pendingStart?, prdPath? }
               pendingStart=true 表示「up 已开轮、尚未 /swarm-start」,dev/test 认领会被拒;
               roleModels 按需:backend→dev_backend、frontend→dev_frontend(legacy dev 通配),test/reviewer 按需索要
.swarm/secret-baseline.json   # secret 门基线(只报新增)
.swarm/current                # 当前轮指针(并行多轮时仅作兜底:run 解析优先会话/任务归属)
.swarm/eval/<month>.jsonl     # /swarm-eval 导出

测试

npm test   # node --test tests/(单元 + 端到端 + board 数据层,随功能增长)

1.1.0 行为变更(并行多轮修复)

  • 默认主会话即 planner:/swarm-up 不再另建 plan 会话(plan = 发起命令的会话);旧行为用 --plan-session new。
  • /swarm-start 是唯一派发授权:/swarm-up 只开轮不派发;pendingStart 期间 swarm_claim / swarm_next 拒收(force:true 逃生)。
  • run 解析不再只看全局指针:显式 run > 任务归属(task_id)> 会话绑定 > .swarm/current,并行两轮互不抢指针。
  • 命名/跟随:round.name 与 meta.name 同步双写;sidebar 以 meta.name 为规范名;footer/sidebar 高亮按 round.sessions + round.members(主会话、子代理)跟随。
  • 空入队(全部被校验拒)不再改轮名。

版本与兼容

  • 跟随 OpenCode v2 插件契约(@opencode/plugin ^2);采用 OpenCode 新版时先跑 npm test。
  • agents 目录使用 Markdown agent 文件(v1 frontmatter,OpenCode 兼容读取);skills 由插件在 setup 时自动注册。

License

MIT — 见 LICENSE。

版本与发布记录

@cr903/opencode-swarm 共发布 16 个版本,首次发布于 2026/11/02;过去 12 个月发布了 16 个版本。

版本发布日期距今
1.11.0latest2026/11/073 天前
1.7.02026/11/064 天前
1.6.32026/11/064 天前
1.6.12026/11/064 天前
1.6.02026/11/055 天前
1.5.02026/11/055 天前

关于 @cr903/opencode-swarm 的常见问题

@cr903/opencode-swarm 是什么?

Swarm多会管弦乐为OpenCode:计划员分出任务,dev执行器,测试员独立验证,审查员审计语义. 原子队列 沙盒核查门 时间表审计 TUI板.

如何安装 @cr903/opencode-swarm?

在项目目录运行 npm install @cr903/opencode-swarm,或使用 pnpm add / yarn add / bun add。

@cr903/opencode-swarm 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/cr903__opencode-swarm 是否存在。

@cr903/opencode-swarm 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@cr903/opencode-swarm 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cr903/opencode-swarm 可以商用吗?

@cr903/opencode-swarm 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@cr903/opencode-swarm 的下载量有多少?

根据 npm 官方下载统计,@cr903/opencode-swarm 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,986 次,日均约 100 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cr903/opencode-swarm 还在维护吗?

最新版本 1.11.0 发布于 2026/11/07(3 天前);至今共发布 16 个版本,其中过去 12 个月发布了 16 个;首次发布于 2026/11/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。