前言¶
在 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