前言¶
在 DSH 的插件工作流里,模型完成一次代码修改后,常见的问题不是“有没有跑测试”,而是“这次改动是否被测试执行到”。全绿结果可能来自无关测试,也可能只覆盖了一部分改动行;代码再次变化后,旧结论也可能仍然留在上下文里。
DSH-changeproof(apageoflove/dsh-changeproof)针对这个问题提供行级证据:代码改动后,确认改动的行真的被测试覆盖到。下面介绍它做什么、如何安装,以及如何在 DSH 或独立 CLI 中使用。
这是什么¶
DSH-changeproof 是一个 DeepSeek Harness(DSH)插件,由 Apageoflove 维护,采用 MIT 许可证。它关注“变更证明”:不是简单报告测试通过,而是核对本次改动行与测试执行证据。
它适配 Istanbul(vitest/jest)与 coverage.py(pytest)的覆盖率证据。
核心功能¶
关联测试¶
插件会根据代码引用关系,找出与本次改动相关的测试。
行级核对¶
执行测试后逐行核对。改动行未被执行到时,插件不予通过,并明确指出未覆盖的行。
结论过期¶
证据绑定代码指纹。代码一变,旧结论自动失效。
结论状态¶
插件使用以下状态表达结论:
VERIFIED:通过PARTIAL:部分覆盖FAILED:测试失败STALE:结论过期UNVERIFIED:无有效证据NOT_APPLICABLE:无可验证内容
底线是:没有覆盖证据,或证据与当前代码不一致,一律不给 VERIFIED。
自动验证¶
模型修改代码后,会自动调用 changeproof_verify 验证,无需手动触发。
独立 CLI¶
插件提供独立 CLI,不安装 DSH 也能分析、执行测试和查看结论状态。
执行安全¶
因为插件会执行用户配置的测试命令,子进程执行做了显式安全加固,包括:
argv-only- 环境变量白名单
cwd路径牢笼- 超时进程树终止
- 输出上限
安装与启用¶
部署到 DSH 的前提:
- Node.js ≥ 24(DSH 要求
^22.19 || >=24) - pnpm 11.7
- Git
package.json 的 engines 要求 node >=20.11.0。
先准备本地插件目录,再安装到 DSH profile:
pnpm dsh plugin --profile web add <插件目录>
经过上面的步骤后,可以查看配置中是否出现插件:
pnpm dsh --profile web --dump-config | grep changeproof
典型用法¶
使用 DSH Web 界面¶
启动本地 Web 界面:
pnpm dsh web
模型修改代码后,会调用 changeproof_verify 验证改动。
使用 headless 命令¶
设置环境变量:
export DEEPSEEK_API_KEY=sk-xxxxxxxx
然后运行:
pnpm dsh --profile headless "修改 src/calc.ts 的折扣为 75 折并验证"
这个示例会要求模型修改指定文件并验证;验证过程由插件自动触发。
使用独立 CLI¶
不安装 DSH 时,可以直接调用插件目录中的 CLI:
node dist/host/cli.mjs plan --workspace <项目路径>
node dist/host/cli.mjs verify --workspace <项目路径> --yes
node dist/host/cli.mjs status --workspace <项目路径>
plan 用于分析,verify 用于执行测试并生成结论,status 用于查看结论是否仍然有效。
适用场景与注意¶
适合使用 DSH 做智能体开发、希望把“测试通过”和“改动被验证”区分开的场景。尤其适合项目已有测试命令,且能产生 Istanbul 或 coverage.py 覆盖率证据的情况。
注意:
- 插件会执行用户配置的测试命令,并以当前 DSH 进程权限运行;安装前应检查源码与许可证。
- 当前安装命令使用本地插件目录占位符,不等同于可直接执行的远程包安装命令。
- 发布到 npm 后(暂未发布),可使用:
pnpm dsh plugin add dsh-changeproof
- 仓库资料提到 dsh.so 静态扫描中的 Critical 被说明为 Node.js 内置子进程模块用法;该扫描为静态启发式检查,非安全审计。
目录与源码¶
社区目录页:
https://www.skillhub.cn/plugins/Apageoflove/DSH-changeproof
GitHub 仓库:
https://github.com/Apageoflove/DSH-changeproof
DSH 社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。