前言¶
在 DeepSeek Harness(DSH)里,「设置 → 模型」会列出各厂商及其模型目录,Composer 对话框的模型选择器也依赖同一份目录。当厂商或模型条目很多时,你往往只想在选择器里隐藏一部分,而不是删掉厂商配置或改路由。DSH 本体没有为「仅不出现在选择器里」提供细粒度开关;社区插件 dsh-model-switches(维护者 qzwjer,分类:模型推理)在模型页增加两级使能开关,关闭后对应条目不再被提供,已运行会话与路由逻辑不受影响。
这是什么¶
dsh-model-switches 是 DeepSeek Harness 插件:在 Composer 模型选择器所依赖的目录层面,按厂商、按单模型提供开关。关闭某个厂商后,该厂商整组从选择器消失;在「编辑 → 自定义设置 → 模型目录」里可逐个关闭某个模型,同厂商其它模型仍可见。配置写入当前 profile 的 cordis.patch.yml,切换后下一次打开模型选择器即生效,无需重启 DSH。
仓库与目录:
- GitHub:https://github.com/qzwjer/dsh-model-switches
- 社区目录:https://www.skillhub.cn/plugins/qzwjer/dsh-model-switches
核心功能¶
厂商级开关¶
位置:设置 → 模型,每张厂商卡片右上角,与「编辑 / 删除」同一行末尾。
关闭后整个厂商分组从模型选择器消失(Host 侧对被关闭的 provider 在 LlmRuntime.listModels() 上返回空列表,buildModelCatalog() 会丢弃空分组)。
模型级开关¶
位置:编辑 → 自定义设置 → 模型目录,每个模型行右侧。
关闭后仅该模型不再出现在选择器里,同厂商其它模型不受影响。
作用范围与持久化¶
| 项 | 行为 |
|---|---|
| 目录与选择 | 仅影响模型目录与选择器;已选中该模型、正在运行的会话不会被中断 |
| 持久化 | 写入当前 profile 的 cordis.patch.yml,重启后仍在 |
| 生效时机 | 即时;切换后下一次打开模型选择器即生效 |
两级开关相互独立:厂商开关控制整组;模型开关控制单条。若把某厂商的全部模型逐个关掉,会被 host 忽略(避免厂商分组静默变空);要整组隐藏应使用厂商开关。
工作原理(概要)¶
Host 在 LlmRuntime.listModels() 上安装过滤器;选择校验(modelAvailable)同样走 listModels,被隐藏的模型也无法被新选中。客户端通过 settings.models.provider-card 等扩展位,用 portal 将开关挂到卡片操作行与模型行(Models 页没有专用操作插槽,实现依赖 DOM 结构定位,详见仓库 README)。
安装与启用¶
DSH 要求 engines.dsh 为 >=0.2.0 <0.3.0;README 记载已在 @deepseek-ai/dsh 0.2.1-rc.2 上验证。版本不匹配时,profile 启动会拒绝并提示,而非静默失效。
从 GitHub 安装(推荐):
dsh plugin --profile <profile> add github:qzwjer/dsh-model-switches
或使用本地打包产物 .tgz:
dsh plugin --profile <profile> add <path-to-tgz>
换机安装只需拷贝 .tgz,步骤见仓库内 INSTALL-other-machine.md。
注意:
- 必须用 tgz 或 仓库地址 安装,不要用
link:(会导致@deepseek-ai/schemastery解析失败)。 - 同版本号重装不会刷新内容(pnpm 缓存),升级需改
package.json的version后重新add。
卸载:
dsh plugin --profile <profile> remove dsh-model-switches
若 cordis.patch.yml 残留 model-visibility 相关行,可手动删除。
典型用法¶
- 安装插件到目标 profile(将
<profile>换成你的 profile 名,例如desktop)。 - 打开 DSH 设置 → 模型。
- 在需要隐藏的厂商卡片上关闭厂商级开关,该厂商整组从 Composer 模型选择器消失。
- 若只需隐藏个别模型:点该厂商 编辑 → 自定义设置 → 模型目录,关闭对应模型行右侧开关。
- 打开 Composer 模型选择器确认列表已更新;正在使用被隐藏模型的会话不会被插件主动中断。
适用场景与注意¶
适合谁:需要在 DSH 里精简模型选择器、按厂商或单模型临时「下架」展示,又不想动厂商 API 配置或会话路由的开发者。
已知限制:关闭某个厂商时,若某会话当前正选用该厂商的模型,该会话输入框会变灰,直到切换到其它模型。这是目录过滤后客户端用目录成员判断 routable 的结果,开关旁提示文案已说明。
安全与许可:插件在 DSH 进程权限下运行;安装前建议阅读仓库源码与许可证(MIT)。社区目录站点与 DeepSeek / 幻方无官方从属关系,插件来自社区维护者 qzwjer。
若未来 DSH 变更 settings.describe / settings.mutate、settings.models.provider-card 或 LlmRuntime.listModels 等握手点,插件可能退化为「开关不出现」或「开关无效」,README 说明不会损坏数据。
结尾¶
dsh-model-switches 在「设置 → 模型」提供厂商级与模型级使能开关,只改选择器可见性,不碰路由、不中断已运行会话。安装与卸载使用标准 dsh plugin 命令;细节与兼容性以 GitHub README 为准。