dsh-test-autofix

DSH PLUGIN会话与消息

仓库 1250589385/dsh-test-autofix

会话与消息 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

DSH 测试自动修复:给 agent 一个 run_tests 工具,跑测试并把结构化失败(文件/行号/断言)直接交给它修复。自动识别 pytest / jest / vitest / cargo / go / npm,Windows 中文断言不乱码,同一失败反复出现时自动停止。

一句话选型结论

按资料字段整理

dsh-test-autofix 是会话与消息类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类会话与消息 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-23 创建于 2026-10-19
README 10.1 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:1250589385/dsh-test-autofix
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注

适用场景

终端命令文件读写

上游标签

deepseekdeepseek-harnessdeepseek-harness-plugindeepseek-harness-pluginsdshdsh-plugindsh-plugin-desktopdsh-plugin-marketdsh-pluginsdsharpplustesttestingtesting-tools

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在会话与消息场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-test-autofix当前 L5 · 运行验证通过 低风险 0 未标注 有
dsh-desktop L3 · 安装规范通过 低风险 3.0 万 未标注 无
openpets L4 · 沙盒安装通过 低风险 1,274 未标注 有
deeptide L4 · 沙盒安装通过 低风险 1,104 0.1.1-rc.2 有
jingyun-dsh L3 · 安装规范通过 低风险 1,004 未标注 有
study-mate 未做沙盒验证 未标注 856 未标注 无

仓库档案

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方1250589385仓库 dsh-test-autofix · 默认分支 main
分类会话与消息desktop
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-19 · 2026-10-23最后推送 2026-10-23
本站收录2026-10-30首次进入本站目录的时间

README 全文

10.1 KB
作者原文,中文版优先;只做安全转义,不改内容

DSH 测试自动修复(DSH Test AutoFix)

> 给 agent 一个 run_tests 工具:跑测试 → 结构化提取失败 → 精准告诉它「哪个文件、哪一行、什么断言挂了」→ 它直接进修复循环。

其他 AI 编码工具早就有这个能力,DSH 生态此前没有:

工具 能力
Aider --test-cmd / --auto-test,改完自动跑测试并修复
Cline 「Run tests, have the agent fix failures, and set a timeout」
Cursor Automations:「detect and fix bugs, and generate tests」
DSH(本插件之前) ❌ 790 个第三方插件中,测试修复类命中 0

和其他插件的关系

生态里有一个名字相近的包,这里说明区别,避免装重复:

dsh-test-autofix(本插件) @mkaliezz/dsh-test-runner
暴露形式 工具 run_tests(agent 自主调用) 斜杠命令 /test
是否真的跑测试 ✅ 内置执行,自动探测框架与解释器 ❌ 需要使用者通过插件 config 注入 run 适配器,默认不可用
输出 结构化失败 + 文件/行号 + 注入对话的修复上下文 规范化后的摘要 JSON
循环防护 ✅ 同一失败重复出现时停止 无

两者不冲突(工具 vs 命令,命名空间不同),可以共存。若只想要「解析自己跑出的测试输出」,
用那个;若想让 agent 自己跑、自己看、自己修,用本插件。


它解决什么

让 agent「跑测试、自己修」听起来很简单,但直接 bash npm test 有两个致命问题:

  1. 输出太长 —— 一个失败测试的完整 traceback 可能几百行,全塞给模型是在烧 token
  2. 模型要自己找重点 —— 从几千行输出里定位「哪个断言失败了」,容易看漏

本插件把这一步做成结构化的:

{
"status": "failed",
"framework": "pytest",
"passed": 2,
"failed": 1,
"failures": [
{
"file": "tests/test_math.py",
"test": "test_divide",
"line": 12,
"message": "ZeroDivisionError: division by zero",
"detail": "def test_divide():\n>       assert divide(1, 0) == 0\nE       ZeroDivisionError: division by zero"
}
]
}

模型拿到的是精准的失败点,不是几千行日志。


特性

自动识别测试框架

项目特征 使用
pyproject.toml / pytest.ini / setup.cfg / tox.ini pytest(自动挑选解释器)
Cargo.toml cargo test
go.mod go test ./...
package.json + vitest 依赖 vitest(见下方启动器探测)
package.json + jest 依赖 jest(见下方启动器探测)
package.json + test 脚本 npm test

