前言¶
DeepSeek Harness (DSH) 提供了通过插件扩展行为的能力。默认的模型选择器使用扁平列表,当模型库规模扩大时,滚动查找特定模型会降低操作效率。dsh-model-cascade 插件旨在解决这一问题,它将右下角的模型选择器重构为三级级联菜单,并在同一交互界面中提供了独立的思考强度设置入口。
核心功能¶
该插件主要提供以下能力:
- 三级级联选择:将模型选择拆分为供应商、系列、完整模型三个层级,减少单屏展示的模型数量。
- 面包屑导航:菜单顶部显示当前层级路径,支持点击返回上一级,或使用
Esc键快速退级。 - 思考强度设置:当当前模型支持
reasoning时,菜单顶部会出现独立的「思考强度」行,进入后可选择默认或指定档位。 - 状态同步:复用 DSH 内置的
ModelDirectory服务,确保选中状态、加载提示与内置选择器保持一致。 - 遮蔽内置座位:通过
priority: -1注册,自动遮蔽内置的两级模型列表。
安装与启用¶
安装此插件需要将文件放入 DSH 的 node_modules 目录,并修改 cordis.patch.yml 文件。
- 将插件文件放置到
node_modules下对应目录。 - 在
cordis.patch.yml中添加挂载配置:
- insert:
- id: dsh-model-cascade
name: dsh-model-cascade
- 修改配置后需要重启 DSH 实例,并在浏览器端进行硬刷新以加载浏览器半(
lib/client.js)。
典型用法¶
启用后,输入框右下角的模型座位将变为级联菜单:
- 选择模型:点击模型按钮,依次选择供应商、系列,最后点击完整模型 ID 进行确认。
- 导航返回:在菜单顶部使用面包屑逐级返回,或在任意层级按
Esc键退回上一级并关闭菜单。 - 设置思考强度:如果当前选中的模型支持推理,点击菜单顶部的「思考强度」行,在弹出的独立面板中选择强度值。
技术细节与依赖¶
- 宿主与客户端:这是一个纯 UI 插件。宿主半(
lib/index.js)的apply()函数为空,仅用于在 Loader 中占位。浏览器半(lib/client.js)注册了conversation.input.model座位。 - 依赖服务:客户端通过
inject获取slots、modelDirectories、sessions、locale、remote、remote.session等服务。特别说明:虽然package.json声明依赖ui-model-selection,但实际代码require的是ui-primitives。 - 数据来源:数据直接读取自
directory.subscribe和directory.getSnapshot(),包括groups、current、status及错误信息。 - 版本要求:依赖 DSH 0.1.5-rc.1 服务层内部契约。
已知限制¶
- 系列分组逻辑:系列分组基于文本启发式切分(提取 ID 中
/后和-前的字符串),而非基于元数据驱动。命名不统一(如版本号差异)会导致裂分成多个系列。 - 样式硬编码:CSS 锚点与宽度(
min(280px, 100vw - 32px)等)在代码中写死,样式注入仅执行一次。 - 预构建产物:
lib/client.js是 React JSX 编译后的预构建产物,非可直接阅读的源码。 - 子代理限制:在子代理会话(
subagentAddress存在)中,该座位不渲染。