前言¶
在 DeepSeek Harness(DSH)裏讓模型改代碼、跑檢查,常見困境是:模型會宣稱「測試都過了」,你很難區分這是複述還是真跑過;同一會話裏上午驗證通過,下午又改了一堆文件,舊結論卻還在;換一個新會話,也查不到上次驗證做到哪一步。社區插件目錄裏記憶、模型接入、UI 類插件很多,但專門把「驗證」做成一次有據可查操作的並不多——主觀打分類插件還會額外消耗 token。
下面介紹維護者 xwtxbzz 發佈在工作流分類下的 dsh-proof(目錄標識 xwtxbzz/dsh-proof):調用一次 proof,得到真實退出碼、失敗時的輸出尾部,以及工作區指紋;指紋一變,上一次的「通過」會被判爲過期(stale),不再當作完成證據。
這是什麼¶
dsh-proof 是 DSH 服務端插件,只做一件事:把「驗證」變成可復現、可落盤、可跨會話查詢的操作。它不接管上下文、不計費、不改 UI;檢查命令來自項目自身(如 typecheck、lint、test、build),而不是插件自造一套判定標準。
維護者:xwtxbzz。分類:工作流。社區目錄頁:SkillHub - dsh-proof。源碼與文檔:GitHub - xwtxbzz/dsh-proof(安裝說明以目錄頁與倉庫 README 爲準;包尚未發佈到 npm)。
核心功能¶
執行項目檢查並返回結構化結果¶
工具 proof 與斜槓命令 /proof 會按配置或自動探測結果,在工作區裏執行檢查命令。默認動作爲 run:執行並記錄;status 只讀上次結論並判斷是否過期。
返回值形如 { ok, report, data }:report 供人閱讀的多行摘要;data 供程序使用,含每項檢查的 exitCode、timedOut、durationMs、tail,以及指紋與變動文件信息。失敗時 ok 爲 false,需結合失敗項與報錯原文處理,而不是口頭「已通過」。
工作區指紋與 stale¶
有 git 時,指紋由 rev-parse HEAD 與 git status --porcelain 組合後哈希;無 git 時對工作區文件路徑、大小、mtime 做遍歷哈希(會跳過 node_modules、dist 等常見目錄)。上次記錄的指紋與當前不一致時,stale 爲 true:即便上次每項都 exit 0,status 也會把 ok 置爲 false,強制重新跑檢查。插件狀態目錄默認在 ~/.dsh/proof,且會從指紋計算中排除,避免「寫狀態」誤傷指紋。
自動探測與配置¶
/proof init 會探測項目可用檢查並寫出工作區根目錄下的 dsh-proof.json(已存在則拒絕覆蓋)。探測順序包括:package.json 中的 typecheck → lint → test → build(按 lockfile 選包管理器)、Cargo.toml、go.mod、pytest/Makefile 等;探測不到則返回「未驗證」,不會假裝通過。
可選配置鍵(dsh-proof.json 或 cordis.patch.yml 的 config)包括:autoDetect、checks、timeoutMs(默認 600000)、tailLines(默認 30)、workspace、stateDir、policy(爲 true 時在系統提示末尾註入「完成證據」契約,要求模型在宣稱完成前調用 proof)。
安裝與啓用¶
當前推薦從 GitHub 安裝(文檔註明尚未發佈到 npm,勿用未在資料中出現的 dsh plugin add dsh-proof 形式):
dsh plugin --profile desktop add "git+https://github.com/xwtxbzz/dsh-proof.git"
手工掛載時需把包裝進 profile 的 node_modules,並確認 package.json 裏 dsh.profile.bundles 含 "dsh-proof",否則 bundle patch 不會加載。安裝後需重啓 DSH(服務端插件僅在啓動時裝載)。新會話中應能看到斜槓命令 /proof,且啓用 policy 時系統提示末尾會出現完成證據相關契約。
本地開發可參考目錄頁上的 file: 路徑安裝方式;路徑需換成你本機克隆或拷貝的目錄。
典型用法¶
先做初始化,再查看配置,然後執行一遍檢查:
/proof init
/proof config
/proof run
示例輸出形態(目錄頁文檔):彙總通過項數、工作區路徑、指紋(git 短 hash 與時間戳),以及每項名稱、實際命令、耗時與 exit code。改代碼後再查狀態:
/proof status
若工作區自上次驗證後有變動,會提示上一輪驗證已過期,舊結果不算證據。
/proof run 可帶檢查名稱,只跑部分項。模型側在契約開啓時,應在宣稱任務完成前調用 proof;失敗時需引用失敗項與輸出尾部。
dsh-proof.json 示例(/proof init 生成後可手工修改):
{
"checks": [
{ "name": "typecheck", "command": "pnpm run typecheck" },
{ "name": "test", "command": "pnpm run test", "timeoutMs": 900000 }
],
"timeoutMs": 600000,
"tailLines": 30
}
工具 proof 還支持參數:action(run | status)、checks(名稱過濾)、cwd(覆蓋工作區根)。
適用場景與注意¶
適合誰: 在 DSH 裏做代碼修改、希望模型「完成」有客觀依據的開發者;希望複用倉庫已有 npm/Cargo/Go 等腳本而不是另建一套 CI 插件邏輯的團隊。
權限與安全: 插件會執行 dsh-proof.json 或配置裏寫的 shell 命令,行爲與你在該工作區手動跑腳本相當;它以當前 DSH 進程的用戶權限運行。安裝前應閱讀源碼與 MIT 許可證(目錄頁註明),只在受信工作區啓用。文檔說明其不聯網、不改倉庫文件、不提升權限,也不繞過 DSH 審批策略;超時會對進程樹盡力終止(Windows 用 taskkill,Unix 用 SIGKILL),避免會話被掛死。
生態說明: DSH 採用「一切皆插件」的擴展方式;SkillHub 等社區目錄由第三方維護,與 DeepSeek / 幻方無官方從屬關係,本文僅作插件能力說明,而非官方應用商店條目。
排障要點: 斜槓命令裏沒有 /proof 時,檢查 bundles 是否包含 dsh-proof 並重啓 DSH;報「沒有可用的驗證命令」時用 /proof init 或手工配置 checks;若頻繁 stale,檢查是否有產物目錄被納入指紋;臨時關閉契約可設 policy: false,工具與命令仍可用。
結尾¶
dsh-proof 把「跑項目自己的檢查」和「指紋過期則證據失效」綁在一起,適合在 DSH 工作流裏減少「說完成但未驗證」的情況。進一步參數與 market 對比見倉庫內 docs/market-comparison.md。
- 目錄頁:https://www.skillhub.cn/plugins/xwtxbzz/dsh-proof
- GitHub:https://github.com/xwtxbzz/dsh-proof