中文EN

dsh-model-master

modelnpmMIT

DSH 输入框的模型选择器:保留原生按钮与菜单,只在小下拉列表即将弹出时接管;跨渠道搜索、对任意模型发起真实流式请求测出 TTFT 与 TPS,并可浏览由 OpenRouter 目录构建的最多 100 行榜单,点一行即搜索本机同名渠道。

下载量 / Downloads
542

安装

dsh plugin --profile web add dsh-model-master

沙箱测试

这个插件还没测过。提交测试 →

README

dsh-model-master · DSH 模型选择器 / 模型选择大师(DeepSeek Harness model picker)

<p align="center">

<a href="https://github.com/NEETnina/dsh-model-master/actions/workflows/ci.yml"><img src="https://github.com/NEETnina/dsh-model-master/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>

<a href="https://www.npmjs.com/package/dsh-model-master"><img src="https://img.shields.io/npm/v/dsh-model-master.svg" alt="npm version" /></a>

<a href="https://www.npmjs.com/package/dsh-model-master"><img src="https://img.shields.io/npm/dm/dsh-model-master.svg" alt="npm monthly downloads" /></a>

<a href="https://github.com/NEETnina/dsh-model-master/stargazers"><img src="https://img.shields.io/github/stars/NEETnina/dsh-model-master.svg" alt="GitHub stars" /></a>

<img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License" />

<img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg" alt="Node.js >= 20" />

</p>

A Spotlight-style model switcher for DeepSeek Harness (DSH) — with real streaming speed probes, a live global leaderboard, and a 15-language UI.

把 DSH 原生那个狭小的模型下拉列表,接管成一块可搜索、可测速、可对照全球榜单的居中大面板。你的模型按钮和菜单仍然是原生的 —— 插件只在"小窗口即将弹出"的那一刻无缝接管。

<sub>也被称为 / also found as: DSH 模型选择器 · DSH 模型切换 · DSH 模型测速 · DSH 插件 · DSH model picker · DSH model selector · DSH model switcher · TTFT / TPS benchmark for DSH</sub>

30 秒上手

dsh plugin --profile web add dsh-model-master

