dsh-model-toggle:在 DSH 设置页按模型隐藏与恢复

前言

在 DeepSeek Harness(DSH)里,llm-pi-ai 会为每个自定义提供商维护一份显式 models 数组;对话底部的模型选择器读的就是这份列表。提供商一多、模型一多,选择器里会出现大量暂时用不到的条目,只能在一长串名字里找。若直接改 YAML 删掉某条模型,既要动配置、又要记原条目长什么样,恢复也不方便。下面介绍的 dsh-model-toggle(维护者 wangnian886)在 设置 → 模型 页底部增加「模型开关」面板:对每个模型的「隐藏 / 显示」一键操作,隐藏后该模型立刻从对话选择器消失,需要时再恢复,不必手改 providers 表。

这是什么

dsh-model-toggle 是 DSH 社区插件,分类为模型推理。它在设置页的模型区域挂载 UI,针对 profile 里 config.providers 中的自定义 llm-pi-ai 提供商,为每个模型提供隐藏或显示;隐藏不等于删配置备份,完整模型条目会写入 profile 目录下的 dsh-model-toggle.archive.json,显示时再合并回对应提供商。插件以当前 DSH 进程权限运行,安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证。社区目录页:SkillHub 插件页(独立站点,与 DeepSeek / 幻方无官方从属关系)。

核心功能

  • 设置页「模型开关」面板:每个自定义提供商的每个模型一行,右侧「隐藏」或「显示」按钮。
  • 对话选择器联动:隐藏后该模型立即从对话底部模型选择器消失;显示后合并回该提供商模型列表末尾(原顺序不保留)。
  • 两道护栏:不能隐藏某提供商的最后一个可见模型(llm-pi-ai 要求每条 route 至少保留一个模型条目);不能隐藏 DSH 当前默认模型——需先在选择器里切换到其他模型再隐藏。
  • 卸载 / 禁用自动还原:卸载或禁用插件时,会把所有已隐藏模型合并回原提供商;卸载命令也会触发还原。
  • 与 dsh-model-pro 共存:两者写同一张 providers 表;模型 Pro 的批量替换可能把已隐藏模型带回来,以本面板「显示」状态为准重新隐藏即可。
  • 边界:内置 DeepSeek 系提供商无配置面,不在面板中出现;只管理 cordis.patch.yml 里 config.providers 内的自定义提供商。

安装与启用

需要 DSH 0.2(@deepseek-ai/dsh-typert-protocol ≥ 0.2.0-rc.1)。插件为纯 ESM JavaScript,无构建步骤。

# 从 GitHub 源安装
dsh plugin --profile <你的 profile> add wangnian886/dsh-model-toggle

# 或装预构建的 Release 包(免 allowBuilds 授权,不需要 git)
dsh plugin --profile <你的 profile> add https://github.com/wangnian886/dsh-model-toggle/releases/latest/download/dsh-model-toggle.tgz

--profile 填正在使用的 profile 名(Web GUI 默认 web,本机桌面版为 desktop)。装完后刷新网页,在 设置 → 模型 页底部应出现「模型开关」面板。

卸载(同时自动还原所有已隐藏模型):

dsh plugin --profile <你的 profile> remove dsh-model-toggle

典型用法

  1. 刷新网页(客户端模块仅在页面加载时挂载)。
  2. 打开 设置 → 模型,滚到页底「模型开关」面板。
  3. 点击某行「隐藏」→ 该模型从对话选择器消失;点击「显示」→ 条目按存档原样合并回列表末尾。

隐藏当前会话正在使用的模型前,请先把会话切到其他模型。归档文件损坏时插件会拒绝一切隐藏操作(fail-closed),面板可能提示存档错误;整份回退可在插件管理里禁用本插件,还原成功后 dsh-model-toggle.archive.json 会被清空。

机制简述

隐藏时从 llm-pi-ai 的 models 数组摘除条目,完整条目存入 dsh-model-toggle.archive.json(结构 { version: 1, hidden: { [route]: [modelEntry…] } }),不写 DSH 内置配置分区,以绕开 volatile 键与 replace 语义等校验限制。显示时按原条目写回。面板同一时刻只允许一个操作在途,避免并发写乱序。

故障排查

  • 面板未出现:确认已刷新网页;插件管理里 dsh-model-toggle 为 enabled 且 active。
  • active Service "modelToggle" is unavailable:宿主侧未正确构造 ModelToggleRuntime 服务实例,属实现/加载问题,可重载插件或重启 DSH。
  • settings service is not available:宿主状态异常,重载插件或重启 DSH。

结尾

若你希望在 DSH Web 设置里精简对话模型列表、又保留随时恢复的能力,dsh-model-toggle 提供按模型粒度的隐藏与显示,并与卸载还原、默认模型/末模型护栏配合,避免把 route 配成非法空列表。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye