前言¶
在 DSH 会话里推进一个功能时,需求、设计决定和任务清单常常散落在一次对话中。会话重启后,如果只有聊天记录,重新接上工作就会比较费劲。dsh-specflow 的思路是把工作保存在仓库中:后续会话读取同一批工件,找到下一个未完成任务,并恢复对应的 DSH goal。
这是什么¶
dsh-specflow 是 lonelymoon87 维护的 DeepSeek Harness(DSH)插件,描述为 Specification-driven development workflows for DeepSeek Harness。许可证为 MIT。
它支持 DSH >=0.1.0-rc.6 <0.2.0 插件 API,并要求 Node.js ^22.19.0 || >=24.0.0。v0.1.4 已在 npm 发布,资料称其经过 DSH 0.1.0-rc.8 和 0.1.1-rc.1 测试。
核心功能¶
提供可复用的工作流命令¶
插件提供五个可移植技能:constitution、specify、plan-spec、tasks、implement。
插件还提供六个可发现命令:/specflow、/constitution、/specify、/plan-spec、/tasks、/implement。
将工件保存在仓库中¶
SpecFlow 提供 spec.md、plan.md 和 tasks.md 模板,并将工作保存在仓库中。后续会话可以读取这些工件,并恢复未完成任务。
支持 DSH goal 与显式恢复¶
/implement 支持创建 DSH goal 并显式恢复。/implement 会拒绝替换不相关的活跃 goal。
读取任务进度¶
specflow_status 工具从 tasks.md 读取复选框进度。任务完成仅按 Markdown 复选框行计数。
当 autoInjectContext 启用时,活跃 goal 与最近观察到的任务计数会作为模型可见的 DSH runtime context。
文件访问与权限边界¶
SpecFlow 通过已挂载的 DSH 文件系统服务读取 tasks.md。技能可请求在 .dsh/memory/ 与 .dsh/specs/ 下创建或更新文件,并遵循 profile 的工具与审批策略。
插件不进行网络请求、不解析凭据、不发送遥测,也不注册自定义持久化会话事件。
安装与启用¶
先添加插件到 web profile:
dsh plugin --profile web add dsh-specflow
再启动 DSH:
dsh web
经过上面的步骤后,可以在 DSH 会话中输入 /specflow 查看工作流。
如果采用固定来源安装,会运行 prepare 构建;pnpm 10 及更高版本可能需要先按提示允许精确包键。
典型用法¶
一个完整示例如下,其中 001-resumable-exports 是规格目录名:
/constitution Require focused tests for every behavior change
/specify Add resumable exports to the CLI
/plan-spec 001-resumable-exports
/tasks 001-resumable-exports
/implement 001-resumable-exports
上面的命令先写入约束,再生成规格、计划和任务,并进入实现。
重启或新会话后,可以用下面命令恢复:
/specflow 001-resumable-exports
/implement 001-resumable-exports
/specflow <NNN-slug> 会报告持久化复选框进度、下一任务、工件路径和准确恢复命令。
适用场景与注意¶
适合在 DSH 中开发功能、希望把规格、计划与任务清单落到仓库里的开发者,尤其是需要跨会话恢复未完成任务的场景。
插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。资料中的许可证为 MIT;使用前还应确认所用 DSH 版本、profile 配置和审批策略符合团队要求。
相关链接¶
- GitHub:https://github.com/lonelymoon87/dsh-specflow
- 资料中给出的目录页:https://www.skillhub.cn/plugins/lonelymoon87/dsh-specflow