dsh-model-orchestrator:DSH 两级模型与渠道调度

前言

在 DSH 里接多条免费或低价 provider 时,同一个模型名往往出现在多条渠道上。常见做法是给每个 provider/model 打一个综合分,请求失败就重新排序并换到下一名——结果是某条渠道限流或挂掉时,调度器可能已经切到更弱的模型,而同模型下仍有可用渠道。

下面介绍社区插件 dsh-model-orchestrator(维护者 DeZhou123,GitHub DeZhou123/dsh-model-orchestrator)。它把「选模型」和「选渠道」拆成两层:先按策略选模型,再在该模型可用的渠道里选路;失败时先在同模型内换渠道,整条模型的渠道都不可用才换模型。输入框下方有实时状态条,新会话第一条消息即按调度结果调用,不再先跑选择器里停留的模型。

这是什么

装在 DSH 里是一个 bundle:Host 半身负责路由决策,浏览器半身负责状态条与详情面板。插件不硬编码渠道,模型清单来自内核的 llm.listProviders / listModels / resolveModelInfo。

与 dsh-our-free-model(OFM)推荐一起使用,但零代码依赖:只读 OFM 写在本机的 JSON 作旁证,不改 OFM,也不要求 OFM 为本插件做任何改动。不装 OFM 也能完整路由,改用本插件自己观测的流量账本。

安装组合 效果
只装 OFM 免费模型可用;渠道由 OFM 自己决定
只装本插件 任意 DSH provider 可路由;无 OFM 渠道旁证
两者都装(推荐) 免费模型 + 两级调度;冷却与限流可对齐 OFM 账号池解禁时间

核心功能

两级调度与失败顺序

  1. 模型层:在智力、速度、健康、成本、今日用量等项上打分,四档策略(quality / balanced 默认 / economy / speed)只是重新分配权重。
  2. 渠道层:同一模型内再按健康、首字、倍率、用量及 prompt 缓存粘滞选渠道。
  3. 失败:记录到实际失败的 provider/model → 同模型其它渠道重试(调用方不可见的 {kind:'retry'})→ 整模型无可用渠道才换模型。
  4. 粘滞:领先幅度不到切换阈值时不换;用户近期在手选器里改过的模型,切换阈值在默认 30 分钟内加倍。

偏好模式

锁定只调用某一模型,在其渠道间自动切换;渠道全不可用才暂停偏好、改用备用模式并提醒,恢复后自动回到偏好。

/route prefer glm-5.3          # 只调用该模型,渠道自动切换
/route prefer glm-5.3 buddy    # 限定只走 buddy 渠道
/route unprefer                # 回到自动

本步若需要视觉或上下文超限,会临时用别的模型,但不取消偏好;从选择器改选模型在默认配置下会同步改掉偏好模型。

数据与 OFM 旁证(可选)

本机数据不上传。OFM 相关文件只读不写;读不到或格式不认则降级为「未知」,不会把未知当成坏渠道排掉。可在配置里用 channelData: false 与 freeModelData: false 关闭这两类信号。

路径 作用(装 OFM 时)
$DSH_HOME/our-free-model/availability.json 免费车道可用性
$DSH_HOME/our-free-model/stats.json 免费车道今日用量
$DSH_HOME/channel-pack/state.json 每账号每模型限流解禁时间
$DSH_HOME/channel-pack/token-ledger.json 延迟与用量第二优先证据

报告与随包 priority-data.json 作先验;实测首字与健康账本优先于报告逐车道值。

界面与自动选择

会话输入框下方有状态带;新会话首屏在 hero 区有紧凑 chip,展示下一条消息将用的模型。模型列表最上方有「自动选择」:开启后右下角官方 seat 显示「自动选择」,实际调用由调度决定。面板经 /api/model-orchestrator/summary 读、/api/model-orchestrator/config 写,需宿主鉴权。

给 Agent 用的入口

工具 model_orchestrator 支持 status、explain、lanes、set、prefer / unprefer 等;验证安装时可查 model_orchestrator {"action":"status"} 的 catalog.total > 0,或 /route status。

安装与启用

需要已安装的 DSH(Desktop 或 dsh web)。当前包版本为 2.3.0(MIT,Node ^22.19.0 || >=24.0.0)。

先把仓库放到本机目录,再以 link 依赖装进 profile:

cd ~/.dsh/profiles/web
pnpm add link:/absolute/path/to/dsh-model-orchestrator

接着把 dsh-model-orchestrator 加入 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 数组;漏掉这一步插件不会被加载。然后重启 DSH Desktop 或 dsh web。Host 半身启动时加载一次,浏览器半身靠 HMR 或刷新页面。

验证:输入框下方出现模型状态条;/route status 能列出模型组。

典型用法

  1. 默认 balanced 策略下让调度自动选模型与渠道,在状态条或面板查看当前模型、健康、今日用量与自动切换记录。
  2. 需要固定某一模型时:/route prefer <模型名>,或在面板模型页点 ★ /「浏览全部模型…」设偏好。
  3. 与 OFM 同装时,免费车道与账号池限流信息会进入渠道排序;仅本插件时仍可用,冷却更多依赖本机观测失败。
  4. 在面板「设置」中可调策略、备用模式、推理档、单轮 token 预算、首轮接管与自动选择等。

适用场景与注意

适合:手上有多条渠道、同一模型多路复用,希望失败时先换渠道而不是立刻降模型;需要偏好锁定与可视化的路由状态。

插件以当前 DSH 进程权限运行,会读 $DSH_HOME 下状态文件并拦截 llm/stream 做账本。安装前请自行查看 仓库源码 与 MIT 许可证。社区目录页:skillhub.cn 插件页(独立社区站点,与 DeepSeek / 幻方无官方从属关系)。

OFM 写盘格式无第三方契约,本插件单向跟随;格式变化时旁证消失,路由仍继续工作。集成测试在空 DSH_HOME(无 OFM 目录)下仍覆盖路由、失败换渠道与偏好等路径。

结尾

dsh-model-orchestrator 把模型选择与渠道选择拆开,并把用户明确偏好放在高优先级,用本机观测与可选 OFM 旁证做排序,在 DSH「一切皆插件」的生态里承担工作流类的 LLM 路由职责。详情与更新见 GitHub README,安装与分类信息见 SkillHub 目录页。

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

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

Xiaoye