前言¶
DeepSeek Harness(DSH)的插件生态以「一切皆插件」为思路。社区目录是独立站点,不代表 DeepSeek 或幻方的官方从属关系,也不等同于官方应用商店。
在 DSH 中写代码时,一个常见问题是:代码已经生成,但测试没有被生成、运行和修复。bujue600-arch/dsh-testgen 面向这个问题,提供一个 /testgen 命令和一个 generate_tests 工具,用来脚手架生成单元测试、调用项目测试运行器,并在有界迭代中修复测试,直到测试通过。
这是什么¶
dsh-testgen 是一个 DeepSeek Harness 插件,由 bujue600-arch 维护,许可证为 MIT。
它的一句话定位是:为 DeepSeek Harness 提供自动化单元测试生成,包括 /testgen 命令和 generate_tests 工具,用于脚手架、运行并修复测试,直到测试通过。
核心功能¶
/testgen 命令¶
/testgen 是面向人的斜杠命令。
已核实能力包括:
- 支持
[options] <file-or-glob>。 - 支持
--json。 - 支持
--help。 - 结果直接渲染在 Web UI 中。
generate_tests 工具¶
generate_tests 是面向模型的工具,供 DSH 中的智能体调用。
已核实能力包括:
- 使用结构化 JSON 输入和输出。
- 支持协作式取消。
- 不会并行运行。
两类生成器¶
dsh-testgen 提供两类生成路径:
1、LLM generator:通过 ctx.llm 流式生成,遵循当前 provider/model,并对源码输入做有界截断。
2、Template generator:从导出符号脚手架生成零依赖冒烟测试,不需要 API key。
生成、运行与修复¶
dsh-testgen 的核心流程是:生成测试 → 运行测试 → 解析失败 → 修复测试。
已核实能力包括:
- 生成 → 运行 → 修复循环。
- 针对不同测试框架做失败解析。
- 修复轮次由
maxIterations限制。 - 测试运行器自动检测
vitest、jest、mocha。 - 无法识别框架时,使用
node --test作为通用回退。
配置与生命周期¶
已核实能力包括:
settings.yaml中存在testgen配置段。- 配置编辑后在下次调用时生效,不需要重启。
- 注册和进行中的运行会随插件 fiber 一起清理。
- 拒绝覆盖用户已有测试。
实现质量¶
已核实事实中还提到:
- TypeScript 端到端实现。
- 使用 schemastery 配置。
- 提供稳定错误码。
- 包含 78 个单元测试,其中包含一次真实端到端运行。
安装与启用¶
使用 dsh-testgen 需要满足以下要求:
- Node ≥ 22。
dsh,即 DeepSeek Harness CLI。
安装命令如下:
dsh plugin --profile web add github:bujue600-arch/dsh-testgen
这条命令将插件安装到 web profile。
已核实事实中还提到:
- npm 包会随其面向的首个稳定
dshrelease 发布;届时建议固定到 release tag。 - 通过 git 或文件方式安装时,
pnpm可能因为 linked dependencies 缺少 peers 而返回非零退出码;这是已记录的预期情况,harness 会在启动时从 profile 自身的 module fallback 解析 peer packages,插件仍可加载。
典型用法¶
斜杠命令¶
下面这些命令来自已核实用法示例:
/testgen src/utils/math.ts
/testgen --runner vitest "src/**/*.ts"
/testgen --generator template --no-run src/app.ts
/testgen --model deepseek-official/deepseek-chat src/parser.ts
模型工具¶
智能体也可以直接调用 generate_tests 工具。示例如下:
generate_tests({ target: "src/utils/math.ts", runner: "vitest", maxIterations: 3 })
生成位置与覆盖策略¶
已核实事实说明:
- 对
src/utils/math.ts,测试文件会落到src/utils/__tests__/math.test.ts。 - 使用
node:test时,文件扩展名为.test.mts。 - 已有测试文件不会被覆盖。
- 如果目标已经存在测试文件,该目标会被跳过,并给出警告。
适用场景与注意¶
适合这些场景:
1、你在使用 DSH,并且希望智能体写代码后继续完成单元测试闭环。
2、你的项目使用 vitest、jest、mocha 或 node --test。
3、你希望测试生成、测试运行和失败修复都发生在 DSH 会话内。
4、你希望已有测试文件不被覆盖。
需要注意:
dsh-testgen以当前dsh进程权限运行,安装前应检查源码与许可证。- 它不会覆盖已有测试文件,而是跳过目标并给出警告。
- 修复循环受
maxIterations限制,不是无限重试。 - 运行环境需要 Node ≥ 22 和
dsh。 - 当前资料中已声明
@deepseek-ai/cordis ^4.0.1为 peer dependency;package.json的peerDependencies段落在已核实事实中被标注为截断,完整列表不应据此推断。
结尾¶
dsh-testgen 的价值在于把单元测试放进 DSH 的智能体工作流中:先有 /testgen 命令供人使用,再有 generate_tests 工具供模型调用,并在有界迭代内完成生成、运行和修复。
相关链接:
- GitHub:https://github.com/bujue600-arch/dsh-testgen
- 目录页线索(该 URL 在已核实事实中标注为仅来自插件线索,未在所给来源中核实):https://www.skillhub.cn/plugins/bujue600-arch/dsh-testgen