也可以用 framework 参数强制指定。

Node 项目的启动器探测

npx 不是必然存在的——有的机器只装了 pnpm(DSH 自带运行时就是这样),
直接调用会报 npx: not found。因此按可用性依次选择:

  1. node_modules/.bin/ —— 项目自己的 runner shim,不需要包管理器
  2. npx
  3. pnpm exec
  4. yarn
  5. npm test —— 项目自己的脚本

解析到降级方案时会在结果的 notes 里说明。

pytest 的解释器探测

裸 python / pytest 经常不是项目实际使用的解释器 —— Windows 上系统 Python 可能遮蔽虚拟环境,而 DSH 自带运行时又不在 PATH 上。用错解释器会报 No module named pytest,看起来像测试失败。

因此插件会按优先级探测,第一个能 import pytest 的胜出:

  1. 项目虚拟环境(.venv / venv / env)
  2. 环境变量 DSH_PYTHON 指定的解释器
  3. PATH 上的 python
  4. PATH 上的 python3
  5. Windows 的 py -3 启动器

全部失败时会明确报出「试过哪些解释器」,而不是把它当成测试失败。

中文断言不乱码

Windows 下 Python 子进程默认输出系统代码页(中文系统是 GBK)。按 UTF-8 解码会把
中文断言变成乱码,正好毁掉这个工具要呈现的信息。插件做两件事:

  1. 给子进程注入 PYTHONIOENCODING=utf-8 / PYTHONUTF8=1,强制输出 UTF-8
  2. 解码时先严格按 UTF-8,失败再回退 GBK / 系统编码(lib/decode.js)

结构化解析

已支持并经过测试的解析器:

  • pytest —— FAILED path::test + 回溯定位断言上下文
  • jest / vitest —— ● suite › test 块,提取 Expected / Received
  • cargo —— ---- test stdout ---- 块,提取 panic 位置
  • go —— --- FAIL: TestX + 缩进断言行

每个失败都带文件路径 + 行号 + 断言信息,而不是一整坨输出。

死循环防护

如果同一个失败反复出现,说明模型在打转。插件会给失败算一个签名(文件 + 测试名 + 错误信息,刻意忽略行号 —— 因为修复通常会移动行号,算作新失败就失去防护意义),同一个签名超过阈值就返回 status: "loop" 并明确告知:

> This identical failure has now happened 3 times. Stop editing and report the blocker to the user instead of retrying.

这样避免「改一下、还是错、再改一下」无限烧钱。

省 token

  • 失败详情每个最多 14 行
  • 最多返回 20 个失败
  • 通过时不返回原始输出
  • 失败时只给最后 40 行原始输出作兜底

安装

> 命令里的 <你的profile> 换成你自己的 profile 名。 不确定就查一下:
> 环境变量 $env:DSH_PROFILE 直接给出当前值;桌面端常见 desktop,Web 端常见 web。

方式一:从 npm 安装(推荐)

dsh plugin --profile <你的profile> add dsh-test-autofix

> --profile 是必填的,省略会报 required option '--profile ' not specified。
> 包名全小写(npm 包名规范);仓库名 DSH-Test-Autofix 只是 GitHub 上的地址。

方式二:从 GitHub 仓库安装

dsh plugin --profile <你的profile> add github:1250589385/dsh-test-autofix

方式三:从源码目录安装(开发用,改代码即时生效)

填这个目录的真实路径(反斜杠或正斜杠都可以):

# Windows
dsh plugin --profile desktop add D:\你的路径\DSH-Test-Autofix

# macOS / Linux
dsh plugin --profile web add /home/you/DSH-Test-Autofix

方式四:在 DSH 网页界面的安装框里装

网页版 DSH 的「添加插件」对话框只要包名,不要整条命令:

输入框里填 结果
dsh-test-autofix ✅ 正确
dsh plugin --profile desktop add dsh-test-autofix ❌ 报 not a package name the registry accepts

意思是:只把命令最后面那一段(包名)填进去。Git 地址和本地绝对路径也可以直接填在同一个框里。

