LinJohn8/dsh-model-group-collapse

LinJohn8/dsh-model-group-collapse

让输入框模型菜单的厂商分组可折叠,默认只展开当前模型所属厂商。

UI Enhancementsdeepseek-harness

dsh-model-group-collapse

English | 简体中文

一个 DeepSeek Harness(DSH)Web UI 插件:让输入框模型菜单里的厂商分组可以折叠。

收起状态

功能

原生模型选择器会把所有厂商分组(DeepSeek 账号、官方端点、自定义厂商……)全部展开。厂商多了以后,菜单就成了一堵“模型墙”。

本插件在这层菜单上加了折叠能力:

  • 每个厂商标题变成带三角箭头的可点击开关(▸ 收起 / ▾ 展开)。
  • 默认全部收起。
  • 当前模型所属的厂商默认展开。
  • 点击标题即可切换该厂商的展开/收起,三角箭头随之翻转,模型行显示或隐藏。
  • 搜索时命中的厂商会临时展开以显示结果;清空搜索后恢复折叠状态。
  • 其余行为完全不变:两级“模型 / 推理等级”菜单、搜索、键盘导航、切换中的加载动画、官方模型标签徽章(如 “1017”)都照常工作。

展开状态

在插件管理器中禁用本插件,菜单立即恢复原生外观。

安装

本地目录(开发)

  1. 将本文件夹放在固定位置。
  2. 在 DSH 插件管理器中从本地目录安装该 bundle,或使用 CLI: dsh plugin install /path/to/dsh-model-group-collapse
  3. 重新加载 Web UI 并打开会话。

从 npm(发布后)

dsh plugin install dsh-model-group-collapse

从 GitHub

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

兼容性

  • DeepSeek Harness >=0.2.1-rc.2(客户端插件 API dsh.client)。
  • 在原生模型选择器之上工作:不替换任何组件,因此完全跟随宿主自身状态(流式锁定、切换中、搜索过滤),不重复维护一份状态。

实现原理

原生模型菜单把厂商分组渲染为 section[data-menu-group],每组有一个 [data-menu-group-heading] 标题和若干 button[role="menuitemradio"] 模型行。 客户端部分在菜单打开期间观察文档并逐组增强:

  • 标题加上三角箭头并变为 role="button" 开关;
  • 收起的组用 display:none 隐藏模型行,并置 aria-expanded="false";
  • 折叠状态按组保存、每次打开菜单重置,并用当前模型行的 aria-checked 决定默认展开哪一组。

样式全部内联限定(mgc- 前缀、--dsw-alias-* 主题令牌),且每次 DOM 写入都做等值判断,避免菜单自身的 MutationObserver 重入。

许可证

MIT