前言¶
在 DeepSeek Harness(DSH)里跑智能体时,LLM 请求失败并不少见:重试耗尽、认证错误、配额用尽、429 限流等。若只绑定单一 provider/model,当前步骤往往只能中断或手工换模型。官方社区里有基于降级链思路的插件;dsh-model-pool 由维护者 JiahaoXxX 发布,分类为模型推理,是 dsh-llm-fallbacks 0.6.5 的分支,把「链路由你完全配置」和「ModelPool / Auto 虚拟 provider」作为明确目标,并在选择器侧支持推理强度(reasoning effort)相关行为。
下面按定位、能力、安装与配置说明如何在 Web 与 dsh-tui 中使用。
这是什么¶
dsh-model-pool 是 DSH 的 provider 级模型池插件:在配置好的 provider/model 链上,当当前角色的请求因上述失败原因无法继续时,沿链切换到下一个模型,尽量让当前 step/turn 在同一任务里继续,而不是因模型问题整段停住。
与上游 dsh-llm-fallbacks 的两处 deliberate 差异(README 原文):
- 去掉「全天链必须以唯一官方 DeepSeek 模型(
deepseek-officialFlash/Pro)收尾」的规则;链的首尾可以是任意已配置的provider/model,顺序完全由settings.yaml决定。 - 模型选择器里的虚拟行名为 ModelPool / Auto(上游为 FallbacksChain / Auto);内部仍沿用上游标识:
fallbacks:配置命名空间、profile 行 idllm-fallbacks、cordis 服务fallbacks。
在 0.6.5 基础上增加:虚拟行展示池内推理档位并集,选择器可选推理强度;每次委派请求会 pin 到实际链头模型能接受的最近档位。
插件未上架 npm,需从 git URL、本地目录或打包 tarball 安装;仓库带预构建 dist/,无 prepare/postinstall,目标机不编译。许可证 MIT;package.json 声明版本 0.2.7,Node >=22,peer 依赖对齐 DSH 0.2.0-rc.2 系列(以 package 为准)。GitHub 仓库:JiahaoXxX/dsh-model-pool;社区目录页:skillhub 条目(独立社区站点,与 DeepSeek / 幻方无官方从属关系)。
核心功能¶
降级链(rootChain 与命名池)¶
fallbacks.rootChain 定义默认池:按列表顺序尝试,首项为链头。失败时在链上 walk,例如 workbuddy → qoder → trae 等任意组合,不要求链尾必须是官方 DeepSeek 模型。
可选 fallbacks.pools 为额外独立池,每项 id 在选择器中呈现为 ModelPool/<id>(如 ModelPool/glm-5.3),各自一条 chain。
时段切换 effective root¶
timeSlots 按墙钟窗口轮换生效的根链:每条 slot 自带 chain;当前时刻落入某 slot 窗口时,下一次 root 请求用该 slot 的链替代全天 rootChain;无匹配则仍用 rootChain。这是路由种子,不消耗 cooldown,与失败 walk 分离;失败时仍走降级切换。
内置四套 UTC+8 预设(代码常量,预设行锁定 tz 为 Asia/Shanghai):
| Preset | Window |
|---|---|
liang-peak |
周一至周五 09:00–12:00、14:00–18:00 |
liang-valley |
其余 UTC+8 时间 |
glm-peak |
周一至周五 14:00–18:00 |
glm-valley |
其余时间 |
glm-peak / glm-valley 仅在配置了 zai-coding-cn 时出现在卡片选择器。匹配顺序:在 fallbacks.tz(默认 Asia/Shanghai)下,第一个窗口包含当前时刻的额外行优先;无匹配 → 全天 rootChain。
角色与子智能体¶
可选 roles.list 声明角色实体及各自 chain;roles.rules 仅作用于 subagent,不匹配 root 请求。例如 reviewer 角色可先走专用链,再通过 fallback: inherit-root 回落到 rootChain。
配置与诊断入口¶
设置写入共享 fallbacks: 命名空间,三处可编辑(同一 $DSH_HOME/settings.yaml):
| 入口 | 说明 |
|---|---|
| Web | Settings → Plugins → Model pool 卡片 |
| YAML | $DSH_HOME/settings.yaml 的 fallbacks: |
| dsh-tui | /settings 中 fallbacks 段(dsh-tui ≥ v0.8.5) |
只读诊断:dsh-tui 的 /fallbacks、/fallbacks config。
Web 与 dsh-tui 均支持;TUI 还可通过上述命令查看运行态。
安装与启用¶
插件以当前 DSH 进程权限运行,安装前建议自行查看仓库源码与 MIT 许可证。
不要与官方 dsh-llm-fallbacks 同时启用:profile 行 id llm-fallbacks 故意共用,两个插件并存会冲突;请先卸载官方插件。
从 git 安装(README 示例,将 <owner> 换为 JiahaoXxX):
dsh plugin --profile web add github:JiahaoXxX/dsh-model-pool
dsh plugin --profile dsh-tui add github:JiahaoXxX/dsh-model-pool
DSH Desktop 可在 Plugins 页安装框填入相同 spec(github:owner/repo 或绝对路径;相对路径会被拒绝)。安装后需重启 DSH Desktop(插件在启动时加载,仅刷新浏览器不够)。
本地目录或 tarball(路径需可读 package.json 且含 name 与 dsh.bundle):
dsh plugin --profile web add /absolute/path/to/dsh-model-pool
dsh plugin --profile web add /absolute/path/to/dsh-model-pool-0.1.0.tgz
registry spec 可用 @<version> 固定版本。包内带中英文 locale 与 icon.svg,由宿主自动展示。
典型配置¶
在 $DSH_HOME/settings.yaml 增加 fallbacks: 段。最小示例(链顺序与 provider 名需换成你环境中已配置的项):
fallbacks:
rootChain:
- workbuddy/glm-5.3
- qoder-global/qfmodel
- trae-cn/doubao-seed-1.6
timeSlots:
- kind: preset
preset: liang-peak
chain:
- qoder-global/qfmodel
- kind: custom
name: evening
start: '22:00'
end: '02:00'
days: [1, 5]
chain:
- openai/gpt-4o
roles:
list:
- id: reviewer
persona: Code-review subagents
chain:
- openai/gpt-4o-mini
fallback: inherit-root
rules:
- role: reviewer
pools:
- id: glm-5.3
chain:
- zai-coding-cn/glm-5.3
配置完成后,在模型选择器中选 ModelPool / Auto 或命名池行;按 README,虚拟行会反映池内推理档位并集,请求会按链头实际能力对齐档位。
适用场景与注意¶
适合已在 DSH 中配置多个 provider、希望用 YAML 或 Web 卡片统一管理「首选 → 备用」顺序,并希望在 peak/valley 时段自动换链头、子智能体走独立链的用户。
注意:时段切换只影响下一次 root 请求的链种子;429/QUOTA/AUTH 等仍触发链上 failover。与上游 fork 关系意味着行为与 dsh-llm-fallbacks 文档部分相通,但链尾官方模型约束已移除,且 UI 名称为 ModelPool。
结尾¶
dsh-model-pool 把 DSH 的模型降级做成可完全自定义的 provider 级池:Auto 与命名池、链式 failover、可选时段与角色规则,并在选择器侧考虑推理强度。细节与完整字段以仓库 README(含 README.zh-CN.md)为准。
- 目录页:https://www.skillhub.cn/plugins/JiahaoXxX/dsh-model-pool
- GitHub:https://github.com/JiahaoXxX/dsh-model-pool