前言¶
在 DeepSeek Harness(DSH)里接多个模型来源时,常见做法是手动切换 provider,或在某条路由失败后再改配置。请求一旦落在额度已耗尽或瞬时故障的路由上,agent loop 和会话侧往往要额外处理切换逻辑。dsh-llm-auto 是 DSH 宿主插件,在模型选择器里注册 auto 模型,按配置的有序「provider + model」链依次尝试;单条路由内在产出内容前失败时,先按与官方相近的策略原地重试,耗尽后再静默切下一条,对上层仍表现为一个普通模型。下面介绍它的定位、能力与安装配置方式。
这是什么¶
- 名称:dsh-llm-auto(npm 包名,注册 id 为
llm-auto) - 维护者:liuyun847
- 分类:模型推理(社区目录 SkillHub 归类)
- 仓库:github.com/liuyun847/dsh-llm-auto
- 当前版本(README 徽章):0.11.1
- 许可证:MIT
本包是组合包(bundle):注册行随包内 cordis.patch.yml 发布,宿主按 profile 的 package.json 里 dsh.profile.bundles 加载,无需再往 profile 的 cordis.patch.yml 手工粘贴 - insert: 行。
核心功能¶
有序回退与单路由重试¶
用户选择 Auto 分组下的 auto 后,请求进入 AutoAdapter.stream()。插件按 routes 顺序尝试;某一跳在产出任何内容之前失败时,若错误码落在可重试白名单内(默认含 EMPTY_RESPONSE、RATE_LIMIT、SERVER、TIMEOUT、TRANSPORT),则在该路由内指数退避后原地重试(默认每路由最多 5 次,不含首次);重试耗尽才切下一条。成功时分片原样透传;全部失败则抛出 AUTO_ROUTES_EXHAUSTED,消息中列出各路由尝试次数与失败原因。
每条路由可配置:
keepThinking:DeepSeek 原生路由上保留工具循环中的思考块(缺省仍摘除)breakToolLoop:在特定历史形态下追加用户提示,使出站以用户消息结尾,绕开 thinking 模式的工具循环校验
发生静默路由切换时,会在出站消息末尾追加与 DSH 自带的同款 model changed 通知(只改出站负载,不写会话记录)。
推理档位(0.10.0 起)¶
模型选择器为 auto 提供两档:Default(插件不写档位,由宿主/上游默认决定)与 max(逐跳取该路由能提供的最高档,对应 0.9.x 的旧行为)。
额度感知排序与冷却(0.8.0 起,0.11.x 增强)¶
默认 ordering.mode 为 auto:插件按订阅额度决定尝试顺序——有月度重置时刻的订阅按「越早重置越靠前」排,查不到重置时刻的按配置顺序,永不过期的按量兜底排在最后。某一跳因窗口额度耗尽被拒(错误码 QUOTA 或报文符合窗口额度语义;0.9.1 起判据已放宽以覆盖 Command Code 等文案)时,插件补查额度接口,确认后将该来源冷却到对应档位重置时刻,期间不再尝试,到点自动恢复。
0.11.0 起冷却表落盘(宿主领域存储),跨 DSH 重启与插件重组合仍存活到重置时刻;被 QUOTA 拒绝的当下先记 5 分钟短闸门,补查确认后换成重置时刻。面板冷却行右侧提供「解除」按钮(额度提前恢复时用);0.11.1 起「解除」指令的已消费记录也落盘,避免宿主重启后重复消费旧指令。
若要回到「完全按 routes 顺序、仅在失败时切换」的行为,将 ordering.mode 设为 manual(插件页有开关,热改生效)。
compactWindow 与压缩点¶
可通过 compactWindow(默认 500000 token)把自动压缩点钉在指定规模附近。DSH 压缩引擎按「该请求声明的窗口」算阈值;本插件对外宣称的窗口由压缩点反算。
插件页与观测¶
0.4.0 起自带浏览器半侧:在 Web 侧栏「插件」→「已安装」→ 点开 dsh-llm-auto 卡片,可直接改 compactWindow 等表单项。
回退链面板(0.5.0 只读,0.6.0 可编辑):拖拽改顺序、从 live 模型目录换模型、按行开关 keepThinking/breakToolLoop,保存写入 profile 的 cordis.patch.yml 并免重启生效;下半部分展示最近若干次请求的实际回退过程。
0.7.0 起只读「额度」摘要;0.8.0 起「自动排序」摘要(模式开关 + 实际尝试顺序,冷却条目带恢复时刻)。0.9.0 起界面按 auto/manual 模式收敛:自动模式主视图为「生效顺序」,可编辑链折进默认收起的「配置顺序」。
调试时可访问 http://127.0.0.1:19387/api/llm-auto/routes 查看实际走路由与当前声明的上下文窗口;0.6.0 起另有 GET /api/llm-auto/catalog 供链编辑器选模型。
安装与启用¶
在 DSH profile 目录(示例为 ~\.dsh\profiles\desktop\)下操作。
# ① 装进 profile:dshpm 会顺带把包名写进 dsh.profile.bundles
node <工作区>\dsh\dsh-plugin-manager\dshpm.mjs add file:./plugins/dsh-llm-auto --profile desktop
# 公开环境:profile 的 package.json 里加 "dsh-llm-auto": "github:liuyun847/dsh-llm-auto"
# 再 pnpm install(或 npm install)—— 同样只要包名在 dsh.profile.bundles 里
# ② 按本机 provider 改 routes:改包内 cordis.patch.yml 那一行(profile 层也可按 id 覆写)
# ③ 重启一次 DSH(本机桌面端:关掉再打开 DeepSeek Harness 窗口)
注意:0.4.0 新增的浏览器半侧必须重启一次 DSH 才会被收录;仅 HMR 时插件页可能暂时不出现配置表单。
启停:Web 侧栏「插件」页「已安装」区本卡总开关(写 dsh.profile.bundles);卡片内各行另有行级开关(向 profile 的 cordis.patch.yml 写 disabled 覆盖)。
卸载:
node dshpm.mjs remove dsh-llm-auto --profile desktop
若 profile 的 pnpm 带供应链策略导致 pnpm remove 报错,可在 profile 目录执行:
pnpm remove dsh-llm-auto --config.minimum-release-age=0
配置要点¶
配置入口有两处:插件页表单(compactWindow、routes、ordering.mode 等热改项)与包内 / profile 覆写的 cordis.patch.yml(结构性项如 retry 仅能通过 patch 改)。
包内注册示例(摘自 README,需按本机 provider 调整):
- insert:
- id: llm-auto
name: 'dsh-llm-auto'
config:
routes:
- { provider: commandcode, model: deepseek/deepseek-v4.1-flash }
- { provider: opencode-go, model: deepseek-v4.1-flash }
- { provider: deepseek-official, model: deepseek-flash, keepThinking: true, breakToolLoop: true }
compactWindow: 500000
# ordering.mode 默认 auto;manual 见上文
# retry 不写则每路由默认 5 次重试
| 键 | 默认 | 热改 | 说明 |
|---|---|---|---|
routes |
— | ✅ | 有序回退链,第一项即首选;model 须写 provider 声明的真实 id |
compactWindow |
500000 |
✅ | 自动压缩发生的 token 规模附近 |
ordering.mode |
auto |
✅ | auto 额度感知排序 + 冷却;manual 仅按配置顺序 + 失败切换 |
retry.* |
见 README | ✗ | 每路由重试上限、白名单、退避参数 |
标为热改的字段经宿主设置服务写入后原地更新,改链、改模式、改压缩点一般不必重启;retry 等结构性配置需改 patch 并依赖 apply 边界(见 README「生效条件」)。
典型用法¶
- 按上文安装并重启 DSH,在包内或插件页「回退链」中配置本机可用的
provider+model列表。 - 在模型选择器选择
Auto→auto(可按需选 Default / max 推理档)。 - 正常对话;若需确认实际路由,打开
http://127.0.0.1:19387/api/llm-auto/routes。 - 多订阅并存且希望优先用「快重置」额度时,保持
ordering.mode: auto,在插件页查看「生效顺序」与冷却行;若只要固定优先级,切到manual。 - 希望长上下文在固定 token 附近触发压缩时,在插件页调整
compactWindow。
适用场景与注意¶
适合:已配置多条 DSH provider,希望合并为一个模型入口;需要在 QUOTA、502、限流等情况下自动重试或切路由,且不想改 agent 或会话层代码的开发者。
注意:
- 插件在当前 DSH 进程权限下运行,安装前请自行审阅 源码与 MIT 许可证。
- 社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态主张「一切皆插件」,本介绍事实以仓库 README 为准。
ordering.mode等 YAML 值勿写入!!js、函数或非普通对象形态,否则可能导致整行插件加载失败(README 有说明)。
结尾¶
dsh-llm-auto 把多条「provider + model」收成模型选择器里的一个 auto,用有序回退、单路由重试和可选的额度感知排序,减少手工换模型和重复撞额度的问题。进一步了解与安装说明见社区目录页与 GitHub 仓库:
- 目录页:https://www.skillhub.cn/plugins/liuyun847/dsh-llm-auto
- GitHub:https://github.com/liuyun847/dsh-llm-auto