前言¶
DeepSeek Harness WebUI 的模型选择菜单通常列出大量模型,在模型列表较长时,用鼠标滚动查找特定模型效率较低。dsh-model-menu-search 在模型下拉菜单顶部添加一个实时搜索框,允许直接通过输入关键词过滤模型列表。
插件概览¶
- 核心功能:给模型下拉菜单添加实时搜索框。
- 匹配逻辑:支持按名称子串、归一化匹配、子序列/缩写匹配。
- 筛选能力:支持供应商前缀(如
@bailian)筛选。 - 兼容性:不抢 slot、不改共享服务,跨版本可用;零 import、零 peer 依赖。
- 开发者:LovelyDazai。
- 许可证:MIT。
安装与启用¶
插件需安装在 desktop profile 里,通过 link: 指向本目录(符号/联接而非拷贝),编辑配置文件后刷新页面生效。
1. 编辑依赖
在 ~/.dsh/profiles/desktop/package.json 中添加依赖项:
{
"dependencies": {
"dsh-model-menu-search": "link:D:/workplace/dsh-model-menu-search"
}
}
2. 添加到 bundles
在同一个文件的 dsh.profile.bundles 数组中添加插件名:
{
"dsh.profile.bundles": [
"dsh-model-menu-search"
]
}
3. 创建模块联接
在 ~/.dsh/profiles/desktop/node_modules/ 下创建指向插件目录的联接:
New-Item -ItemType SymbolicLink -Path "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-model-menu-search" -Target "D:\workplace\dsh-model-menu-search"
完成上述步骤后,刷新 DeepSeek Harness 页面即可生效。
核心功能¶
- 语义定位:使用 ARIA 语义属性(
role="menu"、role="menuitemradio")定位元素,不依赖哈希类名(DSH 的 CSS Module 类名每次构建都会变),避免版本更新导致失效。 - 高度适配:菜单高度超出视口时,会自动将搜索框所在区域夹入视口可见范围。
- 容错机制:代码绝不抛错,失败时仅输出
console.warn,不会影响 DSH 整体运行。
典型用法¶
输入框支持多种匹配模式,分隔符支持空格、逗号、分号、斜杠、竖线。
| 输入示例 | 匹配效果 |
|---|---|
glm |
按名称子串过滤(大小写无关),命中包含 glm 的模型 |
glm53 |
归一化匹配:忽略 - _ . / 空格,命中 glm-5.3-prime |
dsr1 |
子序列/缩写匹配,命中 deepseek-reasoner-1 |
@bailian |
只显示供应商为 bailian 的模型 |
@bailian qwen |
供应商 + 关键词组合筛选 |
reasoner; 32b |
分隔符处理,同时匹配关键词 |
键盘导航:
* ↓ / ↑:在可见的模型行之间移动。
* Enter:直接选中当前高亮模型。
* Esc:先清空输入框,再按一次关闭菜单。
注意事项¶
- 更新机制:修改本地插件代码后,只需刷新页面即可生效,不会被插件市场升级覆盖。
- 版本修复:1.0.3 版本修复了推理档位面板出现多个搜索框的问题(通过增加
title属性判断和自动隐藏机制)。 - 权限与来源:插件以当前 dsh 进程权限运行,安装前建议检查源码与许可证。
结尾¶
该插件通过零依赖和语义化定位,解决了 DeepSeek Harness 版本更新后插件失效的问题,适合需要频繁切换大量模型的用户。插件目录与源码托管在下方链接。