dsh-model-logos:给模型选择器配上一枚看得懂的品牌标记

前言

DSH 的模型选择器过去是一份短名单。现在它常常是一片:DeepSeek、GPT、Claude、Gemini、Qwen、GLM、Kimi、豆包、Llama、Mistral,在界面上全部渲染成同样的灰色文字。你要发的那条消息用哪个模型,靠的是逐字读完名字后回忆出来。名字只差一个后缀的两个模型,也很容易点错。

dsh-model-logos 就是为这件事写的:不改变选择器的交互,只把每个模型旁边那格文字换成一枚可辨识的标记,把选择从「回忆」变成「识别」。下面是对这个插件的介绍。

这是什么

dsh-model-logos 是一个 DSH Web 界面插件,作者 Altermoe,MIT 许可证,当前提交版本 0.5.0。它的范围很小:

  • 输入区(composer)的模型按钮、模型选择器顶部和每个选项行,显示当前模型的标记;
  • 设置 → 模型 的提供商行、提供商编辑器标题、模型行,预留并填充品牌标记位;
  • 提供一个模型图标页面和一个图标选择器,按模型修改它当前的标记。

插件不做的一件事是重写选择器本身。点击、搜索、勾选状态、推理强度标签仍归内置组件,插件只重绘标签本身的内容(同一个位置只能放一个标签),因此其中会复现模型名和发布徽标。这是全文唯一的替换点。

目录页把它归在「趣味换装」分类下。

为什么用图标

原来的做法是读文字。一枚标记能在一瞥之下给出答案,和手机桌面不写成一列应用名是同一个理由;更重要的是,名字只差后缀的模型容易点错,一个看错的决定会在你发送消息之前被一枚标记拦住。

插件里还有一个不那么显眼的设计:一个模型可以有两个品牌。 厂商(vendor)是提供它的通道 —— OpenRouter、火山引擎、本地中转;模型(model)是你对话的对象 —— Claude、Qwen、DeepSeek。在聚合器那一行里这是两个不同的答案,所以得到两枚不同的标记,插件也不会让一个冒充另一个。

核心功能

下面按界面位置列出,全部来自 README 的「What you get」一节。

输入区与模型选择器。 模型按钮上是当前模型的标记;选择器顶部是当前模型;每个选项行带自己的标记。标签被重绘而不是包裹,因此插件要复现内置标签上的模型名与发布徽标。点击、搜索、勾选、推理强度标签仍由内置组件处理。

设置 → 模型 的标记位。 每个提供商行和编辑器标题左侧保留 22 px 标记位:官方通道填厂商标记,手写的提供商留空占位,只是对齐。每个模型行开头是 22 px 图标位,模型标记还没解析出来时显示一枚虚线占位,标记出现时名称不会挪动。

带 Logo 的添加提供商下拉框。 替换掉原生的 <select>,带品牌标记;原生 select 仍留在下方作为状态来源。

模型图标页面。 插件自己的设置入口会列出你提供商中的模型,显示它当前的标记,并提供修改入口。

随时可达的选择器。 在设置 → 模型中点某个模型的图标就会打开选择器,模型图标页面按模型打开,所以改掉一次误判是一次点击,不用改配置文件。

图标从哪来

插件先做自动匹配:按模型 id 和名称给出初始标记,再根据提供商兜底。这只是默认值,不是规则,每个模型都可以覆盖:

  • 自动识别 —— 回到自动匹配结果;
  • 不使用图标 —— 这个模型不显示标记;
  • 首字母图标 —— 用名称生成一个确定性的色块,适合本地或小众模型,看起来是有意为之而不是冒充品牌;
  • 厂商图标 —— 公司或渠道标记(Anthropic、Google、Alibaba、ByteDance、OpenRouter 等);
  • 模型图标 —— 模型产品标记(Claude、Gemini、Qwen、豆包、Kimi 等)。

选择器把两组上下排布,同时搜索两组。有些公司和模型共用一枚图形(DeepSeek、Mistral、MiniMax),这类标记放在模型组,官方渠道行复用同一枚 artwork;两者确实不同时 —— Anthropic 对 Claude、Google 对 Gemini、Alibaba 对 Qwen、ByteDance 对豆包 —— 选择器同时提供两枚。组内顺序不是按字母,而是按一份可复现的网络知名度快照,综合 GitHub、npm、Wikipedia、Hugging Face 与 B 站信号。方法与原始数据在 docs/rankings.md。

