Перейти к основному содержимому
A

local-model-speedtest

atattier/local-model-speedtest

Adds model speed tests to the DSH model picker and, on desktop, a plain-language "explain this error" button on failed turns with a user-selectable explainer model.

Установка

dsh plugin --profile web add github:atattier/local-model-speedtest

README

更好的用户体验(local-model-speedtest)

给 DSH 加三个小功能:

  1. 模型测速:点一下就知道某个模型的首字延迟和生成速度,支持按渠道一次测全组;⚡ 旁边还标出视觉/文本与上下文长度。
  2. 报错大白话解释(仅 DSH 桌面端):对话某一轮失败时,报错旁边多一个「大白话解释」按钮,让模型把原始报错翻译成「原因 + 你可以怎么做」。
  3. 设置面板:设置页「更好的用户体验」按功能分成四张卡片,每个功能都有独立开关;另有检查更新按钮(自动比对 GitHub 最新版本)和点亮 Star 入口。

仓库:https://github.com/atattier/local-model-speedtest

模型选择器里的测速按钮、中文报错、能力标签与分段测速

功能一:模型测速

桌面版 / 网页版

输入框上方模型选择器里,每个模型名旁边多一个 ⚡;每个渠道的分组标题右侧有 测本组 按钮。

  • 点 ⚡ → 真实测一次,名字后显示 1.43s · 66.5 tok/s;等待时旁边会实时走秒
  • 结果用小药丸显示:测过 = 绿色结果,没测过 = 灰色「未测」,失败 = 红色「✗ 原因」
  • 失败原因翻成中文短词:超时 / 没权限 / 限流 / 额度不足 / 无此模型 / 内容太长 / 服务器错 / 网络不通 / 缺 Bun / 空回复;悬停会给出「这是怎么了 + 该怎么办」,原始英文报错附在下面
  • ⚡ 是琥珀色小圆钮:测完弹一下,失败抖一下,测试中会轻轻跳动;组名旁的「测本组」也是圆药丸
  • 测速只取样:拿到几十个 token 就收尾,不再等整段输出;卡住的渠道最多等 15–22 秒
  • ⚡ 右边还会标出模型能力:视觉 / 文本 和上下文长度,例如 视觉 · 1M(鼠标悬停看完整说明)
  • 点分组标题上的「测本组」→ 一次测完同渠道全部模型(并发 3)
  • 模型很多的渠道(如 300+ 个的 OFM)每 20 个模型插一条分隔行,点「⚡ 测 21–40」只测这一段,测的时候按钮上显示进度 测试中 7/20
  • 结果缓存,刷新后还在;1 小时后自动标记为「旧」

点「测本组」后正在测速的状态

手机(dsh-go)

「全部功能」或对话详情页「插件」页签里的 模型测速 面板。

  • 按 provider 分组:▸ 渠道名 16 个模型 · 已测 3 ⚡ 测全部
  • 点组名 → 后台一次测完该组全部模型(并发 3),结果实时刷新,有「停止测速」
  • 点单个模型行 → 只测它自己
  • 输入框上方状态条显示最近一次结果,点一下打开面板
  • 手机 App 的聊天页跑的是网页、不画原生入口,所以在模型菜单每个分组标题上加了 ⚡ 测速 入口,点开分组测速面板。这个入口只在手机端出现,桌面端和网页版没有
  • 模型名旁的 ⚡ 和速度药丸:手机版菜单不渲染插槽时才由插件补一份;插槽已经画了就自动让位,不会出现两个 ⚡

怎么测的

  • 发一句固定短句,要求模型原样复述;普通模型 maxTokens=160,思考模型自动放宽到 384(否则 160 个 token 全被“想”掉,正文根本出不来)
  • 采样式收尾:普通模型拿到 32 个正文 token、思考模型拿到 24 个就停止;首个正文 token 后最多再采 3 秒,避免慢模型拖住界面
  • 首字延迟 = 第一个 token 到达时间 − 请求发出时间
  • 正文首字:思考模型会先输出一段 reasoning,界面优先展示“第一个正文 token”的时间,并在提示里单列「思考 Xs」
  • tok/s = 采样窗口内收到的增量条数 ÷(最后一个 token 时间 − 第一个 token 时间)
  • 渠道上报的 usage.outputTokens 是整段回复的 token 数,而测速只采样几十条增量就收尾;两者取更小的值参与计算,避免数字虚高
  • 首 token 后 150ms 内就收完整段回复(一次性返回、多半命中缓存)时,tok/s 显示「—」并在悬停提示里说明「生成速度无法可靠采样」
  • 思考模型的识别:优先看模型元数据(reasoning / capabilities.reasoning),否则按 id 里的 r1、o1/o3、qwq、reasoner、thinking 等片段判断;超时也相应放宽(普通 22s / 思考 26s),免得卡死的渠道把人晾着

