dsh-model-menu-search:DeepSeek Harness 模型菜单实时搜索

前言

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 版本更新后插件失效的问题,适合需要频繁切换大量模型的用户。插件目录与源码托管在下方链接。

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

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

小夜