dsh-llm-verifier:多候選補丁的驗證、排序與受控應用

前言

給編碼智能體佈置同一條任務,跑一次會得到一個看起來合理的補丁;換一次獨立運行,可能得到更簡單的修法、更好的測試,或者避開一個隱蔽的迴歸。多跑幾個候選不難,難的是用同一把尺子比較它們,並且在比較之前先把明顯過不了測試的候選淘汰掉。

DeepSeek Harness 的理念是「一切皆插件」,這類流程編排正適合做成插件。下面介紹的 dsh-llm-verifier 就把「生成多個候選 → 跑測試篩選 → LLM 排序 → 人工審批後應用」固化成一個工作流。

這是什麼

dsh-llm-verifier 是由 Web0926 維護的 DeepSeek Harness 插件,當前處於 developer preview 階段,許可證爲 MIT。它對同一條編碼任務運行 3 或 5 個候選,每個候選在獨立的 detached Git worktree 中工作;隨後先執行項目自身的確定性驗證,把失敗候選剔除,再對通過者用 llm-verifier 排序。整個過程中,原 checkout 在單獨審批通過之前保持不變。

核心功能

  • Best-of-3 或 Best-of-5:默認 3 個候選,高價值任務可用 5 個。
  • Validation-first 選擇:先跑確定性項目驗證,失敗候選不會進入模型排序。
  • 高效排序:只剩 1 個通過者時按驗證結果直接勝出;2 個通過者用 1 個 pivot;3–5 個用 2 個 pivot。
  • 兩道審批門:候選執行前一道,獲勝補丁應用前另一道。
  • 應用前完整性複查:再次檢查倉庫路徑、base HEAD、乾淨狀態與 winner-patch 的 SHA-256。
  • 可審計產物:報告包含排名、變更文件、耗時、進程狀態、補丁哈希、verifier 請求與 token 用量,併產出 winner.patch。
  • 憑據控制:驗證進程不接收 DeepSeek API key;日誌、錯誤、驗證輸出與文本 diff 按精確憑據值脫敏。
  • 無自動 Git 變更:插件不 commit、push、stash、reset,也不自動應用補丁。

驗證命令支持自動檢測,顯式指定的命令始終優先。省略 validationCommands 時,插件只接受唯一一種可識別的根項目類型:

根目錄標記 命令
package.json、僅一個 JS 包管理器、含 test 腳本 該包管理器的 test 命令
pyproject.toml uv run pytest
Cargo.toml cargo test
go.mod go test ./...
Makefile 且含 test 目標 make test

如果同時命中多種項目類型、存在多個 JS 包管理器,或無法識別出受支持的類型,運行會快速失敗並要求顯式給出命令。

安裝與啓用

前置條件

  • DeepSeek Harness 0.1.0-rc.7
  • Node.js 24(engines 限定 >=24 <25)與 pnpm 11.7.0
  • uv(Python >=3.9,<3.14 由 uv 管理)
  • Git
  • 可通過憑據引用 DEEPSEEK_API_KEY 提供給 Harness 的 DeepSeek 憑據

構建並校驗

插件的分發方式是從源碼構建後的本地路徑安裝。先克隆倉庫,安裝依賴並跑一遍檢查:

git clone https://github.com/Web0926/dsh-llm-verifier.git
cd dsh-llm-verifier

pnpm install --frozen-lockfile
uv sync --frozen --project python
pnpm run check

pnpm run check 會依次執行 typecheck、test 和 build,全部通過說明本地構建可用。

加入 Web profile

在插件目錄內把它加入 Web profile,再用 list 確認:

dsh plugin --profile web add "$(pwd)"
dsh plugin --profile web list

典型用法

發起一次 Best-of-3

在一個乾淨且受信任的目標倉庫中啓動 Harness:

cd /path/to/a/clean-and-trusted-git-repository
dsh --profile web

然後用自然語言請求工具,例如:

Use verified_best_of with 3 candidates to fix the login retry bug and add regression tests.
Run pnpm test for validation. Do not apply the winner yet.

等價的工具輸入是:

{
  "task": "Fix the login retry bug and add regression tests",
  "candidateCount": 3,
  "validationCommands": ["pnpm test"]
}

verified_best_of 的參數中,task 必填,candidateCount 取 3 或 5(默認 3),validationCommands 省略時走自動檢測。運行狀態有 winner_selected、no_winner、failed 三種。工具返回 run ID、狀態、合格候選、排名、報告路徑、token 用量,以及(如有勝者)winner.patch 的本地路徑。

審閱後應用勝者

審閱報告和補丁之後,顯式調用 apply_verified_winner:

{
  "runId": "<runId returned by verified_best_of>"
}

插件會先請求一次單獨審批,通過後應用補丁,並重跑原驗證命令。應用前會再次複查倉庫路徑、base commit 與補丁 SHA-256。

移除插件

不用時可以隨時移除:

dsh plugin --profile web remove dsh-llm-verifier

適用場景與注意

這個插件適合對補丁質量要求較高、願意多花算力換取更穩妥改動的倉庫維護者,尤其是想系統比較多個候選修法的場景。

使用前注意以下幾點:

  • 當前是 developer preview,版本鎖定較緊:DeepSeek Harness 0.1.0-rc.7、llm-verifier 0.2.0、Node.js >=24 <25、pnpm 11.7.0、Python >=3.9,<3.14;平臺僅支持 macOS 和 Linux。
  • 安全邊界明確:公開版本只用於受信任倉庫。驗證命令會在宿主機上執行目標倉庫的代碼,本版本不是容器邊界。
  • 只接受正常、乾淨的 Git 倉庫根;拒絕子模塊、sparse checkout、linked worktree 與未提交更改。
  • 候選編輯位於 $DSH_HOME/llm-verifier/runs/<runId> 下的 detached worktree;候選 Harness 進程使用顯式的 workspace-write 權限模式,不繼承宿主的 DSH_PERMISSION_MODE。
  • 插件以當前 dsh 進程的權限運行,安裝前建議先閱讀源碼與許可證(MIT),確認符合自己的安全要求。

小結

dsh-llm-verifier 把「多跑幾個候選、用測試篩掉不合格的、再用模型排序、最後人工拍板」做成了帶兩道審批門的流程,原 checkout 全程不會被自動改動,產物可審計。項目地址與收錄頁如下:

  • GitHub:https://github.com/Web0926/dsh-llm-verifier
  • 社區目錄收錄頁:https://www.skillhub.cn/plugins/Web0926/dsh-llm-verifier

其中 skillhub.cn 是社區維護的插件目錄站點,與 DeepSeek、幻方沒有官方從屬關係。

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

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

小夜