功能二:报错大白话解释(仅桌面端)

对话里出现「本轮运行失败」时,错误标题旁边会多一个 大白话解释 小按钮。

报错处的「大白话解释」面板与免费 AI 截图提示

  • 点一下,让一个模型把原始报错翻译成两行:原因:…… / 你可以:……
  • 解释用哪个模型由你选:面板里按渠道分组列出全部模型;默认自动挑一个免费模型(优先明确标注「限时免费」的,其次免费渠道里的模型),选择会记住
  • 默认模型如果提示「需要 Bun」,说明那个免费车道依赖 Bun:换一个模型,或安装 Bun 后重试
  • 报错原文里的常见 key / token 会先遮掉,再发给所选模型;面板底部也会提示「报错内容会发送给所选模型」
  • 面板底部会提示:也可以直接截图这段报错,发给网页版的免费 AI 问一下,不消耗这里的额度
  • 同一个报错 + 同一个模型只请求一次,结果缓存;点「重新解释」可强制重来
  • 只给 DSH 桌面端(Electron) 加载;网页版和手机端不会出现这个按钮
  • 「任务已停止」「账号已退出」这类非模型错误不显示按钮

功能三:设置面板 + 检查更新

设置页里多一节 更好的用户体验,每个功能一张控制面板,开关改完立即生效、自动保存在本机:

卡片控制项
⚡ 模型测速与能力标签启用模型测速(总开关);分组测试「测本组」;大分组分段测试;每段模型数(10 / 20 / 50);显示视觉/文本与上下文
💬 报错大白话解释显示「大白话解释」按钮(仅桌面端)
🔄 检查更新检查更新按钮与版本信息
⭐ 点亮 Star结合本机测速统计与实时 GitHub Star 数,一键直达仓库点亮星星(顶部标题栏也有快捷按钮)

设置面板:功能开关、检查更新与点亮 Star

  • 总开关关掉后,模型列表恢复原样,不再显示 ⚡、测速药丸和分组按钮;能力标签是同一张卡片里的独立开关,不受总开关影响
  • 分组测试、分段测试是模型测速的子选项,总开关关掉时自动置灰
  • 底部有 恢复默认设置,一键回到全部开启、每段 20 个
  • 检查更新:打开设置就自动检查一次,也可以点 检查更新 强制重查;读取本地 package.json 版本和 GitHub master 上的同名文件比对
  • 已是最新显示绿色「已是最新版本」;有新版本显示版本号、更新命令和「复制」按钮
  • 更新命令形如 git -C "<插件目录>" pull,执行后重启 DSH 即可
  • 检查结果在 host 端缓存 10 分钟;没网或 GitHub 打不开时显示「检查失败:…」,不影响其他功能

接口(桌面端浏览器半身用的)

  • GET /plugins/local-model-speedtest/catalog → {groups:[{provider,name,models:[{id,name,free}]}], models:[...]}
  • POST /plugins/local-model-speedtest/bench → {provider, model},返回 {ok, firstMs, contentFirstMs, reasoningMs, isReasoning, tps, tokens, totalMs}
  • POST /plugins/local-model-speedtest/explain → {provider, model, message, code},返回 {ok, text};provider/model 是解释用的模型
  • POST /plugins/local-model-speedtest/meta → {items:[{provider, model}]},返回每个模型的 {vision, contextWindow}
  • GET /plugins/local-model-speedtest/update → {current, latest, stars, updateAvailable, url, dir, checkedAt, error?}

装 / 卸

从 GitHub 安装(网页版 / 其他命令行 profile):

dsh plugin --profile web add github:atattier/local-model-speedtest

桌面版:在应用内 设置 → 插件 里添加这个 GitHub 地址,或等插件市场上架后直接在市场里安装。桌面 profile 由应用自己管理,应用运行期间不要用命令行改。

装完刷新页面或重启应用;模型选择器里出现 ⚡ 即生效。

卸载:

dsh plugin --profile web remove local-model-speedtest

桌面版在插件页里卸载。

注意

  • 测一次会消耗对应渠道一次额度(取样测速,通常几十个 token);配额耗尽的渠道直接显示失败原因。
  • 分组测速是后台任务,不受单次 60 秒限制;点「停止测速」保留已完成结果。
  • 结果缓存在插件目录的 .cache.json(手机)和浏览器 localStorage(网页)。
  • 缓存结果 1 小时后自动标记为过期:模型名旁的结果会变淡并带「旧」字/时间提示,点 ⚡ 重测即可刷新。
  • 报错解释也会消耗所选模型一次额度(通常几百 tokens);默认用免费模型就是为了少花钱。

Похожие плагины