图标的来源不是手绘:全部是自包含的 24×24 SVG,来自固定版本的 @lobehub/icons-static-svg 1.102.0(MIT)、Simple Icons(CC0)的 Xiaomi,以及取自本应用 Web 前端的 DeepSeek 官方鲸鱼。构建检查会把生成的路径数据与已提交的上游文件逐条比对,改一枚标记只能改它的来源。运行时不会拉取任何东西。

安装与启用

把公开仓库添加到 DSH 配置档:

dsh plugin --profile web add github:Altermoe/dsh-model-logos

源码安装会在本机构建插件(仓库的 prepare 脚本执行 pnpm run build),需要 Node.js ≥ 26.13.0 与 pnpm;首次安装时市场会请求一次构建授权。想跳过构建,从最新发布下载 dsh-model-logos.tgz 后直接加文件:

dsh plugin --profile web add ./dsh-model-logos.tgz

本地检出也可以走插件管理器:

plugin_manager action=install_bundle target=<指向本目录的绝对路径>

然后刷新 Web 界面。插件在「插件」里显示为 Model Logos / 模型 Logo;禁用它会移除全部装饰,页面恢复原样。星标为 0(截至目录页抓取时),说明这是个刚起步的项目,升级与兼容性要靠自己验证。

典型用法

装好之后默认就有东西可看,不需要改配置:打开输入区,当前模型按钮旁就是它的标记;打开设置 → 模型,提供商行和模型行都有图形,添加提供商的下拉框也可以直接靠形状选择。

要改某个模型的标记,点设置 → 模型里那个模型的图标,在选择器里挑一个,或者到「模型图标」页面按模型改。想回到插件自己的判断,选「自动识别」;本地的、没有品牌归属的模型,选「首字母图标」比编一个厂商标记合适;确实不需要标记的,选「不使用图标」。

配置项保存在 DSH 用户设置文档里 —— 配置档的 cordis.patch.yml,和其他偏好放在一起。不放在 localStorage,也不产生网络请求。覆盖项绑定在 provider + model 这一对上,所以两个提供商各服务一个同名模型时,可以显示不同标记。

适用场景与注意

适合谁:模型列表较长、或同时挂了几个聚合器与本地通道,从一堆灰色文字里找模型开始容易点错的 Web 界面使用者。手写的提供商、本地 URL 也会受益,只是没有厂商 Logo 可填。

几条边界是插件自己写明的,使用前值得知道:

  • 厂商 Logo 只属于官方通道。 中转、自建服务器或本地 URL 背后没有厂商品牌,所以不显示厂商 Logo —— 插件明确说编造一个出来就是在撒谎。标记位仍保留并留空,让各行对齐。官方通道全部有标记,冷门通道回退为确定性的字母色块。
  • 没把握的模型不会被留白。 设置行保留 22 px 图标位和虚线占位,一点就打开选择器。
  • 名称始终都在。 每个按钮、每个菜单行仍带着名字,不认标记界面也照样可用。

安装前的常规动作还是要做:这是一个第三方插件,运行时继承当前 DSH 进程权限,源码、package.json 与许可证文本(MIT)建议先自己过一遍再装;插件声明了 cordis.patch.yml 会写入用户设置文档,介意的话先看里面写了什么。此外,图标素材是商标,只是用来标识你实际使用的提供商或模型。

结尾

dsh-model-logos 解决的是界面信息密度问题:把「读完一个名字」压成「认出一枚标记」,代价是一次插件安装和少量配置,禁用即完整还原。它不接管选择逻辑,不产生网络请求,图标全部自包含。也就是说,它能加多少便利,取决于你有多少个模型和多少个聚合器。

  • 社区目录页:https://www.skillhub.cn/plugins/Altermoe/dsh-model-logos
  • 源码与文档:https://github.com/Altermoe/dsh-model-logos
  • 更细的运行时契约与设计取舍见仓库内 docs/architecture.md,与其他 DSH 图标插件的关系见 docs/prior-art.md。
羽毛球分组比赛记分
小程序二维码

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

小夜