前言¶
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