dsh-openspec-pipeline: Organizing OpenSpec Changes into a Pipeline and Executing According to the Diagram

前言

在 DeepSeek Harness(DSH)里用 OpenSpec 管多个 change 时,常见做法是逐个开对话、自己记谁先谁后。依赖一多,容易漏跑、重复开跑,或某一格卡在「没归档」却已经把下游拉起来。下面介绍社区插件 dsh-openspec-pipeline(维护者 heibaoxia,分类:工作流):用一张图画出 change 之间的先后与并行关系,在面板选定的工作区里按图新建顶层对话执行;进度与规划状态交给 openspec CLI,卡住时可用面板上的「归档」走 validate --strict 再人工决定是否归档。

这是什么

dsh-openspec-pipeline 是 DSH 上的 OpenSpec 变更流水线插件。一张流水线对应仓库里的 openspec/pipeline.json,每个节点绑定一个 change;按依赖顺序(或并行)在当前面板所选工作区里开普通顶层对话,默认首句为 执行 <change> Change,具体验收与归档口径写在节点的「附加提示词」里。

插件不做 AI 验收、也不替代 settle:节点「完成」的判定是这一轮对话正常收尾,且 change 目录已从 openspec/changes/ 进入 archive/(只查目录,不替 OpenSpec 做质量判断)。任务进度优先读 openspec list --json;规划进度(proposal / specs / design / tasks)读 openspec status --all --json,避免「只有 proposal」与「四件套只差 tasks」在列表里都被标成 no-tasks 而分不清。

核心功能

画布与持久化

面板由顶栏、全宽画布、未归档 change 列表组成。从列表单击加入节点,从节点右侧连到「开工」或上游节点表示依赖;改位置、连线、断开、节点设置都会自动写入 openspec/pipeline.json(无单独「保存」按钮)。0.12.0 起高频拖动约 350ms 防抖落盘;开跑、归档、切工作区前会等写入完成。

按图开跑与归档门禁

点「开始」后 runner 按图推进:前置完成或 change 已归档则放行下一格。对话结束后若 change 仍在 changes/,节点记「等你」,下游不动;0.9.2 起 runner 每秒查看 archive/,手动或对话内归档后约一秒内自动记「完成」并继续,无需再点「开始」。

0.18.0 起开跑前多一道闸:没有任务清单或规划未写完(isPlanningComplete 为假)的格子不进对话,记「等你 · 等写好」,写完自动放行。已归档或仓库里找不到的 change 可用画布右上角「清理 N」一次删掉。

进度与卡住时的「归档」

  • 任务:openspec list --json 提供 completedTasks / totalTasks / status;CLI 不可用时会退回数 tasks.md,顶栏会说明原因。
  • 规划:面板显示如「规划 2/4」,悬停可看缺哪些产物与 nextSteps 原文。
  • 归档按钮(对话已停且 change 仍在 changes/):先 openspec validate <change> --strict 展示问题,人点「仍然归档」才执行 openspec archive <change> -y。验证失败不会自动放行;这与 0.8 移除的带 AI 判断的 settle 不同。

节点可勾选「归档之后自动提交」:进入 archive/ 后 Host 在工作区执行 git add -A 与 git commit(信息 openspec: <change>);提交失败则本格仍停「等你」。

工作区与并行

0.12.0 起工作区按面板计:每个面板各看一个含 openspec/ 的仓库、各有独立 runner;A 在跑时可切到 B 看 B 的图,切回 A 仍在跑。顶栏 ⋯ 可设并行上限、跑到哪停、默认组合(对话模式 / 运营商 / 模型 / 强度 / 附加提示词)等。

监工与失败(0.19.0)

runner 失败或 15 分钟无进展会投值班单;revive 可接回原对话或 fresh: true 换新对话,peek 只读,supervisor.pending 保留未处理失败并按节奏补投。

权限与日志

package.json 中 disclosure 说明:主要读写所选仓库的 openspec/ 与插件设置、spawn openspec CLI、通过 sessionController 新建对话;网络与云端披露为无额外上报业务数据。Host 日志路径示例:

<DSH_PROFILE_DIR>/openspec-pipeline.log

客户端异常经 POST /openspec-pipeline/api/client-log 上报。插件要求 Node >=20,许可证 MIT。

安装与启用

桌面端:侧栏「插件」→「添加插件」,粘贴:

https://github.com/heibaoxia/dsh-openspec-pipeline

Web / CLI:

dsh plugin --profile web add github:heibaoxia/dsh-openspec-pipeline

装完重启 DSH(桌面端重启应用;CLI 重跑 dsh web),刷新后面板顶栏出现版本号(资料中当前为 v0.19.0)即表示加载成功。

前置条件(缺失不会导致崩溃,但功能会降级):

  • 目标仓库已有 openspec/(例如 openspec init);
  • openspec 在 PATH 上,供 list / status / validate / archive 使用。

插件以当前 DSH 进程权限运行;安装前建议阅读仓库源码与 MIT 许可证,确认符合你的安全与合规要求。

典型用法

经过上面的安装与重启,可按 README 中的起步顺序操作:

  1. 面板顶部选择工作区(须含 openspec/)。
  2. 在列表中单击 change,加入画布(孤立节点,不自动连线)。
  3. 从节点拖到「开工」或上游节点,建立依赖。
  4. 按需双击节点:设组合、模型、附加提示词(验收、测试、归档步骤建议写在这里;不写则对话结束后可能一直停在「等你」直到手动点「归档」或在对话里补归档)。
  5. 点「开始」整批跑,或右键节点在满足前置条件时「启动」单格。

同一段附加提示词可存为「组合」,新节点套用默认组合以减少重复设置。提示词保存在 openspec/pipeline.json,不进上述 Host 日志。

适用场景与注意

适合:已在仓库使用 OpenSpec、需要按依赖或有限并行批量驱动多个 change、希望进度与 OpenSpec CLI 口径一致、并愿意在提示词里自己定义每格验收与归档方式的 DSH 用户。

注意:

  • 流水线不替你做规范质量判断;validate --strict 也管不了「只有 WHEN 或只有 THEN」的单边 scenario(README v1.13.2 实测表)。
  • 对话 abort / error 标「失败」,下游不开。
  • 桌面端若因插件客户端半身抛错导致 web boot 失败,可按 README「桌面端起不来时的恢复」从 profile 的 dsh.profile.bundles 暂时移除 bundle 并查日志。
  • 社区目录 skillhub.cn 与 GitHub 仓库由维护者发布,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,安装来源以你自行核验的仓库为准。

结尾

dsh-openspec-pipeline 把多个 OpenSpec change 收成一张可持久化的依赖图,在选定工作区按序或并行开对话,用目录级归档门禁和 CLI 进度对齐 OpenSpec 工作流;卡住时用 strict 校验加人工确认归档,而不是插件侧 AI 验收。

  • 目录页:https://www.skillhub.cn/plugins/heibaoxia/dsh-openspec-pipeline
  • 源码与完整说明:https://github.com/heibaoxia/dsh-openspec-pipeline
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye