dsh-model-provider-tag
给 DeepSeek Harness(DSH)的模型名加上供应商标签。
模型目录里经常同时挂着 DeepSeek 官方路由和第三方路由的同一个模型;收起态的模型席只显示
DeepSeek V4.1 Flash,看不出它到底来自官方还是某个供应商。本插件把供应商显示在模型名前面:
收起态 / 输入框模型席: [官方] DeepSeek V4.1 Flash Max
模型菜单(模型行): 模型 [官方] DeepSeek V4.1 Flash ›
第三方路由: [OpenCode Go] DeepSeek V4.1 Flash
- 官方路由(
deepseek-official、deepseek-account)显示细描边的「官方 / Official」标签, 文字跟随界面语言; - 其他供应商显示该路由自己的显示名(
provider.name),用主题信息色的浅色胶囊以拉开对比; - 模型列表里被点开的那一页(已经按供应商分组、带分组标题)保持官方原样,不重复加标签;
- 服务端下发的模型角标(
model.badge)行为保持不变:收起态在名称前、菜单内在名称后。
长这样

说明:这是用 DSH 主题变量与 Tag 组件样式近似渲染的设计预览,方便看清浅色 / 深色下的对比; 真机里显示的就是这个样子(官方 = 细描边「官方」,第三方 = 浅蓝点染胶囊 + 供应商显示名)。
实现方式
只用官方扩展点,不改 DSH 本体:
- 宿主半边(
lib/index.js)是空操作,唯一作用是让本包成为 Cordis 树里的一个条目, 让dsh-client-modules能发现客户端产物; - 客户端半边(
lib/client.js)通过ctx.slots.register注册conversation.input.model.label这个官方 inline 单槽(0.2.2 起提供), 拿到{ provider: { id, name }, model, placement, selected }后渲染标签; - 点击、焦点、搜索、禁用态、无障碍名称仍由官方模型选择控件负责,插件只交付非交互内容;
- 任何一步失败都 fail-open:保持官方默认模型名,不拖累输入区。
安装
在 DSH 里用设置 → 插件 → 添加插件,填本目录的绝对路径,安装后按提示重启或让它热应用。
桌面版也可以在本机用随应用安装的 dsh 命令:
dsh plugin --profile desktop add link:"/Users/kjlamuro/DSH/dsh-model-provider-tag"
卸载:设置里停用并移除本插件,或 dsh plugin --profile desktop remove dsh-model-provider-tag。
GitHub 安装(推荐跨设备)
源码与 Release 都在 https://github.com/kjlamuro/dsh-model-provider-tag:
- 插件面板:设置 → 插件 → 添加插件,填
github:kjlamuro/dsh-model-provider-tag; - CLI:
dsh plugin --profile desktop add github:kjlamuro/dsh-model-provider-tag - 用 Release 里的 tgz(不依赖 git):
dsh plugin --profile desktop add \ https://github.com/kjlamuro/dsh-model-provider-tag/releases/download/v0.1.1/dsh-model-provider-tag-0.1.1.tgz
国内网络访问 github.com 可能较慢或被限流;安装时需要能连上 github.com(必要时给终端/代理开全局或 在插件面板安装时使用可用的网络)。git 安装方式需要本机有
git,Release tgz 方式不需要。已实测:Release tgz 链接在本网络直连即可安装(慢一些,约 30 秒);
github:方式在本网络需要走代理。 两种方式装完都会自动登记为 profile bundle。
换电脑 / 分享给别人
本机现在装的是 link: 依赖(直接指向本目录),只在这台电脑的 desktop profile 里生效;
这个包也还没有发布到 npm。换电脑时插件本体和两处配套配置都要一起带走:
- 插件本体(二选一):
- 直接拷贝整个
dsh-model-provider-tag/目录;或 - 拷贝打包好的
dsh-model-provider-tag-0.1.1.tgz(Release 下载;本机dist/里也有一份) (npm pack --pack-destination dist可重新生成)。
- 直接拷贝整个
- 在新电脑上安装(桌面版;插件面板与 CLI 两种方式都行):
- 插件面板(推荐,能热应用):先打开一次 DSH 让 profile 初始化,然后 设置 → 插件 → 添加插件,填绝对路径——tgz 文件或解压后的目录都可以;安装完成按提示启用。
- CLI:完全退出 DSH 后,用随 Desktop 安装的
dsh命令:
重开 DSH 即可。tgz 已在临时 profile 里实测安装成功(依赖、bundle 选择都会自动登记)。dsh plugin --profile desktop add /绝对路径/dsh-model-provider-tag-0.1.1.tgz
- 配套配置(不迁 profile 就没有;见下一节):
displayName: OpenCode Go这段要加到新电脑~/.dsh/profiles/desktop/cordis.patch.yml的llm-pi-ai条目里,否则标签会显示路由键opencode-go;OPENCODE_GO_API_KEY之类的凭据也要在新电脑配好,否则模型本身调不通。
不要直接拷贝整个
~/.dsh/profiles/desktop:里面有link:路径、pnpm 锁文件和机器相关的node_modules,换机器容易坏。只迁插件 +cordis.patch.yml里的配置片段最稳。
想做到新电脑一条命令安装:
- GitHub(已发布):新电脑插件面板填
github:kjlamuro/dsh-model-provider-tag, 或用上面的 Release tgz 链接; - npm(以后可选):包名
dsh-model-provider-tag目前在 npm 上仍未被占用,npm login && npm publish后,新电脑在插件面板直接填包名即可。
(tgz 的校验值见同级的 dist/SHA256SUMS。)
供应商显示名
第三方路由的名字来自 pi-ai 适配器的 displayName;没写时回退到路由键(例如 opencode-go,
胶囊里就会显得很"机器")。本机 desktop profile 已经给当前路由补好:
- id: llm-pi-ai
name: "@deepseek-ai/dsh-llm-pi-ai"
config:
providers:
opencode-go:
apiKeyEnv: OPENCODE_GO_API_KEY
displayName: OpenCode Go
这个 displayName 同时作用于模型菜单的供应商分组标题和「设置 → 模型」页,所以是全局更名。
以后新增别的供应商,照同样的写法补 displayName 即可;改完保存,profile 热更新会立即生效。
已知限制
/model命令弹窗的模型行使用命令弹窗自己的渲染 API,不经过conversation.input.model.label, 因此不带本标签(那里的行本来也只显示模型名);输入框模型席和收敛态菜单都正常显示。- 收起态的按钮
aria-label/ tooltip 仍只由官方模型名和推理等级组成;标签是视觉增强, 读屏软件听到的仍是官方名称。 - 标签文字跟随
provider.name,所以供应商自己的改名会同步反映,无需更新本插件。
No comments yet. Be the first to write one.