前言¶
DeepSeek Harness(DSH)裏,智能體常在同一回合裏多次調用工具,再在最終回覆裏彙總結果。僅靠提示詞要求「如實彙報、數字要有出處」,在複雜任務裏並不穩定——審查模型也可能高置信度放過與工具輸出矛盾的數字,或把已失敗的工具調用寫成成功摘要。下面介紹社區插件 dsh-result-check(維護者 KrimsonSun,分類:工作流):在回合結束之前,用純代碼(不額外調用模型)對照本會話的工具返回與用戶消息,發現明顯不一致時,給模型一次短說明並讓其修正後再給出最終回答。
這是什麼¶
dsh-result-check 是面向 DeepSeek Harness 的插件。README 說明其來源於生物醫學研究智能體 AiScientist 中的同類校驗思路,並以更通用的形式適用於任意 dsh 智能體。當前 package.json 中版本爲 0.2.0,許可證 MIT,要求 dsh 版本 >=0.2.0 <0.3.0。
插件在對話裏以一行提示形式出現,例如 Result check: 2 unsourced numbers;詳細修正說明會作爲附註交給模型。
核心功能¶
插件運行兩項檢查,均爲本地邏輯,不增加一次 LLM 調用。
未報告的 tool 失敗(Unreported tool failure)¶
觸發條件(README 表格):本回閤中有工具調用失敗,且之後沒有成功的後續調用「消化」該失敗,同時最終回答裏也未提及任何失敗。
示例:web_fetch 返回 HTTP 503,回答仍像成功抓取一樣總結頁面內容。
判定上,當 dsh 將結果標爲 error,或 JSON 結果裏 status 屬於配置的失敗值時,視爲失敗;MCP 與多數腳本工具適用。README 特別說明:shell 非零退出碼不算失敗(shell 工具將其作爲正常結果上報);在運行前被拒絕的調用(如參數無效、未知工具、已取消)可通過 ignoreErrorCodes 排除,既不算失敗也不算成功。
無來源數字(Unsourced number)¶
觸發條件:回答中出現的數字,在本會話任意工具輸出、工具參數或用戶消息中,都找不到與其書寫精度一致的匹配;且對回答附近數字做一步算術也無法得到該數(可配置是否允許這種推導)。
示例:工具返回 AC: DDX41 392 / WT 258,回答表格卻寫 469 / 181。
觸發後,模型會收到類似下面的說明(節選):
[result-check] Before you finish, check your answer against this session's tool output. ...
These numbers in your answer appear in no tool output, tool argument or user message of this
session: 469, 181.
For each one, say which output it comes from or how you derived it, or correct it. Do not change
a number that is right.
Then give your final answer again.
設計取向¶
README 寫明:誤報會讓用戶多走一步並學會忽略提示,漏報則與未裝插件時相同,因此在不確定時插件傾向於保持安靜。0.2.0 相對 0.1.0 減少了誤報(例如接受被拒絕的調用、單位換算、一步算術、行號引用等)。對「分析、基準、監控、基於工具輸出的研究」類智能體最契合;通用編碼智能體上 README 稱大約每 50 回合觸發一次左右,且對估算、通識與多步算術的覆蓋有限。
安裝與啓用¶
插件以 dsh profile 方式安裝。以下命令均來自 GitHub README。
從 release 包或本地目錄(需先構建:npm install && npm run build):
dsh plugin --profile <name> add ./dsh-result-check
dsh --profile <name>
從 GitHub 安裝(prepare 會在安裝時構建;pnpm 可能需按 dsh 文檔允許一次腳本):
dsh plugin --profile <name> add github:KrimsonSun/dsh-result-check#<commit>
若使用 dsh 源碼 checkout 快速試用,可用 patch 指向構建產物:
# result-check.yml
- insert:
- id: result-check
name: /absolute/path/to/dsh-result-check/lib/index.js
pnpm dsh web --patch result-check.yml
安裝前建議閱讀倉庫源碼與 MIT 許可證;插件在當前 dsh 進程權限下運行,與所加載的其他插件相同。
配置¶
所有配置項可選。修改時在 profile 的 cordis.patch.yml 中按 id 覆蓋;後層會替換整個 config,因此需寫全你要保留的鍵。
- id: result-check
config:
failureResolvedBy: same-tool
ignoreTools: ['read', 'glob']
| 鍵 | 默認 | 含義 |
|---|---|---|
checkFailures |
true |
是否運行未報告失敗檢查 |
checkNumbers |
true |
是否運行無來源數字檢查 |
numbersNeedToolCall |
true |
僅在本回合調用過工具時檢查數字 |
minIntegerDigits |
3 |
位數少於此的整數不檢查 |
failureStatuses |
含 error、failed、timeout 等 |
JSON status 中視爲失敗的值 |
ignoreTools |
[] |
忽略其失敗的工具名(支持 *) |
ignoreErrorCodes |
含 *CANCELLED*、UNKNOWN_TOOL 等 |
運行前即被拒絕的錯誤碼 |
failureResolvedBy |
any-tool |
失敗何時視爲已處理:any-tool 或 same-tool |
allowDerived |
true |
是否接受一步算術推導出的數字 |
derivedScope |
paragraph |
推導所用數字的範圍:paragraph 或 answer |
skipSubagents |
false |
是否跳過子智能體 |
maxNudgesPerTurn |
1 |
每回合最多打回次數 |
maxListedNumbers |
8 |
單次提示中最多列出的數字個數 |
適用場景與注意¶
更適合:工具返回結構化或數值結果、回答需要忠實複述或彙總這些結果的智能體(分析、監控、科研讀數等)。較弱:大量依賴常識、估算、多步心算或長會話裏短數字(README 離線回放說明:4 位及以上有效數字改動約 85% 可檢出,1–2 位顯著數字易與會話中大量數字「撞車」而漏檢)。
社區目錄 SkillHub 插件頁 與 GitHub 倉庫相互獨立索引;SkillHub 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。倉庫 README 中的回放評估基於 Claude Code 轉錄而非 dsh 現場部署,用於衡量噪聲與覆蓋率,不應理解爲對某一模型的誤報率承諾。
結尾¶
dsh-result-check 在回合結束前用工具輸出約束最終回答:工具失敗必須被如實說明,關鍵數字應能在會話中找到來源或通過明確的一步推導得到。需要安裝命令、配置項與判定細節時,以倉庫 README 爲準。
- 目錄頁:https://www.skillhub.cn/plugins/KrimsonSun/dsh-result-check
- GitHub:https://github.com/KrimsonSun/dsh-result-check