dsh-model-source-picker: A two-level selector for first selecting the model source and then selecting the model

前言

在 DeepSeek Harness(DSH)里切换模型,默认输入框上的选择器会把各来源下的模型平铺在同一层菜单里。来源一多、模型一长,查找和对比都不顺手。社区插件 dsh-model-source-picker(维护者 BEAVER-awa,分类:模型推理)把交互改成 Provider-first:第一层放大展示 模型来源,点进来源后再选具体模型与推理强度,和「先定账号/供应方、再定型号」的习惯更一致。

DSH 生态强调「一切皆插件」;目录站在 skillhub.cn 等平台展示社区作品,与 DeepSeek / 幻方无官方从属关系。下文基于仓库 README 与 package.json 核实后的内容编写。

这是什么

dsh-model-source-picker 是仅作用于 客户端 UI 的 bundle:占用 conversation.input.model 座位,替换输入框旁的模型选择控件。它不修改 agent 循环、工具或提示词,数据与 /model 命令共用同一套 modelDirectories 目录,不自建 catalog、不额外发请求。

维度 说明
仓库 github.com/BEAVER-awa/dsh-model-source-picker
当前版本(package.json) 0.1.0
许可证 MIT
运行要求 DeepSeek Harness ≥ 0.2.1(依赖 modelDirectories 服务);Node ≥ 22

与原生选择器的差异

下面用表格概括 README 中的对比(事实以仓库为准)。

原生选择器 本插件
输入框触发器 图标 + 模型名 来源名(如 TokenPlan)+ 模型名 + 推理强度
菜单第一层 各来源模型平铺 来源列表(名称放大、首字母徽标、模型数量、当前来源标记)
菜单第二层 无 该来源下的模型(可搜索、当前项打勾、描述与推理档数)
推理强度 平铺在菜单里 第一层独立一行,或带推理档模型的第三层

插件以 priority: -20 注册,可盖过官方选择器(0)及 dsh-codex-subscription 的替换版(-10)。

核心交互

  1. 点击来源 → 进入该来源的模型列表;左上角 ‹ 模型来源 或 Esc 返回上一层。
  2. 模型超过 6 个时出现搜索框,输入即可过滤。
  3. 选中即生效,行为与原选择器一致:会话运行中仍可切换;被指派的子代理会话不显示该控件(与原选择器一致)。

样式使用主题 token(--dsw-alias-*、--dsw-font-*),随深浅色切换;菜单 portal 到 document.body,避免被停靠输入框裁剪。文案走 model-source-picker 命名空间的 locale(中英);注册失败会打印 [model-source-picker] ... 并让位,界面回落到原生选择器而不崩溃。

安装与启用

在已配置 DSH CLI 的环境中,README 给出的安装命令为:

dsh plugin --profile desktop add github:BEAVER-awa/dsh-model-source-picker

安装后若界面无变化,在插件管理器里将 bundle 关掉再打开一次,或重启应用——这比反复刷新页面更能刷新客户端模块图(原因见下文「诊断」)。

注意: 插件随当前 DSH 进程与用户配置运行,安装前请自行审阅 仓库源码 与 MIT 许可证,确认符合你的安全与合规要求。

典型用法

无需单独配置文件:启用 bundle 后,在会话输入框旁打开模型控件即可。

  1. 打开控件,在第一层浏览或选中 模型来源(可见名称、徽标、模型数、当前来源标记)。
  2. 进入第二层,在模型较多时用搜索框筛选,点选目标模型。
  3. 若模型带推理档位,按菜单中的第三层或第一层独立行调整推理强度。

目录数据通过 ctx.get('modelDirectories').directoryFor(sessionId) 与官方 store 的 load() / select() 同步,可选列表应与 /model 命令一致。

诊断、关闭与卸载

诊断: 作者在 shell.overlay 中注册了占位条目 model-source-picker-probe(不绘制 UI),仅用于证明 bundle 已在浏览器侧加载。可在 Slots 检查面板查看 shell.overlay 的 occupants 是否包含该项,以区分「模块未送达」与「注册被拒绝」。

关闭 / 卸载: 在插件管理器中禁用 bundle dsh-model-source-picker,或删除 cordis.patch.yml 中对应的 insert 行后刷新页面,即可回到原生选择器。

实现要点(供排查参考)

  • 客户端逻辑在 lib/client.js;lib/index.js 为 Host 侧占位;cordis.patch.yml 插入 bundle 行。
  • 动态 client 仅获得受限 ctx(get / on / provide / effect),服务均通过 ctx.get() 读取并判空,避免静默不挂载却难以排查。
  • package.json 中 dsh.client 为 platform: web、immediately: true。

结尾

若你希望在大模型来源较多时 先收窄到某一供应方再选型号,dsh-model-source-picker 用两级菜单和共用 modelDirectories 的方式,在不动 agent 核心的前提下改写了输入框模型选择体验。

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

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

Xiaoye