dsh-model-priority:在 DSH 里自定义模型与提供方顺序

前言

DeepSeek Harness(DSH)里选模型时,列表顺序往往跟着适配器注册顺序走,常用模型却排在后面。上游截至 2026-09-10 的讨论里也没有「调整模型顺序」的官方入口。社区插件 dsh-model-priority(维护者 mengge237,分类:客户端)补的就是这一格:在设置页或侧边栏拖拽排序,让宿主 listModels 等接口按你的顺序返回,并把顺序写回配置真源,保存前自动备份。

这是什么

dsh-model-priority 是 DSH 客户端侧插件,当前 package 版本 0.4.1,MIT 许可,要求 DSH >=0.1.2-rc.1。它只做「列表顺序」:不做请求路由、故障转移或用量统计。宿主按 models 数组的物理顺序渲染设置页与选择器;插件通过重排真源里的 models 数组,避免「设置页一个顺序、选择器另一个顺序」两套来源打架。

目录页:https://www.skillhub.cn/plugins/mengge237/dsh-model-priority
源码:https://github.com/mengge237/dsh-model-priority

核心功能

两个操作入口

  1. 设置 → 模型:DeepSeek 卡片内扩展区(槽 settings.models.provider-card,key=llm-deepseek),内置 DeepSeek 家族在卡片内拖拽。
  2. 侧边栏「模型排序」页:需配合 dsh-better-sidebar;下拉选提供方后,对分组模型列表拖拽,覆盖 llm-pi-ai 家族的自定义提供方。

默认模型带 ★ 固定不可拖;「恢复默认」回到宿主原顺序。百炼等路由模型多时会按 qwen/glm/kimi 等家族分组折叠。

读侧如何生效

服务端在 ctx.llm 实例属性上包一层,使 listProviders()、listConfigurableProviders()、listModels(provider) 按保存的顺序稳定排序返回;未出现在顺序里的条目保持相对位置。默认模型由 agent-default-model 声明,写回时强制钉回原位。

写盘与镜像

保存时会重排当前生效真源里该提供方的 models 数组;0.1.7 线起真源为 ~/.dsh/profiles/<p>/cordis.patch.yml,0.1.5 线为 ~/.dsh/settings.yaml。写入前会先备份(如 cordis.patch.yml.bak-<ISO 时间戳>);内容未变则不写、不备份。另有一份 ~/.dsh/model-order.json 在每次点「保存」时更新,删掉即回默认。

默认开启 web↔desktop 双端镜像(写活动层时同步到其它带 llm-pi-ai 的 profile);可在配置里设 config: { mirror: false } 关闭。

HTTP 路由(本机可用)

路由注册在 ctx.webServer 上,插件自判来源(loopback / 权威 Host、非 cross-site 等),跨域 403。本机 curl 可用,例如:

路由 作用
GET /dsh-model-priority/state.json 目录快照、当前顺序、挂钩状态
GET /dsh-model-priority/provider-models?route=<route> 某路由当前模型 id 顺序
PUT /dsh-model-priority/order.json 保存顺序({"reset":true} 清空)
POST /dsh-model-priority/settings-order 按给定顺序重排真源里该提供方的 models

附带轮换代理(默认关闭)

包内另有本机转发层:把某提供方 baseURL 指到 rotate 端点,在 .credentials.yaml 多 key 间依次试(429 / 额度尽才换)。无页面入口,需 HTTP 按 route 启用;细节见仓库 docs/rotate-proxy.md。

安装与启用

下面命令来自仓库 README,路径请换成本机 clone 目录或你使用的 git 地址:

dsh plugin --profile web add "<本仓目录,或 git 地址>"
dsh plugin --profile web remove dsh-model-priority

装完后必须重启 dsh web:服务端注册路由、挂钩与浏览器侧 boot bundle 都在启动时装配。顺序相关文件每次调用现读,改文件本身不用重启。

若拿不到 UI slots,设置页卡片格可能不挂;未装 dsh-better-sidebar 时侧边栏页会 warn 跳过,卡片扩展与上述 HTTP 路由仍可用。

典型用法

  1. 安装插件并重启 dsh web。
  2. 打开 设置 → 模型,在 DeepSeek 卡片里点开「模型顺序」扩展区,拖拽后保存;或安装 dsh-better-sidebar 后从侧边栏进入「模型排序」页,选提供方再拖。
  3. 在对话或 Agent 的模型选择器里确认列表顺序已变;需要恢复时点「恢复默认」,或删除 ~/.dsh/model-order.json。
  4. 排查挂钩是否成功:访问 GET /dsh-model-priority/state.json,看 hook.ok;为 false 时页面顶部会显示原因,顺序文件仍可编辑。

开发者可在插件目录执行自检(不启动 dsh、不占 3080):

npm test

适用场景与注意

适合:长期在 DSH web profile 下开发智能体、同一提供方下模型很多、希望把常用模型顶到选择器最前面的用户。

边界与权限:

  • 插件以当前 dsh 进程权限读写 ~/.dsh/ 下配置;安装前请自行查看源码与 MIT 许可证。
  • 只在宿主 ctx.llm 暴露上述 list 方法的版本上完整生效;挂不上时 hook.ok 为 false。
  • 可拖拽写回的是 llm-pi-ai 等自配提供方;内置 DeepSeek 卡片里对真源外的清单为只读展示。
  • 某适配器不能列举模型时,该提供方下列表为空,属适配器能力边界。
  • 不靠改 provider 键顺序排序:宿主 registrationFacts 对 provider 做 sort,单纯调键序运行中不立刻生效。

DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-model-priority 把「模型列表顺序」从只读注册顺序变成可拖拽、可持久化、与选择器一致的行为,并在写 settings / cordis 真源前备份。需要进一步了解实现契约与测试范围,见仓库 docs/internals.md 与 GitHub README。

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

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

小夜