前言¶
在 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.json 的 engines 要求 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 / 幻方無官方從屬關係。