Repository navigation
Releases
v1.6.0 - Tokenizer-aware fingerprint probe
v1.6.0 — tokenizer-aware fingerprint probe
指纹检测重写。旧实现给模型打一个百分制「行为分」,但实测它对「是不是真模型」没有信息量:deepseek-v4.1-flash 与 gpt-6-astra 都是 6/6;随机数采样在所有试过的模型上都均匀(熵 2.998 bit,100 个数字各约 7 次,任意两次运行之间 JSD 小于 0.001 bit)。
现在改用两个不依赖模型配合的信号:
身份签名
4 项温度 0 偏好探针(数字、颜色、字母、编程语言),答案先归一到同一个词(蓝色 / blue → blue),再合成摘要。已记录的答案不会被覆盖,所以被换掉的模型仍然可见。某一个探针跨运行给出不同答案时,记入 volatile 并退出比对——单项漂移是探针不稳,不是换了模型;两项以上同时变才判「身份已变化」。与本地记录过的所有模型比对,签名相同即同一后端。
分词器向量
4 段固定文本,各读回 prompt token 数,减去成对取得的单字符计数,得到分词器自身的计数(服务端模板被抵消)。与 55 个互异向量比对,它们取自 350 个公开版本(modelprint,MIT)。中转站能转发文本,但复现不了它没跑过的词表。
- 只识别家族,不指认具体型号。
- 测不准时给「最接近 … · N/4 维不同」,并说明差 1 维多半是撞上路由切换。
- 一次运行至少保留 3 维、基线成对读取,否则报「分词器计数不足」而不是给出假向量。
速度
默认快速指纹只跑上面 8 个探针并并发执行,实测 303.5 s → 23 s。工具栏勾选「完整指纹」才额外跑 7 项行为探针与 3 次采样(用于可用性与采样分布检查)。
修掉的三处缺陷
- 分词器探针的回复没有文本,把
meanAnswerBytes拉向 0。 - 稳定行的基线
updatedAt被冻结,按时间淘汰时最常测的模型反而先被清掉。 fileStore的整文件读改写没有串行化,同时测两行会丢一条基线(队列改为按文件路径,而不是按 store 实例)。
验证
npm run check通过,84 项测试全绿,含一个不串行化就必然失败的并发写用例。tk/deepseek-v4.1-flash与tk/deepseek-v4.1-flash-1017实测向量49/53/62/83,匹配 deepseek;tk/gpt-6-astra缺一维时同时命中 openai 与 glm,报「无法判断」而不是硬猜。- 界面验收通过 CDP 实跑:快速指纹「分词器家族 匹配 · 向量 49/53/62/83 · deepseek/deepseek-v4-flash, deepseek/deepseek-v4-pro」「身份签名 身份一致 · 4/4 确定性探针 · 比对探针 3」「同签名模型 tk/deepseek-v4.1-flash」「总耗时 22.72 s」。
v1.5.0 - HTML animation probe
HTML 动画检测
新增第三种测试类型 svg-html:让模型输出完整的单文件 HTML,用内联 SVG 作画,允许 <style> 与 CSS 动画。
旧管道会把回复「改写」成裸 SVG——只截 <svg> 片段、删掉 <style> 与 style="…"、禁止脚本与 CSS 动画。模型靠渐变、滤镜、@keyframes 撑起来的画面因此被削平,看起来像是模型画得差。新管道改成白名单清洗而不是改写:
- 保留
<style>、@keyframes、url(#id)、href="#id" - 移除脚本、iframe/frame/object/embed/foreignObject、外链
<link>/<base>/<image>、on*事件属性 - 产物整段塞进
<iframe sandbox="">预览,不做二次加工,看到的就是模型画出来的东西
站点式四项度量
预览下方给出与公开绘图报告一致的四个徽章:动画(有/无)、配色(去重后的色值数)、画幅溢出(几何越界百分比,>2% 琥珀提示)、外部资源(无/是)。预览高度 34vh、最小 220px。
溢出度量只统计真正会被裁掉的图形:
- 按
<g>与元素自身transform合成后的坐标求包围盒 - 完全落在画布外的碎屑、面积不到画布千分之五的小件忽略
- 铺满画布的底色、贯穿两侧的路面虚线等 full-bleed 元素忽略
- 只擦到边缘、可见面积仍超过 75% 的光晕与软阴影忽略
<defs>/<symbol>等模板与<animateTransform>驱动的位置不参与测量- 预览时根
<svg>的preserveAspectRatio归一为xMidYMid meet,不会被预览框裁掉主体
默认摘要
留空即用内置摘要「鹈鹕骑自行车的二维循环动画」,输入框占位符与说明行都写明了这一点;切到 HTML 模式时会清空自定义模式预填的示例提示词。HTML 模式超时可选 180 / 300 / 600 秒,输出上限 65536 tokens、产物上限 64000 字节。
错误码
OUTPUT_TRUNCATED(思考占满生成预算、没有产出图形)、INVALID_ARTIFACT(没有 SVG)、EXTERNAL_RESOURCE(产物引用了外部资源)、ARTIFACT_LIMIT_EXCEEDED(超过 64000 字节)、STATIC_DRAWING(默认摘要下产物没有动画)。
验证
npm run check通过node --test test/*.test.js→ 38 tests / 38 pass / 0 fail- 新增
test/ui-html-check.mjs:CDP 驱动真实界面,断言四项徽章文案、34vh预览、sandbox=""、鹈鹕占位符与说明行、切模式清空提示词 - 真实模型端到端:
tk/deepseek-v4.1-flash与deepseek-account/deepseek-flash均产出可预览动画,7 份历史产物溢出度量全部归零
v1.4.2 - Subtitle names the intelligence battery
v1.4.2
The panel header only advertised connectivity, behavioral fingerprints and SVG drawing, so the IQ button had no context until someone opened a report.
client.js: the subtitle (zh/en) now reads "检查模型实时连接、行为指纹、18 题智力基准及动态或自定义 SVG 绘图能力" / "Check live connectivity, behavioral fingerprints, an 18-item intelligence battery, and animated or custom SVG generation"client.js: meta description mentions the battery as welllocale/{zh,en}.json: kept in sync with the inline dictionariestest/ui-intelligence-check.mjs: asserts the subtitle mentions the batteryassets/model-probe-iq.png: regenerated from the current UI
Scoring, tiers, the canary item and the 18 probes are untouched. npm run check passes and all 28 tests pass.
Full changelog: v1.4.1...v1.4.2
v1.4.1 - Neutral report wording
v1.4.1
Wording only. The intelligence report no longer names the third-party site whose public report shape its field names follow.
client.js:intelligenceHint(zh/en) drops the site referenceintelligence.js: reportnoteand the source comment use neutral wordinglocale/{zh,en}.json: kept in sync with the inline dictionariesREADME: field names described as a common public report shapeassets/model-probe-iq.png: regenerated from the current UI
Scoring, tiers, the canary item and the 18 probes are untouched. npm run check passes and all 28 tests pass.
Full changelog: v1.4.0...v1.4.1
v1.4.0 - Local intelligence benchmark
更新内容
- 新增每个模型的「IQ」按钮:串行执行 18 道本地加权基准题,覆盖逻辑 4、算术 4、难题 3、代码 2、指令遵循 3、常识 1、陷阱 2。
- 输出 0–100 智力值、旗舰/中端/轻量档位、加权得分、金丝雀题结果、逐题证据与耗时分布(mean / p95)。
- 金丝雀题失败直接判为异常;失败题标记为跳过,分数只按已完成题目计算,界面明确标注「部分题目失败」。
- 检测可随时停止;总超时默认 10 分钟、单题 45 秒,序列执行避免触发上游并发限制。
- 提供商不返回
reasoningTokens时显示思考内容字符数(reasoning_chars),不把有思考但未计量写成 0。 - 智力检测与行为指纹按钮互斥,避免同时占用同一条模型路由。
- 预览服务上游端口改为可配置(
DMP_UPSTREAM_PORT/DMP_UPSTREAM_HOST/DMP_LISTEN_PORT),新增test/sync-locale.mjs同步内联文案键到locale/*.json。
验证
npm run check与 28 项自动化测试通过。- DeepSeek-V4.1-Flash 与 DeepSeek-Flash 端到端跑分均为 18/18、100/100。
- CDP 界面验收覆盖按钮互斥、运行态、停止、逐题详情与截图。
完整说明见 README。
v1.3.0 - Comprehensive model diagnostics
更新内容\n- 插件更名为「模型综合检测」。\n- 新增每个模型的七探针行为指纹检测,包含行为分、样本完整度、延迟统计和 SHA-256 摘要。\n- 新增自定义 SVG 提示词检测,支持静态与动态 SVG。\n- 自定义 SVG 默认启用快速模式,限制 3000 字节和 30 个元素,可切换普通模式。\n- 简短主题自动补充完整 SVG 输出约束,并修复停止与详情展示。\n\n## 验证\n- 21 项自动化测试与语法检查通过。\n- 真实模型连接、指纹、自定义 SVG 快速模式和 UI 预览均完成验收。
v1.2.0 - Animated SVG probes
SVG probes now require visible native SMIL animation. The preview plays looping pelican-and-bicycle animations, reports animation counts, preserves safe animation elements, removes scripts and external resources, and flags static SVG responses as STATIC_SVG. Includes 14 passing tests and real-model frame-change verification.
v1.1.0 - SVG model probes
Adds connection/SVG mode switching, single and batch SVG probes, sanitized static SVG previews, source and request diagnostics, cancellation fixes, and 300-second SVG timeouts. Includes 12 passing tests and real-model UI verification.
模型测速 v1.0.0
首个公开版本。\n\n- 自动读取 DSH 提供商与模型列表\n- 单模型、勾选、筛选和全部模型连接测试\n- 2/4/8 路并发、15/45/90 秒超时与停止测试\n- 首个回复耗时、总耗时、Token 用量与技术详情\n- 复用 Host 凭据,不在浏览器保存密钥\n\n下载附件 dsh-model-probe.zip,解压后作为本地 DSH 插件安装。