前言¶
在 DeepSeek Harness(DSH)里配置了多个 provider/model 路由之后,常见疑问是:实际打到的是不是标称模型、换服务商后行为是否一致、两次采集之间有没有漂移。单靠人工抽几条 prompt 很难形成可复现的审计证据。社区插件 dsh-fingerprint(维护者 Jerry2262,分类:模型推理)把 DSH 已配置的路由当作审计目标,按论文 One Token Is Enough 的 40-cell 单 token 探针 battery 采集指纹记录,并支持任选两条记录做对比;认证与请求路由仍由 DSH 的 llm 服务处理,插件不保存 provider API key。
这是什么¶
dsh-fingerprint 是面向 DSH 的论文协议 LLM 指纹采集与对比插件(npm 包名 dsh-fingerprint,当前版本 0.3.1,MIT 许可)。它在 Web GUI 侧栏提供「LLM 指纹鉴别」面板,同时向 agent 暴露同名 Host 工具;UI 与工具共用一套 Host 服务逻辑。
一条指纹记录对应一次完整采集:40 个 cell(10 个任务 × 4 种语言),每个 cell 默认 30 次重复;插件保存原始响应,计算答案分布、base-2 JSD、分半一致性,并在满足覆盖条件时用判定线 0.280(发布数据中不同模型距离的 1% 分位)给出「看起来是同一个模型 / 看起来不是同一个模型 / 证据不足」的结论。无法关闭 reasoning 的模型会被硬拦截,因为协议需要一次直接的单次 completion。
核心功能¶
采集与对比¶
- 对 DSH 里已配置的 provider/model 路由做协议化探针采集。
- 对比场景包括:同一模型跨服务商、同一路由前后两次采集、同一服务商下不同模型。
- 对比结果包含差异分数、判定线、结论、关系、cell 级差异和警告;低于判定线只表示差异小,不等于 100% 为同一模型。
Web 面板与 Agent 工具¶
面板安装后出现侧栏指纹图标。Agent 可用工具包括:
llm_fingerprint_list_modelsllm_fingerprint_probellm_fingerprint_capturellm_fingerprint_get_recordllm_fingerprint_comparellm_fingerprint_delete_record
协议要点¶
每次请求仅包含论文的 system prompt 与一条 user 探针,不带对话历史、工具或当前会话 system prompt。参数为 temperature=1.0、max_tokens=16,reasoning 关闭。两条记录的分数是在双方有效样本均 ≥10 的 cell 上 base-2 JSD 的平均值;仅当覆盖全部 40 个 cell 且两条记录均为每 cell 30 次重复时才给出判定,否则结论为「证据不足」。在该工作点上,约 1% 的不同模型会低于判定线,约 18% 的同模型比较会高于判定线。
安装与启用¶
环境要求¶
- 启用 Web GUI 的 DSH profile,需
llm、tools、webServer服务。 - DSH
0.2.1系列:engines.dsh为>=0.2.1-rc.2 <0.2.2-0(README 实测0.2.1-rc.2、0.2.1-rc.4)。 - 至少一个能关闭 reasoning(
off/none)或本身不推理的 provider/model。 - Node.js 由 DSH 自带,无需单独安装。
插件以当前 DSH 进程权限运行;安装前建议阅读 GitHub 仓库 源码与 LICENSE、NOTICE.md(提示词与数据归属)。
从 npm 安装¶
把 web 换成实际 profile 名。安装后按 DSH 提示重启或刷新 Web GUI。
dsh plugin --profile web add dsh-fingerprint
从 GitHub 安装¶
dsh plugin --profile web add github:Jerry2262/dsh-fingerprint
典型用法¶
- 打开侧栏「LLM 指纹鉴别」,选择服务商和模型;不能关闭 reasoning 的项会置灰并标注原因。
- 设置每个 cell 的重复次数(默认 30,UI 最低 10),点击「开始采集」。运行中显示进度;完成后显示有效率、分半 JSD、纳入 cell 数。插件卸载或进程重启时,未完成记录标为失败(保留已抓响应),可删除,不会自动续跑。
- 在「对比记录」中选择两条记录,点击「对比记录」。比较方式只有一种,结果会标注两边是否同一目标。
- 行内垃圾桶可删除记录(二次确认);运行中的记录不能删除。
原始响应与指纹默认写入 $DSH_HOME/llm-fingerprint/,也可由插件 row 的 dataDir 覆盖。删除记录会移除该目录下的 meta.json、responses.jsonl、fingerprint.json。
适用场景与注意¶
适合谁: 需要在 DSH 内对「配置的路由实际行为」做可重复审计的开发者;需要跨服务商或跨时间对比同一套探针结果的场景。
限制(来自 README):
- 跨服务商对比受量化、推理实现、system prompt 等影响,是证据而非数学证明。
- 判定线针对当前协议;修改 repetitions、提示词或 reasoning 后需重新校准。
- 无 post-reasoning 指纹模式;只能 reasoning 的模型会被拒绝。
- 插件审计的是 DSH 配置的整条路由;聚合器上游与对方返回的 model 字符串不在
ctx.llm.stream可见范围内。 - 多进程共用
DSH_HOME时,后启动进程可能把另一进程正在运行的记录标为失败。
DSH 生态理念是「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-fingerprint 把论文单 token 探针 battery 落到 DSH 的路由与 Web/agent 入口上,用固定协议、本地落盘和 JSD 对比,把「是不是同一类模型行为」从主观印象变成可复查的记录。更细的算法与兼容性见仓库 docs/DESIGN.md。
- 目录页:https://www.skillhub.cn/plugins/Jerry2262/dsh-fingerprint
- GitHub:https://github.com/Jerry2262/dsh-fingerprint