dsh-protect-tests
在终端中运行以下命令:
dsh plugin install acus9345/dsh-protect-tests
将以下提示词粘贴到 DeepSeek Harness 对话框中:
在 DeepSeek Harness 中运行 dsh plugin install acus9345/dsh-protect-tests 安装本插件;源码仓库为 https://github.com/acus9345/dsh-protect-tests。
插件介绍
让智能体把测试跑绿时,常见做法不是修代码,而是给失败用例加 skip、注释断言,或把精确断言换成几乎不会失败的写法。表面全绿,缺陷仍在。dsh-protect-tests 在测试相关文件的编辑落地前对比新旧文本:若变更会削弱检测,就拒绝并明确告诉模型它试图做了什么。
插件靠可识别的模式工作,而非理解测试语义。它能拦住新增 skip 或 only、一次删掉多个断言或整段用例、恒真断言、注释掉的检查、用空 catch 吞掉失败,以及把严格断言换成更弱等价物;也能识别通过 shell 删除测试文件,或把 package.json 里的 test 脚本改成永远成功。按文件名与目录规则识别测试文件,列表可配置。正常加测、加强断言、重命名和重构 setup 一般不受影响;把多条相似用例收成 parametrize 或 test.each 等合理合并也会放行。
当测试确实过时或断言的就是错误行为时,模型需说明改哪条、为什么,再重复同一操作确认后才会通过;也可设为 ask 模式由你亲自批准。它拦不住把期望值改错或重写逻辑让 bug 不再被覆盖这类语义层面的改动,但能挡住 README 所强调的大多数走捷径行为。适合在 DeepSeek Harness 里让智能体频繁改测试、又希望 diff 里少出现测过了却没测到的团队与个人。
使用场景
- 让智能体修复失败测试时,防止其通过 skip 或弱化断言把套件刷绿
- 在 Harness 中频繁让模型改 tests 或 spec 目录下的文件时,自动拒绝削弱检测的 diff
- 测试确实需要删改时,要求模型说明原因并二次确认,避免正当修改被静默放行
适合人员
- 使用 DeepSeek Harness 并让智能体编写或修改测试的开发者
- 担心 AI 改测试时走捷径、导致 CI 假通过的技术负责人
- 希望在自动化改码与测试可信度之间加一道轻量护栏的团队