dsh-model-block-picker:按来源分块的输入框模型选择器

前言

在 DeepSeek Harness(DSH)里切换模型,默认做法是把所有来源的模型拉成一条长列表。账号、官方 API、CodeBuddy、Qoder、TRAE 等渠道混在一起,模型一多就要反复滚动和辨认。搜索和推理强度(Reasoning Effort)虽然还在,但「先想清楚从哪个渠道选」这一步并没有被界面单独照顾。

下面介绍社区客户端插件 dsh-model-block-picker(维护者 liu19666):只替换输入框(composer)右下角的模型位,把选择器改成「先按来源分块、再下钻进块内选模型」的两级结构,并保留全局搜索、推理强度、速度/输出详略(在提供方支持时)等原有能力。插件当前 GitHub 星标为 0,许可证 MIT,npm 包版本见仓库 package.json(资料抓取时为 1.1.0)。

这是什么

dsh-model-block-picker 是 DSH 的客户端(web)插件:通过 Cordis 插槽覆盖官方输入框模型选择器 UI,数据仍走 DSH 自带的 modelDirectories 服务,不重复请求后端。与 /model 命令弹窗共用同一份会话级模型目录,任一入口切换,另一入口立即可见。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录独立于 DeepSeek / 幻方,并非官方应用商店。

核心功能

按来源分块与两级下钻

点击输入框模型位,弹出的是按来源分块的卡片网格,而不是平铺长列表。每个渠道一张卡片,显示来源名、模型数量;当前正在使用的来源有高亮描边和「当前」标记。点卡片进入该渠道专属模型列表;顶部「← 所有来源」或按 Esc 返回上一级。

默认分组顺序为 DeepSeek 账号 → DeepSeek 官方 → 其余按名称;卡片可拖动排序,松手即保存。

全局搜索

面板顶部可直接输入 v3、sonnet、r1 等关键词,跨全部来源聚合匹配;回车选中首项。清空搜索回到分块视图。

推理强度与订阅类偏好

当前模型支持 reasoning 时,浮层底部出现 Low → Max 的彩色可拖动滑条,点击刻度文字可跳档;右侧显示当前档位,并提供「恢复模型默认」。若提供方暴露了 speedMode / outputVerbosity(例如部分 ChatGPT 订阅类集成),底部会额外出现对应分段控件;不支持的模型或提供方则整行隐藏,不会出现无效开关。

显示设置与偏好持久化

搜索框左侧的 ⚙ 打开显示设置:可按提供方整体开关,也可展开后逐个开关单个模型是否出现在选择器里;顶部显示已隐藏数量,底部可一键恢复全部。

顺序、隐藏来源、隐藏模型写入浏览器 localStorage,键名为 dsh-model-block-picker.prefs.v1;刷新与重启 DSH 后保持。偏好按浏览器 profile 隔离,不随 DSH 账号同步。

主题

浅色与深色均使用 DSH 主题 token;深色下强调色为 --dsw-alias-link(#7aaaff),触发按钮与同排截图、麦克风等图标保持同一设计语言。

安装与启用

资料中的安装方式面向本机已有插件目录(开发或自用),未给出 dsh plugin add github:... 一类命令。在 DSH 会话里对 Agent 说明要安装的本地路径即可,由 Agent 调用:

plugin_manager(action: 'install_bundle', target: '<绝对路径>')

安装完成后需彻底退出 DSH 桌面端再重新打开(客户端 bundle 有启动基线缓存,仅刷新页面不一定加载新代码)。

卸载并回退到官方原生选择器:

plugin_manager(action: 'remove_bundle', target: 'dsh-model-block-picker')

安装前建议自行阅读仓库源码与 MIT 许可证;插件在 DSH 客户端进程权限下运行,与任何第三方插件一样需要信任维护者。

典型用法

  1. 安装并重启 DSH 后,在会话输入框右下角点击模型位,先在各来源卡片中选渠道,再选具体模型。
  2. 若已知模型名片段,打开面板后直接搜索,回车选中第一项。
  3. 需要隐藏不用的渠道或模型时,点 ⚙ 进入显示设置;需要固定常用渠道顺序时,在分块视图拖动卡片。
  4. 当前模型支持推理强度时,在面板底部拖动滑条或点刻度;需要恢复提供方默认值时使用「恢复模型默认」。

/model 命令打开的弹窗仍为官方样式,本插件只替换 composer 上的模型位;两者数据互通。已寻址的 subagent 会话不提供模型选择,行为与官方一致。

实现要点(便于排障)

插件注册命名插槽 conversation.input.model(kind: "single"),优先级 priority: -20,高于官方 -10,从而覆盖原生组件;卸载后自动回退。

浏览器端通过 ctx.modelDirectories 读写目录,例如:

const directory = models.directoryFor(sessionId);
directory.store   // 快照:groups、current 等
directory.load()
directory.select({ provider, model, reasoningEffort })

客户端沙箱要求顶层 inject 声明服务白名单(如 slots、modelDirectories);未声明的服务(例如直接读 ctx.sessions)会导致注册失败。

排障时可搜宿主日志前缀 [dsh-model-block-picker],或访问浏览器诊断路由 /plugins/dsh-model-block-picker/diag,关注生命周期是否到达 registered-success。

适用场景与注意

适合:经常在多个模型来源之间切换、希望 composer 里先选渠道再选模型的 DSH 用户;需要保留搜索与推理强度,并愿意用本地设置微调可见模型列表的人。

注意:

  • 仅覆盖输入框模型选择器,不改变 /model 弹窗 UI。
  • 速度/输出详略仅对实现了对应偏好的提供方显示。
  • 偏好存在本机 localStorage,换浏览器或 profile 不会同步。

链接

经过上面的步骤,若你主要痛点是「长列表里找来源」,这个插件把选择器收成按渠道分块的两级结构,并在不拆官方数据层的前提下保留搜索与推理强度;安装与卸载都通过 plugin_manager 的 bundle 操作完成,退出重进后即可在 composer 模型位体验分块面板。

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

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

小夜