前言¶
在 DeepSeek Harness(DSH)或其它編碼智能體宿主裏,一次任務往往伴隨大量「小判斷」:工具輸出要不要進上下文、抓取頁裏有沒有面向模型的指令、回合結束聲稱「已完成」時是否真有驗證、用戶是否真的要求執行某條命令。若全部交給主模型,既慢又佔 token;若全部寫成硬規則,又容易在真實輸入上失效。
dsh-jev-judge(倉庫名 jev-judge,npm 包名 dsh-jev-judge)是維護者 HunterXing 提供的判斷內核(judgment kernel):在固定決策點上,用 bounded question 和較小狀態調用小型 Jev 裁判,主模型保留上下文與 token 做需要推理的工作;每次裁決寫入 ledger,便於從真實會話裏評估是否啓用某決策點。插件在 SkillHub 目錄中歸類爲模型推理。
安裝前建議閱讀 README 中的 scope 說明:該層針對的是上下文預算,不參與編譯、緩存或性能優化,只改變模型所見內容;作者在自用機器上 55 天實測後曾卸載(見倉庫 docs/verification.md 的 R10),更適合宿主上下文確實緊張、或輸出以「掃描」爲主(shell 日誌、自省 dump、瀏覽器快照)的場景。
這是什麼¶
一句話:A judgment kernel for coding agents: routine judgments go to a small Jev judge, and every verdict is recorded in a ledger.
設計思路參考 mu 在 pi 編碼智能體中加載判斷內核的做法;本項目把同一類決策點做成與宿主無關的實現,可在 DSH 插件 bundle、Claude Code / Codex 的 command hooks、OpenCode / Cursor 等通過 MCP 接入的環境運行。當前 npm 版本爲 0.1.4,許可證 MIT,運行需 Node.js >= 20,DSH 版本要求 >=0.2.1-alpha.1 且 <0.3.0-0。
核心功能:決策點與模式¶
內核在若干命名決策點上提問,每個點都有與「未安裝本包時」等價的確定性 fallback;無裁決或裁判超時、不可達、不確定時 fail open,不阻塞智能體循環。
| 決策點 | 問題含義 | 默認模式 |
|---|---|---|
judge.items |
對大量條目(日誌行、文件、發現)問一個 yes/no,而不必讀完全部 | 被調用時開啓 |
tool.admission |
長工具結果裏哪些塊對本任務必要,其餘不進上下文 | active |
tool.injection |
抓取內容裏哪些段落像「給模型的指令」而非讀者材料 | active |
turn.completion |
「已完成」聲稱是否有任何驗證支撐 | active |
turn.continue |
回合是否在已宣佈的下一步前停下,或重複索要已有授權 | active |
memory.capture |
消息是 worth keeping 的糾正,還是下一個任務 | active |
tool.risk |
規則已標記的命令:用戶是否真的要它 | shadow |
tool.risk 故意從 shadow 起步:其裁決只能放寬策略,需憑你自己 ledger 裏的記錄再改爲 active。
設計約束(摘自 README):裁決不會替智能體決定「是否該問用戶」;只改變模型所見或是否繼續工作;裁判讀摘要與元數據而非大塊正文;API 密鑰只存在於你的私有配置,不會進入日誌、ledger 或錯誤信息。
在 DeepSeek Harness 中安裝與啓用¶
DSH 側以插件 bundle 形式加載 cordis.patch.yml。
1、按 profile 添加插件(命令來自官方 README):
dsh plugin --profile <profile> add dsh-jev-judge
dsh --profile <profile> --dump-config # 查看該層是否出現在配置中
2、也可在 Web GUI 的 Settings → Plugins 中,通過 registry 名稱、git 地址或本地路徑安裝。
3、配置 Jev 提供方(私有記錄,格式與 typesafe-ai-jev-skill 一致):
環境變量 JEV_SKILL_CONFIG 默認指向 ~/.config/typesafe-ai-jev-skill.json,示例:
{
"providerName": "your-provider",
"baseUrl": "https://api.your-provider.example",
"model": "jev",
"apiKeyEnv": "JEV_API_KEY",
"protocol": "systemone",
"endpointPath": "v1/systemone",
"authHeader": "Authorization",
"authScheme": "Bearer",
"timeoutSeconds": 30
}
4、內核可選配置位於 ~/.config/jev-judge/kernel.json,例如模式、路由、ledger 路徑:
{
"modes": { "default": "shadow", "tool.admission": "active" },
"routes": { "turn.continue": ["jev"] },
"tiers": ["jev"],
"ledger": { "path": "~/.config/jev-judge/ledger.ndjson", "recordState": false },
"options": { "judge.items": { "maxItems": 20 } },
"timeoutMs": 8000
}
5、安裝後可用 CLI 自檢(不聯網的 verify 只報告契約,不輸出密鑰):
jev-judge verify # offline; reports the contract, never the key
jev-judge doctor # what will happen: judges, modes, ledger
jev-judge ledger # 閱讀 ledger;加 --json 按存儲格式打印
在 DSH 中調整 tool.admission 等選項時,寫入插件行的 config.options,即 profile 的 cordis.patch.yml。例如限定只對部分工具名、超過一定字符才裁剪:
{ "options": { "admission": { "toolNames": ["bash", "mcp__*"], "minChars": 4000 } } }
默認只對「體積非用戶精確指定形狀」的工具輸出做 admission,工具名列表包括 bash、web_fetch、mcp__* 等;read、grep、write 等按智能體請求形狀返回的工具默認整段通過。
其它宿主與 MCP¶
Claude Code / Codex 可用 settings.json / hooks.json 中的 command hooks;OpenCode、Cursor、Cline 等可掛 MCP 服務器:
claude mcp add jev-judge -- npx -y dsh-jev-judge mcp
各宿主的具體配置與「裁決能做什麼」見倉庫 docs/agents.md。
實測與 ledger¶
README 引用 docs/verification.md:在 81 行、含兩處失敗的測試日誌上,live provider 每次判 20 條時,81 行壓縮爲 5 行選中,3047 字節中約 191 字節(6.3%) 需要閱讀,耗時約 7.9 s;同一日誌若問題指向修復而非 triage,選中的是斷言與錯誤文本而非摘要行。
ledger 是決策點從 shadow 升到 active 的依據,而非樂觀配置。
適用場景與注意事項¶
更適合:上下文窗口緊張、工具輸出以日誌/列表/頁面快照爲主、希望用小型模型做高頻二元或選擇類判斷並留痕的團隊或個人。
使用前請知悉:
- 插件以當前 DSH 進程權限運行;安裝前請自行審閱 GitHub 源碼 與 MIT 許可證。
- 社區目錄 SkillHub 插件頁 爲獨立生態站點,與 DeepSeek / 幻方無官方從屬關係;DSH 理念是「一切皆插件」,本文介紹的是社區插件而非官方應用商店條目。
- 無運行時依賴、無構建步驟;本地路徑
dsh plugin add <path>可直接加載 checkout。開發自測:node --test(README 稱 217 個測試、無網絡)。
結尾¶
dsh-jev-judge 把編碼智能體循環裏大量例行判斷從主模型拆到小型 Jev 裁判,並用 ledger 記錄每次裁決,在 bounded state 與 fail open 之間取得可測量的折中。若你的痛點主要是上下文被 shell、抓取和 MCP 輸出撐滿,可先 doctor / verify 配好 provider,再以 shadow 觀察 ledger,再按需打開各決策點的 active。
- 目錄頁:https://www.skillhub.cn/plugins/HunterXing/jev-judge
- 源碼與文檔:https://github.com/HunterXing/jev-judge