前言¶
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
核心功能¶
两个操作入口¶
- 设置 → 模型:DeepSeek 卡片内扩展区(槽
settings.models.provider-card,key=llm-deepseek),内置 DeepSeek 家族在卡片内拖拽。 - 侧边栏「模型排序」页:需配合 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 路由仍可用。
典型用法¶
- 安装插件并重启
dsh web。 - 打开 设置 → 模型,在 DeepSeek 卡片里点开「模型顺序」扩展区,拖拽后保存;或安装 dsh-better-sidebar 后从侧边栏进入「模型排序」页,选提供方再拖。
- 在对话或 Agent 的模型选择器里确认列表顺序已变;需要恢复时点「恢复默认」,或删除
~/.dsh/model-order.json。 - 排查挂钩是否成功:访问
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。