DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Model Menu Search — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
M

dsh-model-menu-search

Model Menu Search

DSH WebUI 模型下拉菜单实时搜索框:给 composer 的模型选择菜单注入一个可打字过滤的搜索框(不抢座位、不改共享服务,跨版本可用)

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:LovelyDazai/dsh-model-selector#c0063cb63b9073b1aebc1aab38b1592cf11b3f20
README兼容性版本

兼容性与来源证明

Model Menu Search 以 dsh-model-menu-search 发布,当前版本为 1.0.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/22

版本

1.0.1stable
2026/9/22

相关插件

正在加载相关插件…

最新版
1.0.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
周下载
0
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Plugin Wallpaper Enginedsh-plugin-wallpaper-engineDSH 网页 GUI 的 Wallpaper Engine 背景:在聊天界面后方渲染本地 Wallpaper Engine Video/Web 壁纸,将 Scene 壁纸显示为提取的静态帧,并提供 iOS 风格的液态玻璃效果、可调节的遮罩/边框/模糊效果,以及可自定义的强调色 coDafeiyudsh-dafeiyu由 DeepSeek Harness 会话事件驱动的原生桌面端 BigFish companion。Dream Skindsh-dream-skinDeepSeek Harness 换肤插件(Dream Skin for DSH):8 套 iOS / Linear 式清透冷调的高质感主题 + 弥散光壁纸 + 每款皮肤智能背景 + 强调色 + 主题包分享,把换肤做成材质与配色克制的高级感工艺,而非贴图。适用于原生 DSH Web 和第三方桌面客户端(DSH Desktop):8 套原创高质感主题、玻璃材质、壁纸 2.0Codex Ui@michengai/dsh-codex-uiDSH Codex UI — 为 DeepSeek Harness Web 提供 Codex 风格侧栏、工作区会话树、全局搜索和轮次导航

README

dsh-model-menu-search

给 DeepSeek Harness WebUI 的模型下拉菜单加一个实时搜索框。点开输入框右下角的模型胶囊后,菜单顶部会出现一个输入框,直接打字就能过滤模型,不用再用鼠标滚。

用法

  1. 点输入框右下角的模型胶囊(带 ▼ 的那个按钮)。
  2. 菜单顶部出现搜索框,直接打字:
输入效果
glm按名称子串过滤(大小写无关)
glm53归一化匹配:忽略 - _ . / 空格,命中 glm-5.3-prime
dsr1子序列/缩写匹配:命中 deepseek-reasoner-1
@bailian只看某个供应商(@ 前缀)
@bailian qwen供应商 + 关键词组合
reasoner; 32b空格 / 逗号 / 分号 / 斜杠 / 竖线都当分隔符

键盘:↓ ↑ 在可见的模型行之间移动,Enter 直接选中,Esc 先清空输入框、再按一次关闭菜单。

为什么 DSH 更新也不容易坏

这是专门针对"插件被 DSH 版本更新搞挂"设计的:

  1. 不抢 slot、不改共享服务。 不注册 conversation.input.model 座位,不包装 modelDirectories / directory.select。宿主内部服务改名、改签名都不影响这里。
  2. 只用 ARIA 语义属性定位。 靠 role="menu" / role="group" / role="menuitemradio",不依赖任何哈希类名(DSH 的 CSS Module 类名形如 IecIca_menu,每次构建都变)。并且有三层退化策略,最坏情况下从模型行反推容器。
  3. 零 import、零 peer 依赖。 不 require 任何 @deepseek-ai/* 包,所以不会因为核心包版本漂移(rc.7 → rc.8 → 0.1.5-rc.2 …)而崩。
  4. 绝不抛错。 每一步都有 try/catch,失败只 console.warn,不会把一个纯装饰插件变成"整棵插件树失败、窗口打不开"的故障源。
  5. 保证可见。 原生菜单是 top = 触发按钮顶部 - 8 - 菜单高度 定位、并夹在 [12, 视口高-菜单高-12]。菜单比视口还高时 top 会变成负数,顶部(搜索框所在处)被顶出窗口。插件会把高度夹进视口并把 top 拉回 12px。

安装在哪儿

装在 desktop profile 里,用 link: 指向本目录(符号/联接而非拷贝):

  • 依赖:~/.dsh/profiles/desktop/package.json → "dsh-model-menu-search": "link:D:/workplace/dsh-model-menu-search"
  • 名单:同上文件的 dsh.profile.bundles 里多一项 dsh-model-menu-search
  • 模块:~/.dsh/profiles/desktop/node_modules/dsh-model-menu-search → 指向本目录的目录联接

好处:改本目录里的 lib/client.js 后,只要刷新页面(或重启 DSH)就生效,不需要重新安装、不会被插件市场升级覆盖——这和那些必须改 node_modules 打补丁的插件不一样。

更新日志

  • 1.0.1 —— 修「每次打开列表要滚一下鼠标才出现搜索框」。 根因:原生 place() 的依赖是 [open, pane, state],目录加载完成会再跑一次;此时菜单已包含搜索框(更高),重算出的 top 可能为负,把顶部(搜索框所在处)顶出视口。原版只在 scroll/resize 时才重新夹取,所以要滚一下才修正。 修法:① 插入后开一段约 150 帧的"沉降期"逐帧重扫并重新夹取;② 用 ResizeObserver 盯菜单尺寸变化;③ 用单独的 MutationObserver 盯菜单的 style 属性(原生重算 top 时高度未必变);④ 搜索框被 React 重渲染抹掉时能自动重建。 控制台里 __dshModelMenuSearch.version 可以确认当前加载的是哪个版本。

卸载

# 1) 从 profile 的 package.json 里删掉依赖和 bundles 里的那一项
# 2) 删掉联接
Remove-Item "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-model-menu-search" -Force

排查

浏览器控制台(DSH 窗口里按 Ctrl+Shift+I → Console)里所有日志都带前缀 [dsh-model-menu-search]:

  • client plugin apply() running —— 浏览器半边已挂载
  • observer installed; watching for the model menu —— 观察器已装
  • attached {...} —— 搜索框已插入,并打印菜单/搜索框的几何信息(menuTop / wrapTop / visible)
  • menu clamped into viewport {...} —— 菜单被夹进视口
  • scan: no model menu in DOM yet —— 还没检测到菜单(正常,打开菜单后会自动挂上)
  • 任何以 ... failed 结尾的都是被 catch 住的异常,不会影响 DSH

控制台里还有手动诊断入口:

__dshModelMenuSearch.menus()   // 当前识别到的菜单:[{cls, groups, items, hasBox}]
__dshModelMenuSearch.scan()    // 立刻重扫一次,返回识别到的菜单数量

测试

node test/dom-smoke.mjs

用最小假 DOM 跑真实的 lib/client.js,覆盖:挂载、样式注入、菜单识别(故意用哈希类名)、搜索框插入位置、高度夹取、归一化/子序列/@provider 匹配、空状态、清空、键盘导航、以及"没有菜单时不抛错"。