dsh-model-group-collapse:让 Composer 模型菜单按厂商分组折叠

前言

在 DeepSeek Harness(DSH)里用 Composer 时,工具栏上的模型选择器会按厂商(Provider)分组列出所有可用模型。当你配置了 DeepSeek 账号、官方端点、自定义 Provider 等多种来源时,菜单往往一长串全部展开,找模型要反复扫屏。

DSH 生态里常见做法是接受自带选择器的默认展示,或自行改前端。dsh-model-group-collapse 走另一条路:不改换官方组件,只在现有菜单上增加可折叠的分组层,把冗长列表收成可切换的厂商块。

这是什么

dsh-model-group-collapse 是面向 DSH Web UI 的客户端插件,由 LinJohn8 维护,仓库为 LinJohn8/dsh-model-group-collapse。它在 Composer 工具行自带的模型选择器上,为每个厂商分组增加三角箭头折叠/展开,默认收起各组,仅当前已选模型所属厂商展开,从而缩短菜单可视长度。

核心功能

下面介绍插件在 README 中写明、且与实现说明一致的行为。

分组折叠与默认状态

  • 每个厂商标题旁出现三角指示:▸ 表示收起,▾ 表示展开;点击标题可在两种状态间切换,对应分组内的模型行显示或隐藏。
  • 每次打开菜单时,所有分组默认收起,当前选中模型所在厂商的分组会自动展开,便于一眼看到当前上下文。
  • 在插件管理器中禁用插件后,菜单会立即恢复为 DSH 原生全部展开的样式。

与搜索、原生能力的关系

  • 输入搜索关键词时,命中的分组会以展开方式渲染,避免结果被藏在折叠层里;清空搜索后恢复原先的折叠状态。
  • 未改动的部分包括:两级「Model / Effort」菜单、搜索、键盘导航、待选中的 loading 指示,以及官方模型标签徽章(例如「1017」等)。

实现要点(便于排查问题)

插件依赖宿主已渲染的 DOM 结构:分组为 section[data-menu-group],标题为 [data-menu-group-heading],模型行为 button[role="menuitemradio"]。客户端在菜单打开时监听文档,为标题加上可点击的折叠控件;收起时用 display:none 隐藏模型行,并设置 aria-expanded。样式使用带 mgc- 前缀的内联作用域与 --dsw-alias-* 设计令牌;DOM 写入前会做相等性判断,避免与菜单自身的 MutationObserver 互相触发。

安装与启用

DSH 要求版本 >= 0.2.1-rc.2(使用 dsh.client 客户端插件 API)。安装前请自行查看仓库源码与 MIT 许可证;插件在当前 DSH 进程权限下运行,只应从可信来源安装。

从 GitHub 安装

dsh plugin install github:LinJohn8/dsh-model-group-collapse

从 npm 安装(发布后)

dsh plugin install dsh-model-group-collapse

本地目录(开发)

  1. 将插件目录放在稳定路径。
  2. 在 DSH 插件管理器中选择从本地目录安装 bundle,或使用 CLI:
dsh plugin install /path/to/dsh-model-group-collapse
  1. 重新加载 Web UI,打开任意会话,在 Composer 工具栏打开模型菜单即可看到折叠分组。

典型用法

安装并 reload 之后,无需额外配置文件或环境变量。

  1. 在对话页打开 Composer,点击工具栏中的模型选择器。
  2. 观察各厂商标题左侧的三角箭头;默认仅当前模型所属厂商展开,其余收起。
  3. 点击某一厂商标题,展开或收起该组下的模型列表,再选择具体模型。
  4. 在菜单内使用搜索时,匹配到的厂商组会临时展开;清空搜索后折叠状态按插件规则恢复。
  5. 若需恢复原生长列表,在插件管理器中关闭本插件即可。

适用场景与注意

适合谁: 在 DSH 中配置了多个 Provider、模型条目较多,希望模型菜单保持短列表、按厂商浏览的 Web UI 用户。

兼容性说明: 插件通过 Cordis patch(cordis.patch.yml)挂在官方模型选择器之上,不替换组件,因此会跟随宿主自身的流式锁定、待选状态、搜索过滤等逻辑,而不是重复实现一套状态机。

安全与维护: 社区插件目录(如 SkillHub 上的条目页)与 DeepSeek / 幻方无官方从属关系;安装前请核对 GitHub 仓库内容与许可证,并确认 DSH 版本满足 engines.dsh 要求。

结尾

dsh-model-group-collapse 用最小侵入的方式,把 Composer 模型菜单里的厂商分组做成可折叠列表,并在搜索与无障碍属性上与原生行为对齐。需要试用或查看预览图时,可访问 GitHub 仓库 与 SkillHub 插件页。

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

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

Xiaoye