前言¶
在 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 中的起步顺序操作:
- 面板顶部选择工作区(须含
openspec/)。 - 在列表中单击 change,加入画布(孤立节点,不自动连线)。
- 从节点拖到「开工」或上游节点,建立依赖。
- 按需双击节点:设组合、模型、附加提示词(验收、测试、归档步骤建议写在这里;不写则对话结束后可能一直停在「等你」直到手动点「归档」或在对话里补归档)。
- 点「开始」整批跑,或右键节点在满足前置条件时「启动」单格。
同一段附加提示词可存为「组合」,新节点套用默认组合以减少重复设置。提示词保存在 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