ModelTester:DSH 会话页上的模型结构指纹检测面板

前言

在 DeepSeek Harness(dsh)里对接网关或灰测模型时,界面上的模型名未必等于底层推理栈。开发者往往需要判断:当前会话「像哪家厂商的分词器与对话模板」,以便排查路由、对比 A/B,或向社区提交可复现的泄漏证据。常见做法是手工翻回复、搜特殊 token,或另写脚本直连 API 读 usage——步骤分散,且容易把探针提示词里的 token 误判成模型泄漏。

ModelTester(npm 包名 dsh-modeltester)是 dsh 网页端插件:在会话页右上角挂载一块模型检测面板,用本地、无模型、零网络的结构指纹匹配,回答「当前会话像哪家模型」,并附带可展开的证据账本。面板明确只回答「像谁」,不回答「是谁」。插件由 Yuer6327 维护,前身项目为 NoLetMe(2026-09-25 品牌重构为独立新项目,插件 id io.github.yuer6327.modeltester)。

这是什么

ModelTester 属于 dsh 社区插件生态中的模型推理类工具,对应目录页 SkillHub · ModelTester 与源码仓库 Yuer6327/ModelTester。它不改写宿主 UI、不上传数据,扫描已加载的推理文本(及探针、批量测试产生的输出),对最多 29 家厂商候选做评分排名,并支持探针主动取证与 usage 差分定量指纹。

核心功能

下面按 README 中的分层说明面板能做什么。

归属分析(主视图)

扫描全部已加载推理文本,将命中的结构指纹按权重累加到厂商候选;每条证据经层级与权重校准后,用 noisy-OR 合成 0–100% 的置信度系数。达到「匹配」需至少一条 tier-1 证据、系数 ≥75% 且明显领先第二名;仅有 tier-2/3 时封顶为「疑似」;无厂商证据时显示「未匹配」并列出泄漏物。

证据表版本 ATTRIBUTION_VERSION = 11,主要包括:Anthropic 系 antml 命名空间泄漏、各家官方 tokenizer_config.json 中的对话模板特殊 token、DeepSeek/OpenAI 风格的 fp_… 部署串、社区已证实脏 token、以及未收录泄漏的通用异常探测器等。证据账本去重展示(≤40 条),带首现轮次与上下文样本;支持一键导出 JSON(候选、证据、会话 id),纯本地完成。

插件实现了用户回声抑制与讨论回合抑制:用户消息或探针提示里出现过的 token,在推理中复述不计入泄漏;模板识别类回合中的模板命中整体视为讨论。批量测试的家族扫描只看可见回复。

模板 / 分词器指纹与脏 token

对照各家官方 tokenizer 特殊 token 的 tier-1 泄漏行(实现见仓库 src/client/tokenizers.ts)。脏 token 与未归属泄漏物进入「未归属」账本,便于复制给社区、一行入表并随 ATTRIBUTION_VERSION 递增。

推理健康诊断

当输出为纯文本(无 reasoning 块)或 reasoning 极少时给出告警,证据面不完整时如实提示,不编造统计(src/client/stats.ts)。

探针包与一键全量测试

提供 12 个探针(工具格式诱发、模板识别、glitch 电池、回声、家族 canary、字母计数、知识截止、拒答形状、上下文自述、自然任务、身份格网、系统提示词提取等),按置信度排序。一键测试跑全量电池(含全部探针与 usage 指纹及后续新增项);快速电池仅结构 canary 探针(约 1–2 分钟)。每个探针在独立新会话中执行,以降低顺序污染;跑完后给出猜测与置信度、自报身份(bait 档)与 usage 指纹结论卡,结果跨刷新保留(localStorage + 机制版本校验 + 测量时间戳)。

说明:README 记载,在宿主装配面限制下,0.2.0-rc.2 桌面端后台会话暂采不到文本时,超时项会如实记为 0 字符(详见仓库 docs/attribution-roadmap.md 2026-10-02 记录)。

usage 指纹(面板内)

一键 usage 指纹:用 T0–T9 固定文本逐条新开会话,读取每轮 usage 的 prompt 侧 token,跨会话差分去掉网关包装常量,再与 25 家官方 tokenizer 参照向量做 L1 比对(L1=0 为精确匹配;孪生向量组会并列提示分辨率边界)。支持 wrapper 漂移定向重测。被动面板若拿不到 usage 字段,仓库根目录还提供直连 API 的 fingerprint-drill.mjs 等工具链(见 README「Fertility 指纹工具链」)。

其他面板行为

实时增量折叠流式输出、自动回填完整历史(≤30 页)、按会话本地持久化。归属区附带社区代号→家族对照卡(如 Space Bunny→MiniMax M3.1),仅作参考,不参与本会话评分。

安装与启用

前置条件:dsh CLI ≥ 0.1.0-rc.7,并已建好目标 profile。插件按 dsh 0.1.x 客户端契约构建,逐版本兼容范围以包内 package.json 的 dsh.compatibility.dshReleases 为准。当前 npm 版本(资料截取时)为 0.0.7-alpha.6,许可证 MIT,符合 dsh-std Community v0.15。

推荐:npm 预构建安装(无需 allowBuilds 审批)。将 demo 换成你的 profile 名称:

dsh plugin --profile demo add dsh-modeltester

安装后按 dsh 常规流程启用插件,在网页会话页右上角即可看到模型检测面板。

典型用法

  1. 被动观察:在目标网关会话中正常对话,打开面板查看归属排名与证据账本;需要留档时使用证据包导出 JSON。
  2. 主动探针:在面板中选择单个探针、快速电池或一键全量测试,等待各独立会话完成后查看「猜测 + 置信度」与 usage 指纹卡。
  3. 定量分词器(面板):在支持返回 usage.prompt_tokens 的宿主/API 场景下,使用面板内「usage 指纹」;需要完整 drill 时,在本地配置 API 凭据后按 README 运行,例如:
OPENCODE_ZEN_API_KEY=… node fingerprint-drill.mjs <model> [baseURL] [--batch] [--sibling <model>]…

README 中以 OpenCode Zen 隐身模型 space-bunny-free 为例:被动面无 tier-1 泄漏时显示「未匹配」,usage 差分可与 MiniMax-M3 官方 tokenizer 精确一致(L1=0);该 fertility 能力已于 2026-09-26 起集成进面板。

适用场景与注意

适合谁:在 dsh 里调试多厂商网关、灰测匿名代号模型、或需要可审计的结构证据(而非仅凭文风猜测)的开发者与社区贡献者。

务必知晓:

  • 插件在当前 dsh 进程权限下运行,安装前应自行审阅 GitHub 源码 与 MIT 许可证;社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。
  • 结论基于结构指纹与 usage 定量比对,存在孪生词表、网关包装等分辨率边界;面板不替代服务方声明。
  • 直连 API 的 drill 脚本需自行保管密钥,仅在可信环境运行。

结尾

ModelTester 把「会话像哪家推理栈」收成一块可增量更新的检测面板:归属排名、证据账本、探针电池与 usage 指纹在同一套本地逻辑里完成,适合作为 dsh 日常联调时的结构侧写工具。

  • 目录页:https://www.skillhub.cn/plugins/Yuer6327/ModelTester
  • GitHub:https://github.com/Yuer6327/ModelTester
羽毛球分组比赛记分
小程序二维码

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

Xiaoye