装完重启 DSH,agent 就能看到 run_tests 工具。


使用

模型可以直接调用:

run_tests()                          # 自动识别并跑全部测试
run_tests(framework="pytest")        # 强制用 pytest
run_tests(path_filter="test_math")   # 只跑匹配的测试
run_tests(timeout_ms=60000)          # 60 秒超时

也可以直接对模型说:「跑一下测试,把失败的修好」——它就会用这个工具。


配置

在 profile 的 cordis.patch.yml 里覆盖:

- id: test-autofix
name: DSH-Test-Autofix
config:
repeatLimit: 2      # 同一失败重复几次算循环(默认 2)
timeoutMs: 300000   # 默认超时 5 分钟

实现说明(给开发者)

  • 零依赖:通过调用方自己的 ctx.tools.register 注册普通对象定义,不 import 任何 @deepseek-ai/* 值,因此无需 peerDependencies
  • Host 服务通过 ctx.get(...) 获取:用 subprocess 执行命令(复用官方的凭据擦除、输出溢出处理、进程树终止)
  • 循环状态按 session 隔离:存在插件闭包里,卸载插件即清除,多会话互不干扰
  • 失败不会污染回合:参数错误、找不到 runner 都返回结构化结果和 notes,不抛异常

边界与已知限制

完整清单见文末 已知限制。


测试

node test/parsers.test.js        # 27 个:四个框架的解析、签名、探测
node test/real-output.test.js    # 14 个:真实 pytest 输出回归
node test/hard-mode.test.js      # 11 个:中文/参数化/嵌套类/批量失败
node test/e2e.test.js    # 13 个:完整调用链(失败/循环/通过)
node test/verify-installed.mjs <安装目录>  # 8 个:验证发布包能加载

共 65 + 8 个用例。

real-output.test.js 和 hard-mode.test.js 用的是本机真实抓取的输出,
它们存在的原因很实际——初版有两个 bug 只有真实输出才能暴露:

  1. 区块错配:两个测试失败时,每个失败都拿到了对方的 traceback
  2. 中文乱码:Windows 下 GBK 输出按 UTF-8 解码,中文断言全变成问号

合成的单失败样例永远发现不了这两个问题。

verify-installed.mjs 验证的是打包后的副本能否运行。它存在的理由同样具体:
曾有版本的 files 字段漏掉了 lib/decode.js,装出来的包会在加载时崩溃。


已知限制

  • 解析器依赖各框架的默认输出格式;自定义 reporter / 格式化插件可能让解析失效,此时回退到 raw_tail
  • 只处理测试框架,不含 lint / typecheck(可用 path_filter 或另建工具)
  • 循环签名忽略行号是有意取舍:修复通常移动行号,算作新失败就失去防护意义
  • pytest 解释器探测与 Node 启动器探测都是启发式的;特殊部署可用 DSH_PYTHON 显式指定解释器
  • 嵌套测试类的显示名取决于 pytest 版本
  • 单个失败的详情最多 16 行,最多返回 20 条失败;超出部分需要缩小 path_filter 再跑

许可

MIT

常见问题

6 问
答案由本站依据条目字段整理,不引用上游原文
dsh-test-autofix 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:1250589385/dsh-test-autofix` 即可。

dsh-test-autofix 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-test-autofix 安全吗?

低风险。

dsh-test-autofix 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-test-autofix 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

会话与消息
按星标排序,可作替代方案

dsh-desktop

dsh-desktop

为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。

L3 · 安装规范通过 3.0 万 星

openpets

openpets

L4 · 沙盒安装通过 1,274 星

deeptide

deeptide

L4 · 沙盒安装通过 1,104 星

jingyun-dsh

jingyun-dsh

井云 DSH 客户端插件,为 DeepSeek Harness 注入会员登录、订阅支付、算力管控与应用市场,让智能体和技能快速变成可交易商品

L3 · 安装规范通过 1,004 星

study-mate

study-mate

StudyMate 是 DSH 的「学习模式」预设与技能包,为数学、计算机科目定制学习路线、讲解课件与练习评估,跨科目共享记忆。

未标注验证等级 856 星

1250589385 的其它插件

2 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。