dsh-wrapup-guard:把任务收尾变成「检查 → 修复 → 再检查」的门禁

前言

在 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:本轮小结,会进入最终报告。

自动探测的检查命令

在项目根目录按顺序查找:

  1. package.json 的 scripts.test / scripts.lint / scripts.typecheck / scripts.check
  2. tools/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 进程权限在项目目录执行检查命令,只安装你信任的包。

典型用法

  1. AI 判断任务将结束时调用 wrapup_check,action: start 开启本轮收尾并重置计数。
  2. 调用 check 让插件跑探测到的 test/lint 等;结合输出与人工审查,做 review / build / consistency 类检查。
  3. 调用 report,提交 problems 与 checks、summary。若有未修复项,按插件反馈修复后重新做全面检查(不是只验刚改的一处)。
  4. 重复直到 status 显示连续干净计数达到 3;此时会收到完成通知与完整报告。中途可 abort 放弃。

仓库内自检命令(供维护者或本地验证插件行为):

node tools/selftest.mjs
node tools/check-commands.mjs <项目路径>

适用场景与注意

适合:希望在 DSH 会话里把「收尾」制度化、需要自动跑 npm run test / lint 等且愿意接受「三轮全检零问题」门槛的团队或个人。

注意:

结尾

dsh-wrapup-guard 把「任务完成」从一句口头确认,改成带状态机与命令检查的收尾门禁:未修复问题必被打回,连续三轮全面检查通过才放行并通知。若你正在用 DSH 做智能体开发并希望减少「改好了但未验证」的交差,可在 SkillHub 目录页查看条目,并按 README 将 dsh-wrapup-guard 加入 profile 后重启 Harness 试用。

羽毛球分组比赛记分
小程序二维码

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

小夜