DSH-changeproof:確認改動行真的被測試覆蓋

前言

在 DSH 的插件工作流裏,模型完成一次代碼修改後,常見的問題不是“有沒有跑測試”,而是“這次改動是否被測試執行到”。全綠結果可能來自無關測試,也可能只覆蓋了一部分改動行;代碼再次變化後,舊結論也可能仍然留在上下文裏。

DSH-changeproof(apageoflove/dsh-changeproof)針對這個問題提供行級證據:代碼改動後,確認改動的行真的被測試覆蓋到。下面介紹它做什麼、如何安裝,以及如何在 DSH 或獨立 CLI 中使用。

這是什麼

DSH-changeproof 是一個 DeepSeek Harness(DSH)插件,由 Apageoflove 維護,採用 MIT 許可證。它關注“變更證明”:不是簡單報告測試通過,而是覈對本次改動行與測試執行證據。

它適配 Istanbul(vitest/jest)與 coverage.py(pytest)的覆蓋率證據。

核心功能

關聯測試

插件會根據代碼引用關係,找出與本次改動相關的測試。

行級覈對

執行測試後逐行覈對。改動行未被執行到時,插件不予通過,並明確指出未覆蓋的行。

結論過期

證據綁定代碼指紋。代碼一變,舊結論自動失效。

結論狀態

插件使用以下狀態表達結論:

  • VERIFIED:通過
  • PARTIAL:部分覆蓋
  • FAILED:測試失敗
  • STALE:結論過期
  • UNVERIFIED:無有效證據
  • NOT_APPLICABLE:無可驗證內容

底線是:沒有覆蓋證據,或證據與當前代碼不一致,一律不給 VERIFIED

自動驗證

模型修改代碼後,會自動調用 changeproof_verify 驗證,無需手動觸發。

獨立 CLI

插件提供獨立 CLI,不安裝 DSH 也能分析、執行測試和查看結論狀態。

執行安全

因爲插件會執行用戶配置的測試命令,子進程執行做了顯式安全加固,包括:

  • argv-only
  • 環境變量白名單
  • cwd 路徑牢籠
  • 超時進程樹終止
  • 輸出上限

安裝與啓用

部署到 DSH 的前提:

  • Node.js ≥ 24(DSH 要求 ^22.19 || >=24
  • pnpm 11.7
  • Git

package.jsonengines 要求 node >=20.11.0

先準備本地插件目錄,再安裝到 DSH profile:

pnpm dsh plugin --profile web add <插件目錄>

經過上面的步驟後,可以查看配置中是否出現插件:

pnpm dsh --profile web --dump-config | grep changeproof

典型用法

使用 DSH Web 界面

啓動本地 Web 界面:

pnpm dsh web

模型修改代碼後,會調用 changeproof_verify 驗證改動。

使用 headless 命令

設置環境變量:

export DEEPSEEK_API_KEY=sk-xxxxxxxx

然後運行:

pnpm dsh --profile headless "修改 src/calc.ts 的折扣爲 75 折並驗證"

這個示例會要求模型修改指定文件並驗證;驗證過程由插件自動觸發。

使用獨立 CLI

不安裝 DSH 時,可以直接調用插件目錄中的 CLI:

node dist/host/cli.mjs plan --workspace <項目路徑>
node dist/host/cli.mjs verify --workspace <項目路徑> --yes
node dist/host/cli.mjs status --workspace <項目路徑>

plan 用於分析,verify 用於執行測試並生成結論,status 用於查看結論是否仍然有效。

適用場景與注意

適合使用 DSH 做智能體開發、希望把“測試通過”和“改動被驗證”區分開的場景。尤其適合項目已有測試命令,且能產生 Istanbul 或 coverage.py 覆蓋率證據的情況。

注意:

  • 插件會執行用戶配置的測試命令,並以當前 DSH 進程權限運行;安裝前應檢查源碼與許可證。
  • 當前安裝命令使用本地插件目錄佔位符,不等同於可直接執行的遠程包安裝命令。
  • 發佈到 npm 後(暫未發佈),可使用:
pnpm dsh plugin add dsh-changeproof
  • 倉庫資料提到 dsh.so 靜態掃描中的 Critical 被說明爲 Node.js 內置子進程模塊用法;該掃描爲靜態啓發式檢查,非安全審計。

目錄與源碼

社區目錄頁:

https://www.skillhub.cn/plugins/Apageoflove/DSH-changeproof

GitHub 倉庫:

https://github.com/Apageoflove/DSH-changeproof

DSH 社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。

羽毛球分组比赛记分
小程序二维码

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

小夜