dsh-test-runner:DSH 的結構化測試運行插件

前言

在 DSH 的智能體流程裏,常見動作是“改代碼 → 跑測試 → 根據失敗結果修復”。如果直接讓 agent 用 bash 跑測試,模型會讀到整段終端輸出,失敗用例和錯誤信息容易被淹沒,既增加閱讀成本,也更容易多跑一輪。

dsh-test-runner 解決的是這個具體問題:提供一個名爲 test_run 的工具,自動探測常見測試框架,執行測試,並把失敗摘要解析出來供模型使用。

下面介紹這個插件的功能、安裝方式、典型用法和使用邊界。

這是什麼

dsh-test-runner 是一個 DSH 插件,核心工具是 test_run。它面向 vitest、jest、pytest 和 node:test 等測試框架,完成“探測框架 → 執行測試 → 解析失敗摘要”的結構化流程。

許可證爲 MIT。倉庫地址爲:

https://github.com/suimi8/dsh-test-runner

插件目錄地址爲:

https://www.skillhub.cn/plugins/suimi8/dsh-test-runner

README 與 package.json 未直接聲明維護者,本文只把 suimi8 作爲倉庫和目錄線索列出,不作爲維護者事實展開。

核心功能

test_run 的能力圍繞測試執行和失敗信息抽取展開。

框架自動探測

插件按項目特徵映射框架:

  • package.json 中存在 vitest 或 jest 依賴時,映射爲 vitest 或 jest。
  • package.json 有 scripts.test 時,映射爲 npm-test。
  • 存在 pyproject.toml、pytest.ini 或 conftest.py 時,映射爲 pytest。
  • 存在 test/ 目錄或 *.test.* 文件時,映射爲 node,對應 node:test。

目標過濾

target 用於指定文件、目錄或用例模式。多個目標可以空格分隔。

失敗摘要

測試失敗時,插件提取失敗用例名稱與錯誤信息,減少模型閱讀整段測試輸出的成本。

只重跑失敗

last_failed 用於只重跑上次失敗用例,映射關係爲:

  • vitest:--lastFailed
  • jest:--onlyFailures
  • pytest:--lf

自定義命令

command 可以覆蓋默認命令,適合需要指定包管理器、覆蓋率或特定參數的場景。

超時與取消

timeout_ms 默認 120s。工具取消信號會轉發給子進程。

沙箱合規

插件按調用會話解析 sandboxPolicy,優先級爲“會話覆蓋 > 部署默認”,與 bash 工具使用同一策略。

安裝與啓用

先在本地準備插件目錄,然後執行本地目錄安裝:

dsh plugin --profile web add ./dsh-test-runner

安裝完成後,重啓 dsh web 進程使插件生效:

dsh --profile web

可以在管理面板查看:設置 → 插件。

如果計劃從 GitHub 安裝,資料中註明需要 prepare 腳本和 allowBuilds 放行。已核材料中的 GitHub 安裝命令爲佔位,未確認實際遠程安裝命令,因此本文不給出該命令。

典型用法

模型側可以直接調用 test_run。下面幾組調用覆蓋常見場景。

自動探測框架並跑全部測試:

test_run

只跑單個文件:

test_run(target="src/utils.test.ts")

指定 pytest 框架和單個測試用例:

test_run(framework="pytest", target="tests/test_api.py::test_login")

只重跑上次失敗用例:

test_run(last_failed=true)

用自定義命令覆蓋默認執行命令:

test_run(command="pnpm vitest run --coverage")

適用場景與注意

這個插件適合在 DSH 流程裏需要頻繁跑 Node/JavaScript 或 Python 測試的 agent 場景,尤其是 vitest、jest、pytest、node:test 項目。

使用前建議注意以下邊界:

  • 驗證日期爲 2026-08,實測環境是 Windows + PowerShell 執行器 + node:test。
  • bash 環境下理論可行,但資料中未驗證。
  • go test、cargo test 等未覆蓋,會退化爲原始輸出。
  • 解析器匹配當前主流版本的默認 reporter 輸出;框架升級後輸出格式變化時,會退化爲 exitCode + 輸出尾部。
  • timeout_ms 默認 120s,工具取消信號會轉發給子進程。
  • sandboxPolicy 按調用會話解析,與 bash 工具同一策略。
  • 插件以當前 dsh 進程權限運行。安裝前應檢查源碼、許可證和安裝命令。許可證爲 MIT。

結尾

dsh-test-runner 的價值比較集中:把“跑測試、讀失敗信息”從原始終端輸出變成 test_run 一次調用可完成的結構化步驟,適合嵌入 DSH 的調試與修復流程。

它來自 DSH 插件生態的社區目錄和倉庫;該目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。

插件目錄:

https://www.skillhub.cn/plugins/suimi8/dsh-test-runner

GitHub:

https://github.com/suimi8/dsh-test-runner
羽毛球分组比赛记分
小程序二维码

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

小夜