dsh-modeltester
在 dsh 网页端挂载模型归属面板,用纯本地、零联网的结构指纹匹配(模板特殊 token 泄漏、glitch 金丝雀、tokenizer usage 向量比对)判断当前会话的回答最像 29 家 AI 厂商中的哪一家,每个结论附带可展开的证据账本,另附 12 探针主动取证电池。
安装
dsh plugin --profile web add dsh-modeltester
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
<img width="1917" height="1136" alt="dsh-modeltester" src="https://github.com/user-attachments/assets/e394f5c3-e2f6-4fe4-b741-799c471e3728" />
ModelTester · dsh 模型检测面板
  
ModelTester 是 DeepSeek Harness(dsh)网页端插件:在会话页右上角挂载一块模型检测面板,回答一个问题——
1. 当前会话像哪家模型?(归属分析:29 家厂商候选 + 完整证据账本)
一切判定都是本地、无模型、零网络的结构指纹匹配,且每一条结论都附带可展开的证据与上下文样本。面板回答「像谁」,不回答「是谁」。
前身:NoLetMe v0.3.9,2026-09-25 品牌重构为独立新项目(npmdsh-modeltester,插件 idio.github.yuer6327.modeltester,版本自0.0.1-alpha.1起算)。
功能总览
层 · 回答的问题 · 实现
归属分析(主视图) · 这个会话像哪家? · 29 家厂商候选评分排名 + 证据账本([src/client/attribution.ts](src/client/attribution.ts))
模板 / 分词器指纹 · 服务栈的模板与词表是哪家的? · 各家官方 tokenizer_config 特殊 token 的 tier-1 泄漏行([src/client/tokenizers.ts](src/client/tokenizers.ts))
脏 token 与泄漏物 · 底层漏出了什么工件? · 社区证实清单 + 通用异常探测器:未收录泄漏自动入账本,供一行入表
推理健康诊断 · reasoning 面完整吗? · 纯文本输出(无 reasoning 块)或 reasoning 极少时给出告警——证据面不完整时如实提示,绝不编造统计([src/client/stats.ts](src/client/stats.ts))
探针包 + 一键全量测试 · 怎么主动取证? · 12 个探针(工具格式诱发 / 模板识别 / glitch 电池 / 回声 / 家族 canary(词表挖掘,见下)/ 字母计数 / 知识截止 / 拒答形状(分级双语阶梯) / 上下文自述 / 自然任务 / 身份格网 / 系统提示词提取),按置信度排序;一键测试 = 全量电池(自动包含全部探针 + usage 指纹及未来新增测试项),快速电池 = 仅结构 canary 探针(1–2 分钟);每个探针独立新会话防顺序污染(宿主装配面限制下,0.2.0-rc.2 桌面端后台会话暂采不到文本,超时项如实记 0 字符——见 [docs/attribution-roadmap.md](docs/attribution-roadmap.md) 2026-10-02 记录);跑完给出猜测 + 置信度、自报身份(bait 档)与 usage 指纹两张结论卡;所有结论跨刷新保留(localStorage 持久化 + 机制版本校验 + 测量时间戳)([src/client/batch.ts](src/client/batch.ts))
usage 指纹(面板内) · 分词器定量是哪家? · 一键 usage 指纹:T0–T9 固定文本逐条新开会话,读每轮 usage 的 prompt 侧 token,跨会话差分消掉网关包装常量,对 25 家官方 tokenizer 参照向量做 L1 比对(L1=0 = 精确匹配;孪生向量组如实并列,可混淆对如实提示分辨率边界);wrapper 漂移定向重测——离群维度只重跑对应会话,通常可把漂移校正恢复为精确匹配([src/client/fertility.ts](src/client/fertility.ts))。仓库级 drill 另含词表规模指纹、特殊 token 注入、目录泄露、错误包络、上下文天花板、同网关 A/B 与跨层综合判定(fingerprint-drill.mjs --batch)
面板实时增量折叠流式输出、自动回填完整历史(≤30 页)、按会话本地持久化;不发送任何数据,不改动、不补丁宿主任何既有 UI。
归属分析(主视图)
判定规则:扫描全部已加载推理文本(探针哨兵顺带扫可见回复),把命中的结构指纹按权重累到厂商候选上;同时把每条证据按层级 × 权重校准为独立概率,noisy-OR 合成 0–100% 的置信度系数(tier-1 结构泄漏接近必中,tier-3 轶事级每条 <12%,堆再多也难过半)——候选按系数排名,达到「匹配」需要至少一条 tier-1 证据、系数 ≥75% 且明显领先第二名,仅 tier-2/3 证据封顶「疑似」,只有无厂商证据时显示「未匹配」并列出泄漏物。用户回声抑制:用户消息里出现过的 token(探针提示词本身会列出各家特殊 token),模型思考里再复述不算泄漏;讨论回合抑制:提示词里列了模板 token 的回合(模板识别探针、用户问 token 含义),该回合推理中的模板/异常命中整体视为讨论——包括模型类推写出的派生 token(<|im_start|>→<|im_end|>、[INST]→[/INST])——批量测试的家族扫描同理只看可见回复且跳过模板识别回合。探针哨兵行豁免。证据账本按信号去重(≤40 条),每条带首现轮次与 ±40 字上下文样本。
证据表(ATTRIBUTION_VERSION = 11,[src/client/attribution-signals.ts](src/client/attribution-signals.ts))分层:
层 · 证据 · 厂商 · 权重
1 · 基础设施泄漏 · antml 命名空间(工具调用 XML 漏进推理) · Anthropic 系 · 6
1 · 模板泄漏 · 各家对话模板特殊 token(取自最新代官方 tokenizer_config.json:DeepSeek-V4.1-Flash、Qwen3-2507、GLM-4.6、Kimi-K3、MiniMax-M3、Llama-4、Mistral-Small-3.2、Gemma-3、Ling-1T):MiniMax <mm:think> 与 ]<]image[>[ 括号融合族、Kimi < · end_of_msg · >/<osagent_mode>、GLM < · observation · >/<arg_key>//nothink、DeepSeek 全角 <|Assistant|>、Llama-4 < · header_start · >/< · eot · >、Mistral [TOOL_CALLS]、ChatML < · im_start · > 系、Gemma <start_of_turn>、Ling < · role_end · > · 对应厂商 · 2–6
1 · fp_v4pro_… 部署串(社区观测于灰测会话) · DeepSeek 系 · 5
1 · 其他 fp_… 串(OpenAI 风格 API 指纹) · OpenAI 系 · 4
2 · 轨迹词汇 · 0813 Minimal(we need/let's 且零 let me)与 Standard(let me 沉重)指纹 · DeepSeek 系 · 1(支持性)
2 · 已证实脏 token · EDMFunc、everydaycalculation、Nameeee(厂商未定) · 未归属 · —
2 · 异常探测器 · 未收录 XML 标签、长十六进制串、EDMFunc 样后端标识、退化重复 · 未归属 · —
3 · 风格轶事/探针 · delve 词癖、破折号密度、探针哨兵回声 · 弱支持 · 1
3 · 诊断行(无厂商方向) · glitch 金丝雀(r50k/cl100k 分族,见下)——退化复读指向该血统、干净复读反而排除,方向由人判,不入评分 · 未归属 · —
glitch 金丝雀清单取自公开研究:SolidGoldMagikarp(LessWrong)、arXiv:2404.09894 与 garak 扫描器公开表。在此之上,家族 canary(src/client/canaries.ts,node mine-canaries.mjs 生成)从 25 家官方 tokenizer.json 挖出「仅一家词表才有的单 token」并按病态纹理排序——探针逐行请求复述,正常复述无证据,复读退化(循环/乱码)指向拥有该 token 的家族(canaryEchoOf 计分,进批量聚合);孪生词表组(deepseek≡step、mistral≡nemotron、xiaomi≡baichuan≡skywork、phi≡granite≡olmo)天然无唯一候选,如实留空。
- 模板泄漏行只扫推理:探针回答里引用特殊 token 不触发归属,避免自产假阳性;用户消息里出现过的 token 在推理中复述同样不算(用户回声抑制),列过 token 的讨论回合整体豁免(派生 token 一并压制),探针哨兵行除外;模板识别探针仅供人工判读(末行假 token 是对照组)。
- 置信度系数与排名:面板每行候选显示置信度百分比与原始证据分;独立的结构证据胜过弱证据堆积,共享行(如 DeepSeek/Step 全角帧)由表内低权重体现、不再叠加。批量测试的「猜测 + 置信度」用同一系数合成引擎候选与探针诱发 token。
- 隐身代号对照:归属区附一张社区已定案的代号→家族静态对照卡(Space Bunny→MiniMax M3.1、Ox Alpha→GLM-5.3、Pony→GLM-5 等),纯参考资料,不参与本会话评分——命中代号时用它对照结构排名,而不是替代排名。
- 异常探测器抓的是表里还没有的泄漏物:命中进「未归属」账本,可直接抄给社区、一行入表(
ATTRIBUTION_VERSION随之递增)。 - 证据账本完整列出全部命中信号(层级着色、附上下文样本);证据包导出一键复制 JSON(候选、证据、会话 id),纯本地。
实测案例:opencode-zen space-bunny-free = MiniMax-M3
OpenCode Zen 的官方隐身模型(限时免费、零保留提供商),社区猜测为 MiniMax 新模型。用本插件的探针包直连 API 采集三轮输出跑面板同款代码路径:无任何 tier-1 泄漏、glitch 逐字复读、字母计数答对 22——被动面诚实输出「未匹配」。最终由 fertility 指纹定量定案(见下):五维 usage 差分向量与 MiniMax-M3 官方 tokenizer 精确一致(L1=0),其余 8 家全部偏离(llama 4、deepseek-v4 14、glm 16、ling/qwen 32、gemma 40、mistral 51)。2026-09-26 起该能力已搬进面板:space-bunny-free 实测 9/9 维 L1=0 精确匹配 MiniMax(次近 llama L1=26)。
Fertility 指纹工具链(drill 模式,直连 API)
被动面板拿不到 usage 字段,仓库根另附一套直连 API 的定量工具:
1. [fingerprint-texts.json](fi
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:13,最后更新 2026-10-03