← 返回列表
未验证
在模型菜单顶部输入关键词,快速筛选并回车选中模型
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/29 · 已提供中文文档
用于向模型菜单添加输入框以进行筛选的 DeepSeek Harness 插件。(支持上下箭头 + 回车)
综合分
28.1
GitHub 分
28.1
用户评分
—
★ Stars
0
周下载量
—
兼容 / 相关生态插件(非 dsh 原生,请按其对应运行时安装)
git clone https://github.com/odelbos/dsh-models-filter.git数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-models-filter
一个 DeepSeek Harness 配置文件包,在编辑器模型菜单的模型列表窗格顶部添加了一个筛选输入框。根级 Model/Effort 窗格以及菜单的其他所有部分都保持与出厂时完全一致。
[!CAUTION]
此插件是使用 GLM-5.3-FLASH(Ox Alpha)完全凭感觉编写(vibe-coded)的。
这只是在其免费测试阶段试用该 LLM 的一个简单练习。
_(所有内容都直接来自该 LLM——代码、注释、readme 等。)_
我没有任何编写 DSH 插件的经验,因此无法保证代码质量。
[!WARNING]
我不太喜欢插件内部使用 CSS 类的方式,尤其是常量 C = {} 映射,因为在未来的 DSH 版本中,类的哈希前缀可能会改变,这会破坏插件。
所以此插件实际上依赖于 DSH 的 0.1.1-rc.2 版本。
[!NOTE]
在 X 上的帖子(附有一段展示插件实际效果的短视频)
安装
从本地检出安装:
dsh plugin --profile web add ./dsh-models-filter
或者直接从 GitHub 安装(任何兼容 pnpm 的 spec 都可以):
dsh plugin --profile web add gh:/dsh-models-filter
或者:
dsh plugin --profile web add git+https://github.com//dsh-models-filter.git
然后重启配置文件(dsh web),以便新的包层组合进来。
lib/ 构建产物已提交,因此安装永远不需要构建步骤,也不需要
pnpm 的 allowBuilds 条目。
使用 dsh plugin --profile web remove dsh-models-filter 卸载,或者通过向配置文件自身的
cordis.patch.yml 添加以下内容,仅禁用这一行而不移除包:
- id: models-filter
disabled: true
你将获得
- 打开菜单时显示未更改的 Model / Effort 单元格——那里没有筛选器。
- 进入 Model 后,列表窗格顶部会显示筛选行,
并自动获得焦点;输入时会按模型名称、id、
描述或提供商名称/id 进行不区分大小写的筛选;被清空的组会消失;× 或 Esc
会清除并就地恢复完整列表。
- 组合框键盘导航: ArrowDown/ArrowUp 会在可见行之间移动高亮
(在两端循环),同时焦点保持在
筛选输入框中——高亮通过 aria-activedescendant 跟随。Enter 会选择
高亮的行;Escape 会按级联顺序执行:清除查询 → 返回上一窗格 → 关闭。
输入会将高亮重置到第一个可见行。
- 两级强调: 预选行带有更强的分层填充,
因此在两种主题下都清晰可读;鼠标悬停保持出厂时更浅的
悬停填充,并且绝不会移动预选。
- 确定性滚动: 循环到第一行时会吸附到顶部;
否则,预选行会以最小幅度显示出来,并且始终完整地位于其
粘性组标题下方;已经可见的行不会引起滚动。
- 选择会通过出厂时共享的每会话 ModelDirectory
(ctx.modelDirectories)流转,因此 /model、编辑器触发器、选择状态、
而作曲家的模型不可用块保持完全同步。
它如何遵循现有设计
- 菜单使用随附样式表自身的类名渲染
(_7KE1Ra_,来自部署的
dsh-client-ui-model-selection 构建的内容哈希类)。触发器、模型/努力单元格、提供商
分组标题、选项、选中勾选、加载/错误/警告条:全部都是
产品的真实标记和真实样式。随附样式表的副本
保存在 shipped.css 中以供溯源。
- 唯一新增的 CSS 规则是用于新增行及其
高亮状态的 dshmf- 类,它们依据相同的设计令牌和惯用法编写:10px
控件圆角、说明文字色调占位符、细微边框、悬停填充,以及
触发器的 2px 聚焦环。它们作为单个去重的
标签发布,由插件 fiber 拥有。
- 所有菜单字符串都来自随附的 model 语言环境命名空间;筛选
行注册了它自己的小型 models-filter 命名空间(英文 + 中文)。
包布局
| 文件 | 用途 |
| ------------------- | ----------------------------------------------------------------------- |
| package.json | dsh 清单:bundle.patch + client 声明。 |
| cordis.patch.yml | 包补丁层:插入发现主机行。 |
| lib/index.js | 主机半部分(由 src/index.ts 生成)——一个刻意的空操作标记插件(见下文)。 |
| lib/client.js | 浏览器半部分(由 src/client.ts 生成)——已提交的惰性 CJS 包,服务于 /plugins/dsh-models-filter/client.js。 |
| src/client.ts | 客户端半部分的可读 TypeScript 源码:工厂主体加上构建时擦除的类型声明。 |
| src/index.ts | 主机半部分的 TypeScript 源码。 |
| scripts/build.mjs | 将 src/.ts 转译为已提交的 lib/.js(类型被擦除,注释保留)。 |
| tsconfig.json | 用于 pnpm typecheck 的严格 tsc --noEmit 配置。 |
| shipped.css | 提取出的随附样式表,保留用于类保真度溯源。 |
它如何接入一个 profile
三个声明使该包成为真正的 bundle,而不是普通的
依赖项:
1. "dsh": { "bundle": { "patch": "./cordis.patch.yml" } } —
dsh plugin add 会根据
dsh.profile.bundles 协调已安装的依赖项;声明补丁正是将这个包变成
profile 层的关键,而不是打印“declares no dsh.bundle”警告。
2. 该补丁插入一个加载器行(id: models-filter,
name: dsh-models-filter)。Web 客户端模块扫描通过遍历已激活的加载器条目,并将每个条目的名称
与声明了 dsh.client 的已安装包进行匹配,来发现浏览器
bundle——没有这一行,客户端半部分将永远不会加入启动图。主机半部分本身是一个
no-op 标记;所有行为都在客户端侧运行,基于 Web 界面
已挂载的服务(slots、locale、modelDirectories、sessions)。
3. "dsh": { "client": { "platform": "web", ... } } + exports["./client"]
— 一旦入口激活,扫描会解析此清单并将该
bundle 添加到 window.__DSH_BOOT__ 图中。随后,内置的客户端 Loader
会像导入任何已发布的客户端插件一样导入它:工厂函数运行一次,
返回 { inject, apply };Cordis fiber 治理(服务等待、
停止/更新处置)保持不变地适用。
4. 该席位以 priority: -1 被遮蔽,而非被替换。 作曲器的
模型席位是一个单一槽位,每个优先级只允许一个注册 —
已发布的 dsh-client-ui-model-selection 席位持有优先级 0,因此此
bundle 注册的优先级低一级(更低者渲染),而已发布的条目
保持注册但处于休眠状态。卸载或禁用此插件会处置
其 -1 条目,而已发布的席位会重新接管,且无任何间隙。
开发
源码为 TypeScript;提交的 lib/ 产物由它们通过
转译生成(类型注解被擦除,注释和运行时代码逐字保留),
这就是为什么安装从不运行构建,且该包没有任何
运行时依赖。
pnpm install # 运行时依赖:无 — devDependencies(typescript)仅用于构建/类型检查
pnpm typecheck # tsc --noEmit 对 src/ 执行(严格模式)
pnpm build # 编辑 src/*.ts 后重新生成 lib/client.js + lib/index.js
link: 风格的安装(add ./dsh-models-filter)会符号链接检出目录,因此
重新构建加上配置文件重启即可立即拾取编辑。发布前
提交重新生成的 lib/ 文件。
已知偏差
在选择被拒绝时,已发布的组件会弹出一个临时 Toast;此
插件则保持菜单打开。加载错误仍保留已发布的内联重试
条。
许可证
MIT
作者
@odelbos(与 GLM-5.3-FLASH)扫码进群