前言¶
在 DeepSeek Harness(DSH)里接智能体时,常见的一类问题是「执行类幻觉」:模型在回复里声称端口已监听、文件已写入或服务已停止,但本机状态并不如此。再叫一个 LLM 当裁判可以补叙事结论,却对端口、路径、算式等机械事实既慢又可能漏检。下面介绍社区插件 claim-verify-wsc(维护者 borui1757-cmd,分类 admin-security):从 Agent 输出中抽取可核验断言,向操作系统查询真值,不一致时留下可回放记录,可选在流式回复后追加说明或驱动级联换模型。核心路径为零模型调用的纯 Node 实现。
这是什么¶
claim-verify-wsc 是本机状态的「收方员」与「记录仪」——不负责提高模型输出质量,而是让「说的」和「本机做的」尽量对齐。它只覆盖本机可观测域(文件、端口、进程、服务、注册表、计划任务、内存、磁盘等),对讨论、创作、判断类内容不装作能验。与通用事实核查或全量监控不同,README 写明真实语料里可核验句子密度大约 3–8%,属于抽检而非全检。
插件以 DSH bundle 形式挂载在 llm/stream 等钩子上;同一套抽取与真值逻辑也可通过 CLI 与 verifyText API 在 DSH 之外使用。名称中的 wsc 为作者署名。
核心功能¶
断言抽取与程序真值¶
默认核验层不启用第二个模型。对已抽取断言,按类别调用本机真值源,例如:
| 类别 | 真值来源(摘要) |
|---|---|
| 端口 | TCP connect 探活 |
| 路径 | fs.existsSync |
| 进程 PID | process.kill(pid, 0) |
| 文件大小/行数/哈希 | fs.statSync、读文件、sha256 前缀 |
| 服务/注册表/计划任务 | spawnSync('sc'|'reg'|'schtasks', …),带超时与缓存预算 |
| 时间/日期/算式/计数 | 本地时钟、实际计算、目录或 DOM 计数 |
设计原则:取不到真值记为 unknown,不猜测;疑问句、假设句、举例不抽取。高置信类别(端口、路径、时间、日期、算式)可报告;低置信类别(金额、模型名、计数等)在现行策略中多仅写日志,以降低误报。
与 LLM 裁判的分工¶
README 中 2026-11-05 对 26 条构造样本的对比表明:程序真值在机械事实域 P/R/F1 可达 100% 且零次模型调用;叙事类错误条目程序真值召回为 0%,而 deepseek-chat 作裁判在叙事域表现更好。二者互补,而非互相替代。
签名收据与可回放¶
项目强调确定性(纯 Node、零第三方依赖于核心路径)、哈希链与世界线式日志。实验版默认 observe:主要写入 ~/.dsh/dsh-claim-verify/hits.jsonl 等,不默认打断对话;需要向用户展示核验结论时配置 annotate: true。
级联升级(可选,默认关闭)¶
可将「硬不符」作为下一次 agent/request 换更强 provider/model 的触发条件(非重答同一条流式输出)。相关配置示例包括 cascadeEnabled、cascadeProvider、cascadeModel、cascadeMax。
安装与启用¶
本插件为本地 link 型 DSH bundle,README 未提供 dsh plugin add github:… 一类一键命令。按官方步骤操作:
- 将仓库目录放到任意路径,例如
<workspace>/plugins/claim-verify-wsc。 - 在 profile 的
package.json中增加依赖与 bundle 声明:
"dependencies": { "claim-verify-wsc": "link:<插件绝对路径>" },
"dsh": { "profile": { "bundles": [ /* ... */ "claim-verify-wsc" ] } }
- 手工建立
node_modules/claim-verify-wsc指向插件目录的 junction/软链。不要对正在运行的 profile 执行pnpm install(README 记录的踩坑点)。 - 重启 DSH 宿主。
验证加载:查看 ~/.dsh/dsh-claim-verify/loads.jsonl 是否出现 "event":"loaded"。
安装前请自行阅读源码与 MIT 许可证;插件以当前 DSH 进程权限访问本机,属 admin-security 能力,仅在可信环境启用。
典型用法¶
DSH 输出钩子(仓库默认形态)¶
在 finish 前对全文做核验,对不符项追加说明(不覆盖原流式正文)。示意格式:
【核验】本条回复有 1 处断言与实际不符(程序刚跑的,不是模型判断):
- 端口 64164 → DSH 实际端口是 3080
命令行(DSH 外)¶
node bin/claim-verify.mjs "服务 Spooler 已经停止"
node bin/claim-verify.mjs --json "可用内存 99 GB"
echo "端口 3080 在跑" | node bin/claim-verify.mjs
存在硬不符时退出码为 1,可接入 CI 门禁。
程序化 API¶
import { verifyText, renderNote } from 'claim-verify-wsc';
const { claims, checked, bad } = await verifyText(modelOutput, { sessionId: 'x' });
级联配置示例¶
config:
cascadeEnabled: true
cascadeProvider: deepseek-account
cascadeModel: deepseek-flash
cascadeMax: 2
本地自测:npm test(README 称多组测试、零网络零模型);基准复现:node bench/run.mjs。
适用场景与注意¶
适合:任务型 Agent、运维/本机状态核对、需要「零模型成本」核验端口/路径/算式等硬事实、希望保留 hits/收据链以便回放审计的场景。
不适合:指望它评价答案质量、覆盖 creative 输出,或替代人工对业务语义的终审。
务必注意:
- 默认
annotate: false,先观察hits.jsonl再决定是否开口;README 记录过早全量报告时误报比例高。 - README 标明实验性质(曾注
0.5.0-experimental.1行为说明);package.json当前版本为 0.9.53,以仓库为准。 - Windows 上
sc/reg/schtasks等输出在中文系统可能为 GBK,实现需按资料处理编码;spawn 有单次 400ms、每轮最多 3 次等预算。 - 社区目录 skillhub.cn 插件页 与 GitHub 由维护者发布,与 DeepSeek / 幻方无官方从属关系;DSH 生态仍是「一切皆插件」的开放组装。
结尾¶
claim-verify-wsc 把 Agent 里能对照本机核验的断言交给操作系统作答,默认静默记录、可选标注或级联,适合作为 admin-security 向的第二意见层。进一步细节与评测数据见仓库 README 与 eval/、bench/。