dsh-testgen:爲 DeepSeek Harness 提供生成、運行並修復單元測試的插件

前言

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 限制。
  • 測試運行器自動檢測 vitestjestmocha
  • 無法識別框架時,使用 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 包會隨其面向的首個穩定 dsh release 發佈;屆時建議固定到 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、你的項目使用 vitestjestmochanode --test

3、你希望測試生成、測試運行和失敗修復都發生在 DSH 會話內。

4、你希望已有測試文件不被覆蓋。

需要注意:

  • dsh-testgen 以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。
  • 它不會覆蓋已有測試文件,而是跳過目標並給出警告。
  • 修復循環受 maxIterations 限制,不是無限重試。
  • 運行環境需要 Node ≥ 22 和 dsh
  • 當前資料中已聲明 @deepseek-ai/cordis ^4.0.1 爲 peer dependency;package.jsonpeerDependencies 段落在已覈實事實中被標註爲截斷,完整列表不應據此推斷。

結尾

dsh-testgen 的價值在於把單元測試放進 DSH 的智能體工作流中:先有 /testgen 命令供人使用,再有 generate_tests 工具供模型調用,並在有界迭代內完成生成、運行和修復。

相關鏈接:

  • GitHub:https://github.com/bujue600-arch/dsh-testgen
  • 目錄頁線索(該 URL 在已覈實事實中標註爲僅來自插件線索,未在所給來源中核實):https://www.skillhub.cn/plugins/bujue600-arch/dsh-testgen
羽毛球分组比赛记分
小程序二维码

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

小夜