前言¶
在 DeepSeek Harness(DSH)里让 AI 做完一项开发任务,常见收尾是模型说一句「改好了」就结束。测试没跑、回归没看、文档没核对,问题往往到人工接手时才暴露。社区插件按「一切皆插件」的方式扩展 Harness 能力;目录在 SkillHub 插件页,与 DeepSeek / 幻方无官方从属关系。
下面介绍维护者 566001 的 dsh-wrapup-guard(展示名「收尾哨兵」):在 AI 判断任务做完时,把收尾变成有门槛的流程,拦住「差不多可以了」式交差。
这是什么¶
dsh-wrapup-guard 是一个 DSH 插件(分类 extension)。核心行为是:当 AI 认为任务完成时调用工具 wrapup_check,插件负责轮次状态、自动执行项目里可探测的命令类检查(测试 / lint 等),并强制 检查 → 修复 → 再检查 循环;只要有未修复项就打回;只有 连续三轮 全面检查零问题,才判定收尾完成并通知用户。
插件用纯 JavaScript 实现,不替 AI 做代码审查或动手修 bug——那是 AI 的分工;插件管的是计数、拦截、放行和报告。
它解决什么问题¶
AI 收尾时容易跳过验证。该插件把流程固定为:
全面检查 → 发现问题 → 修复 → 再全面检查 → …
↑__________________________|
直到连续 3 轮零问题 → 通知用户「收尾完成」
本轮只要还有 fixed !== true 的问题,就不会计入「连续干净」;哪怕只修了一个小 bug,该轮也不算干净,计数归零,避免「边查边修、修完就说好了」。
核心功能¶
工具 wrapup_check 的 action¶
| action | 作用 |
|---|---|
start |
开始一次收尾自检,重置计数;并探测项目里可自动运行的检查命令 |
check |
插件自动跑命令类检查,返回原始输出 |
report |
汇报本轮全面检查结论,须带 problems 数组(空数组表示干净) |
status |
查看当前轮次、连续干净计数、各轮摘要 |
abort |
放弃本次收尾 |
report 主要参数:
problems:每项为{ kind, where, what, fixed };存在fixed !== true的项会被立刻打回。checks:手动做过的检查类别(review/build/consistency);缺项时插件会提醒。summary:本轮小结,会进入最终报告。
自动探测的检查命令¶
在项目根目录按顺序查找:
package.json的scripts.test/scripts.lint/scripts.typecheck/scripts.checktools/audit.js、tools/check.js、tools/selftest.mjs
探测不到则返回「没有可自动运行的检查」——这是合法结果,命令类检查由 AI 手动完成。插件不会扫描 scripts 里所有 key 全跑,以免误触构建、发布等有副作用的脚本。
分工一览¶
| 谁 | 负责什么 |
|---|---|
| 插件 | 状态机、连续干净计数、自动跑命令类检查、判定放行、通知用户 |
| AI | 代码审查、构建/运行验证、一致性检查、实际修复 |
状态与通知¶
- 状态落盘到
~/.dsh/wrapup-guard/<sessionId>.json,跨多轮工具调用与 DSH 重启仍保留计数。 - 达到连续 3 轮零问题时:宿主写完成记录,经
/dsh-wrapup-guard/status暴露;浏览器端轮询后右下角弹出完成卡片(约 12 秒后收成徽章);工具返回值含完整报告供 AI 转述。
实现上的注意点(来自 README)¶
- 不 import
@deepseek-ai/*,依赖ctx与 Node 内置模块。 - Windows 下通过
cmd.exe /d /s/c跑npm相关命令;超时时用taskkill /T /F杀整棵进程树,避免 npm 子进程拖住超时。 - 状态机无法自动防御 AI 漏报;系统提示要求诚实,并核对声明的检查类别是否齐全。
许可证:MIT。package.json 要求 Node >=22,peer 依赖 @deepseek-ai/cordis ^4.0.1、@deepseek-ai/dsh >=0.1.7-rc.2。当前发布版本 0.1.0。
安装与启用¶
在 profile 的 package.json 中加入依赖并注册 bundle:
// profiles/<profile>/package.json
{
"dependencies": {
"dsh-wrapup-guard": "^0.1.0"
},
"dsh": {
"profile": {
"bundles": ["…", "dsh-wrapup-guard"]
}
}
}
本地开发可将依赖写成 file:/absolute/path/to/dsh-wrapup-guard;从 npm 安装则写版本号。
在该 profile 目录用 DSH 自带的 pnpm 安装:
node <DSH>/resources/runtime/pnpm/bin/pnpm.cjs install --no-frozen-lockfile
file: 依赖会被复制进 profile 的 node_modules,改插件源码后需重跑 install。改完配置后需要重启 DSH(插件在启动时加载)。
安装前请自行阅读 GitHub 仓库 源码与许可证;插件以当前 DSH 进程权限在项目目录执行检查命令,只安装你信任的包。
典型用法¶
- AI 判断任务将结束时调用
wrapup_check,action: start开启本轮收尾并重置计数。 - 调用
check让插件跑探测到的 test/lint 等;结合输出与人工审查,做review/build/consistency类检查。 - 调用
report,提交problems与checks、summary。若有未修复项,按插件反馈修复后重新做全面检查(不是只验刚改的一处)。 - 重复直到
status显示连续干净计数达到 3;此时会收到完成通知与完整报告。中途可abort放弃。
仓库内自检命令(供维护者或本地验证插件行为):
node tools/selftest.mjs
node tools/check-commands.mjs <项目路径>
适用场景与注意¶
适合:希望在 DSH 会话里把「收尾」制度化、需要自动跑 npm run test / lint 等且愿意接受「三轮全检零问题」门槛的团队或个人。
注意:
- 无自动探测命令时,仍须由 AI 完成等效检查并在
report中如实填写。 - 插件无法验证 AI 是否隐瞒问题,依赖提示词与每轮
checks核对。 - 社区目录页:https://www.skillhub.cn/plugins/566001/dsh-wrapup-guard;源码与文档:https://github.com/566001/dsh-wrapup-guard。
结尾¶
dsh-wrapup-guard 把「任务完成」从一句口头确认,改成带状态机与命令检查的收尾门禁:未修复问题必被打回,连续三轮全面检查通过才放行并通知。若你正在用 DSH 做智能体开发并希望减少「改好了但未验证」的交差,可在 SkillHub 目录页查看条目,并按 README 将 dsh-wrapup-guard 加入 profile 后重启 Harness 试用。