dsh-result-check:回合结束前用工具输出核对最终回答

前言

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
羽毛球分组比赛记分
小程序二维码

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

小夜