前言¶
DeepSeek Harness(DSH)的 composer 输入框里,模型选择器已按提供商分组,但仍是一层平铺列表:所有提供商的模型排在同一个可滚动区域。本机若挂接多个提供商、模型条目上百,要找某一个模型,往往得滚过多个分组头和大量行。官方在模型数超过一定规模时会出搜索框,搜索能缩小范围,但分组头仍在同一长列表里,视觉负担不小。
社区插件 dsh-model-tabs(维护者 LINGTIAN303,分类:客户端)在列表上方增加提供商 Tab + 模型系列 Tab 两级筛选;目录较小时保持官方平铺样式,不强行加控件。下面按「是什么 → 能力 → 安装 → 用法 → 设置与注意」说明。
这是什么¶
dsh-model-tabs 是纯客户端 DSH 插件:接管 composer 输入框里 conversation.input.model 槽上的模型按钮 UI(不是 /model 斜杠命令那条 popupSelect 链路)。它在模型菜单顶部叠两层 Tab,先选提供商、再选该提供商下的模型系列,并与原有搜索框叠加过滤。模型系列的划分规则内置一套最长前缀表,也可在设置页用 JSON 覆盖或追加。
插件在 SkillHub 目录 与 GitHub 发布;当前 package 版本 0.1.1,许可证 MIT。
核心功能¶
两级 Tab 怎么分¶
| 层级 | 分类键 | 作用 |
|---|---|---|
| 一级 Tab | provider.id |
先收敛到一个提供商 |
| 二级 Tab | 模型名前缀族 | 再收敛到该提供商下的一个系列 |
两级 Tab 都保留「全部」,默认停在「全部」,不打字也能先缩小范围;搜索框仍可用,与 Tab 条件叠加。
系列识别流程(README 原文逻辑):
- 归一化模型名:取最后一个
/之后 → 去掉:后缀 → 小写 - 按最长前缀命中内置规则表(如 deepseek、glm、kimi、qwen 等)
- 未命中则取模型名前导字母串;仍无则归入「其他」
作者说明采用「最长前缀」而非「纯首 token」,是为避免同厂商模型被拆成多个单例族(例如部分 Qwen、hy 系列命名)。
仅在大目录时启用 Tab¶
与官方「模型够多才出搜索」的思路一致,小目录不出现 Tab 条,保持官方平铺:
| 阈值 | 默认值 | 含义 |
|---|---|---|
totalModels |
20 | 模型总数超过即启用 |
perProvider |
30 | 或单个提供商模型数超过即启用 |
两项阈值可在设置页调整。
与官方选择器的关系¶
- 视觉对齐官方
ModelSelect.module.css的尺寸、token、焦点环、菜单定位等,换装后尽量不跳变。 /model命令不受影响:走官方commandUi,第三方暂无注入点。- 注册槽时使用
priority: -1000(single槽按 priority 升序取第一个);与同样接管该槽的其他插件同一时刻只能留一个,见下文兼容说明。
其它能力¶
- 菜单内保留与原生相近的推理等级相关 UI(与部分第三方 effort 插件存在替代关系)。
- 无 Host 服务、无 HTTP、不读写文件;配置仅存浏览器
localStorage。 sessions/modelDirectories不可用时静默退让,官方选择器照常显示。
安装与启用¶
任选一种方式安装(<你的 profile> 换成实际 profile 名),装完需重启 DSH:
# 方式一:npm(预构建,免构建脚本授权)
dsh plugin --profile <你的 profile> add dsh-model-tabs
# 方式二:GitHub 源码
dsh plugin --profile <你的 profile> add github:LINGTIAN303/dsh-model-tabs
# 方式三:本地开发
dsh plugin --profile <你的 profile> add "link:<本插件目录绝对路径>"
也可在 DSH 设置 → 插件 里安装。
适用环境与权限:插件以当前 DSH 进程在浏览器侧运行;安装前建议浏览仓库源码与 LICENSE。声明兼容 DSH 0.2.1-rc.5(作者本机实测)、0.2.2-rc.1;package.json 要求 Node.js >= 22.12.0,DSH >= 0.2.1-rc.2 < 0.3.0。官方 README 写明可能有破坏性变更,若官方调整 conversation.input.model 契约,插件需跟进。
典型用法¶
- 打开对话,点输入框左下角模型按钮。
- 进入模型列表;若目录达到阈值,顶部出现提供商 Tab。
- 点某一提供商后,出现该提供商下的系列 Tab。
- 两级均可点「全部」回到上一级全集。
- 键盘:
←/→在 Tab 间切换,↑/↓移动模型高亮,Enter选中,Esc逐级返回。
设置页¶
路径:设置 → 「模型 Tab」。
可配置:
- 总模型数、单提供商模型数两个生效阈值。
- 族规则 JSON(
overrides数组):同key覆盖内置规则,新key追加。示例:
[
{ "key": "deepseek", "label": "DeepSeek", "prefixes": ["deepseek", "ds"] },
{ "key": "my-family", "label": "我的系列", "prefixes": ["myfam"] }
]
提供「填入模板」「保存」「恢复默认」。配置键:localStorage['dsh-model-tabs.config']。
与其它插件、安全与兼容¶
槽位冲突(README 表格摘要):
| 插件 | 影响 |
|---|---|
@ayanehana/dsh-reasoning-effort |
其推理等级 UI 不再上屏;功能由本插件推理等级面板覆盖 |
@txc2768651338/dsh-effort-slider |
依赖 DOM 扫描,找不到匹配行时无效果 |
dsh-client-ui-deepseek-model-label-1017 |
角标子槽与原生声明冲突,可能抛 SlotOwnershipError |
若需保留上述某一插件对模型按钮的装饰,可卸载本插件,只保留对方。
安全方面:不写全局 CSS 选择器(类名带 mt- / mts- 前缀),不碰官方 /model 弹窗相关选择器。
结尾¶
dsh-model-tabs 针对 composer 里模型很多、滚动翻找成本高的情况,用可配置阈值的两级 Tab 做分层收敛,小目录仍用官方列表。族规则可 JSON 扩展,纯前端存储、无 Host 依赖。
- 目录页:https://www.skillhub.cn/plugins/LINGTIAN303/dsh-model-tabs
- 源码与 README:https://github.com/LINGTIAN303/dsh-model-tabs
DSH 生态强调「一切皆插件」;SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系。选用插件时以仓库说明与自身环境为准即可。