装完重启 DSH(或等 HMR 自行重载)即可,无需构建步骤。完整说明见 [安装](#安装)。

<p align="center">

<img src="./icon.svg" width="96" height="96" alt="dsh-model-master icon" />

</p>

<p align="center">

<img src="./assets/screenshot-1.png" width="49%" alt="模型选择面板(深色):渠道分组、真实测速与智能优选" />

<img src="./assets/screenshot-5.png" width="49%" alt="模型选择面板(浅色)" />

</p>

<p align="center">

<img src="./assets/screenshot-2.png" width="49%" alt="TOP100 全球榜单(深色)" />

<img src="./assets/screenshot-6.png" width="49%" alt="TOP100 全球榜单(浅色)" />

</p>

<p align="center">

<img src="./assets/screenshot-3.png" width="49%" alt="15 种界面语言" />

<img src="./assets/screenshot-4.png" width="49%" alt="英文界面" />

</p>

<sub>深浅主题各一张,两种配色下对比度均按同一套令牌缩放。<br />

深/浅两张为同一面板的两套主题,非不同版本。</sub>


目录

  • [它解决什么问题](#它解决什么问题)
  • [功能](#功能)
  • [安装](#安装)
  • [使用](#使用)
  • [设计原则:绝不给假数据](#设计原则绝不给假数据)
  • [配置](#配置)
  • [数据与隐私](#数据与隐私)
  • [HTTP API](#http-api)
  • [开发](#开发)
  • [发布](#发布)
  • [兼容性](#兼容性)
  • [致谢与许可](#致谢与许可)
  • [许可证](#许可证)

它解决什么问题

DSH 原生的模型选择器是一份紧凑的下拉列表:模型一多就难找,看不出哪个快,也没有任何"这个模型到底行不行"的客观参照。

dsh-model-master 补齐三件事:

1. 找得快 — 全局搜索、按渠道分组、以及「⚡ 智能优选」直接给出当前分组里综合最优的那个。

2. 看得见快 — 对任意模型发起真实流式请求,测出 TTFT(首字延迟,ms)与 TPS(生成吞吐,tok/s)。

3. 有参照 — 全球百强榜,数据来自 OpenRouter 模型目录里的 Artificial Analysis 指数与 Design Arena Elo。


功能

接管而不取代

  • 一级模型按钮、原生菜单、推理等级行全部保持原生渲染与原生行为。
  • 只在两种时刻接管:已选模型时点击原生菜单里的「模型」项,或未选模型时点击按钮本身 —— 原生狭小列表换成插件面板,原生菜单自动关闭。
  • 防顶掉:若其它插件占用了原生模型位导致原生按钮消失,输入框工具行会自动出现备用入口;原生恢复后自动隐藏。

真实测速(TTFT / TPS)

  • 服务端发起流式请求并自己计时,浏览器不参与任何数字计算。
  • 支持 ×1 快速与 ×3 稳定(取中位数),把单次测速约 17–22% 的随机波动压下去。
  • 批量测速逐个进行(并发 2,单条超时上限 20s),可随时停止。
  • 失败如实显示失败,并区分超时 / 不可达 / 403 / 配额 / 无密钥等原因。

全球百强榜

  • 最多 100 行,按 Artificial Analysis 智能指数排序,辅以代码 / Agent 指数与 Design Arena Elo。
  • 点任意行 → 跳到本机搜索同名渠道,由你自己挑渠道(不做自动匹配,避免把榜单的模型错配到你本地的另一个渠道)。
  • 每日自动同步,可手动刷新;离线时展示本地缓存并明确标注。

版本更新提示

顶栏有一枚「检查更新」按钮,点一下就会去问 GitHub 有没有新版本。

按下后按钮立刻变成「正在检查更新…」并转圈;请求返回后弹一条提示把结果说清楚:

  • 发现新版本 → 提示「发现新版本 x.y.z,点击查看」,按钮同时变成蓝色胶囊 有新版本 x.y.z,点击直达该 release 页面。
  • 已是最新 → 提示「已是最新版本 x.y.z」。带上版本号是有意的:它证明检查确实跑过并拿到了真实结果,

而不是没反应。

  • 检测不到时如实说检测不到 → 提示「无法确认是否有新版本 · 原因」。这一点是刻意的:hasUpdate 是三态

—— true / false / null(未知),网络不通、GitHub 限流、tag 无法解析时一律是 null,

绝不会把「没查到」显示成「已是最新」。理由和测速那条一样:一句没验证过的「你已经是最新的」,

和编造一个 TPS 数字是同一种谎。

三种情况都必须有可见反馈。 这是 1.1.1 修掉的问题:1.1.0 的按钮确实会发请求、也确实拿到了结果,

但界面上什么都不变 —— 除非恰好有新版本,于是「已是最新」和「无法确认」从用户视角看都是「按钮坏了」。

工程上守两条纪律:

  • 不拖慢面板:GET /update 只读本地缓存并立刻返回,刷新在后台进行;只有你手点按钮

(POST /update/check)才会等待网络。

  • 不滥用配额:结果缓存 6 小时,并发调用共享同一个在途请求,手动检查另有 30 秒冷却 ——

GitHub 未认证接口每小时每 IP 只给 60 次。

15 语言界面

English / 中文 / हिन्दी / Español / Français / العربية / বাংলা / Português / Русский / اردو / Bahasa Indonesia / Deutsch / 日本語 / 한국어 / Türkçe

  • 顶部地球图标切换,选择持久化到 localStorage。
  • 阿拉伯语 / 乌尔都语自动 RTL。

推理档位 FX

  • 官方菜单「推理等级」行滑条:拖动渐变填充、星尘粒子、Max 档紫边辉光。
  • 档位切换瞬间原生芯片上的一次性能量闪动。
  • 尊重 prefers-reduced-motion。

安装

需要 DSH 与 Node.js ≥ 20。

# 装进 web profile(最常用)
dsh plugin --profile web add dsh-model-master

# 或装进你自己创建的 profile
dsh plugin --profile <your-profile> add dsh-model-master

dsh plugin 会把 pnpm 转发到 profile 目录里执行,然后把本包声明的 bundle patch(cordis.patch.yml)应用上去。装完重启 DSH(或让 HMR 自行重载)。

从源码安装

git clone https://github.com/NEETnina/dsh-model-master.git
cd dsh-model-master
npm install
dsh plugin --profile web add .

卸载

dsh plugin --profile web remove dsh-model-master

使用

操作 · 说明

打开面板 · 点输入框的模型按钮;已选模型时点原生菜单里的「模型」

搜索 · 直接输入模型名 / 提供商 / 推理模式

测速单个模型 · 行尾「测」按钮

批量测速 · 工具栏「测速 (N)」

智能优选 · 工具栏「优选 · …」,在当前作用域内挑综合最优

看榜单 · 顶部 TOP100

换语言 / 主题 · 顶栏地球图标 / 明暗图标

面板内键盘:/ 聚焦搜索,Esc 关闭,方向键在列表里移动。


设计原则:绝不给假数据

这个插件在 v1.4 之后做过一次彻底的自我纠正,规则现在写死在代码里:

  • 测速结果只由服务端产出。 浏览器永远不写数字。历史上曾经有过基于模型名猜出来的 "gateway-ping" 估算值,那些条目启动了就会被自动清除(loadResults() 里的 purged 逻辑),旧的写入端点在服务端已经删掉。
  • 失败就是失败。 测速失败不会伪造一个看起来还行的 TPS;榜单抓不到就显示缓存并标注为离线。
  • 榜单只按真实字段建行。 没有任何 benchmark 分数的模型直接不进榜(见 buildLeaderboardFromOpenRouter() 与 tests/leaderboard.test.js)。
  • 可审计。 每次测速结果附带输出样本片段(sample,最多 120 字符)与 token 数来源(tokensFromUsage),以及实际下发的推理档位(reasoningEffort)。
  • 测速不受档位干扰。 探针会通过 prepareCall 的 configure 回调,把推理档位显式钉在该模型最低的一档 —— 否则 DSH 会沿用会话当前档位(常常是 high)

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:2,最后更新 2026-10-31

链接

GitHub · Homepage · npm

同类插件