前言¶
在 DeepSeek Harness(DSH)裏,同一個邏輯模型往往出現在多個提供方上:deepseek-v4-pro 可能既走第一方賬號,也走第三方路由;同名或近似的 Flash 模型也可能分散在不同渠道。常見做法是每次會話手動選一條路由,並自己記住哪條當前可用。路由一換,還要重新面對配額、延遲和 prompt 緩存是否還能複用的問題。
下面介紹社區插件 dsh-model-pool(維護者 BruceZhang1993,分類爲模型推理)。它把已註冊提供方的模型聚合成一個 Model Pool:你在輸入區只選池內模型和思考深度,具體由哪條提供方服務交給可配置策略與健康感知失敗轉移來決定。
這是什麼¶
dsh-model-pool 是 DeepSeek Harness 插件,npm 包名 dsh-model-pool,許可證 MIT,要求 Node.js >= 20。Host 側爲純 ESM(index.js + lib/),瀏覽器側爲手寫客戶端模塊(client.js);peer 依賴 @deepseek-ai/dsh-llm、@deepseek-ai/schemastery 由 DSH Host 提供,安裝插件本身無需額外裝運行時依賴,也無需構建步驟。
插件註冊一條虛擬路由 model-pool,對外展示的是各提供方模型的並集(經 modelGroups 可合併不同 id 的同一邏輯模型)。選擇單位從「提供方 + 模型 id」變成「池內模型」;提供方成爲實現細節。
核心功能¶
路由策略¶
在 設置 → 模型池 中選擇策略後,每次 llm/stream 調用在派發前被攔截並重定向到具體提供方:
| 策略 | 作用 | 適用場景 |
|---|---|---|
priority |
按配置的優先級順序嘗試 | 有明確首選並提供備份 |
round-robin |
每次調用輪換起始提供方 | 等價路由間均攤負載 |
weighted-random |
按權重隨機 | 偏好某路由但不硬綁定 |
least-used |
優先調用次數最少的提供方 | 均衡且無需嚴格輪換 |
fastest |
優先近期首塊延遲最低(EWMA) | 延遲敏感;首呼相當於探測 |
cheapest |
優先聲明成本提示最低 | 成本敏感的批量任務 |
priority、least-used、fastest、cheapest 在 key 相同時保持 providerOrder 順序,行爲穩定。
健康感知與失敗轉移¶
每條具體路由有狀態:ok、degraded、unavailable、unknown。失敗會進入 cooldownMs 冷卻並帶失敗碼記錄;有其他候選時跳過不可用路由。只有在尚未有任何輸出流式到達用戶時纔會轉移;已有部分輸出則不再重放。maxAttempts 限制單次調用最多嘗試的提供方數;fallback: false 時只試第一個候選。
Sticky 會話(默認開啓)¶
sticky 把會話固定到首次成功服務該會話的路由,避免每輪輪換導致提供方 prompt 前綴緩存失效。失敗轉移仍有效:無輸出前的失敗會換候選,存活路由成爲新 pin;冷卻中的 pin 會被跳過。僅池內調用參與;換池內模型或從未選池的會話不受影響。需要在多賬號間按調用分攤配額而非複用緩存時,可在 設置 → 模型池 → 行爲 關閉。
提供方優先級與峯谷時段¶
providerOrder 決定 priority 排序,以及 least-used、fastest、cheapest 的平局與失敗轉移回退順序。可在 設置 → 模型池 → 提供方優先級 用箭頭調整,或寫入 cordis.patch.yml:
providerOrder: [deepseek-account, workbuddy, our-free-model]
峯谷時段(peak / idle) 按當前時刻對提供方使用不同排序。默認時區 Asia/Shanghai,高峯爲週一至週五的 09:00-12:00 與 14:00-18:00,並考慮國務院調休:補班週六按工作日高峯,法定節假日與週末其餘時間爲空閒。peakProviderOrder / offPeakProviderOrder 爲空則繼承 providerOrder。法定節假日數據來自 holiday-cn,插件自動同步至 $DSH_HOME/model-pool/calendar.json(未設置 DSH_HOME 時爲 ~/.dsh 下),網絡失敗時保留緩存並回退星期規則,不阻斷路由。
思考深度、圖片與模型合併¶
池對外公佈各候選思考深度的並集,路由器映射到目標最近層級(精確匹配優先)。上下文窗口取候選中的最小值,保證能進池的請求也能進任一 failover 目標。
輸入模態取並集:帶圖片的調用在策略運行前收窄到接受圖片的候選,避免「有一個純文本候選就拒絕全池上傳」的交集陷阱。
modelGroups 把不同提供方上的同名/近似 id 合併爲一行(默認已合併 DeepSeek V4.1 Flash、GLM 5.3 Flash 等),可在 設置 → 模型池 → 合併組 或配置中編輯。
界面與可觀測性¶
安裝驗證通過後,設置 → 模型池 列出池內模型、提供方數量、思考深度與逐路由狀態;輸入區模型選擇器有 Model Pool 條目。輸入區停靠欄會顯示當前會話的實際路由(提供方、真實模型 id、思考深度、所選池模型),隨失敗轉移更新;非池會話不顯示該項。
安裝與啓用¶
環境:DSH 桌面版或 CLI,Node.js >= 20。
DSH 桌面版:打開插件管理器,在註冊表搜索 dsh-model-pool 並安裝,然後重啓 DSH 桌面版。
CLI profile(命令來自項目 README):
dsh plugin --profile web add dsh-model-pool # latest
dsh plugin --profile web add dsh-model-pool@0.1.0 # pin a version
安裝後需在 profile 內重啓;dsh plugin 在 profile 目錄委託 pnpm,並將 bundle 選入 dsh.profile.bundles。
本地開發安裝(鏈接本地目錄而非下載):
dsh plugin --profile web add /absolute/path/to/dsh-model-pool
驗證:存在 設置 → 模型池,且 composer 可選 Model Pool 模型。更完整的步驟與故障排查見倉庫 docs/installation.md(中文:installation.zh-CN.md)。
典型用法¶
經過上面的安裝與重啓,可按下面順序使用:
- 打開 設置 → 模型池,查看各池內模型與路由狀態;選擇策略,按需調整行爲開關、提供方優先級或峯谷時段排序。
- 在輸入區模型選擇器中選擇 Model Pool 下的模型及思考深度。
- 正常對話;某路由失敗且尚無輸出時會冷卻並 failover;可在設置頁查看狀態徽章,在停靠欄查看本會話實際路由。
日常策略也可寫在 cordis.patch.yml 的 model-pool 配置塊中(如 strategy、cooldownMs、maxAttempts、weights、costs 等),升級後仍保留。完整字段示例見 GitHub README.zh-CN.md 的配置一節。
適用場景與注意¶
適合已在 DSH 中註冊多個提供方、且同一邏輯模型有多條重疊路由的用戶:希望用策略統一選路、失敗自動切換,並可選按國內工作日峯谷或節假日調整優先級。
使用前請注意:
- 插件與 DSH 進程同權限運行;安裝前建議閱讀 源碼與 MIT 許可證,確認路由與日曆同步行爲符合你的環境。
- 健康與輪詢狀態按 Host 世代保存在內存,重啓會清空;節假日日曆緩存在磁盤。首次日曆同步需要網絡。
- 路由粒度是按調用;關閉 sticky 時同一會話多輪可能走不同提供方。
round-robin等均衡策略與 prompt 緩存複用存在權衡,文檔建議緩存更重要時可考慮priority或保持 sticky。 - DSH 社區插件目錄(如 SkillHub 條目)由社區維護,與 DeepSeek / 幻方無官方從屬關係;安裝來源以註冊表或 npm 包爲準。
結尾¶
dsh-model-pool 把「選模型」和「選提供方」拆開:一次選定池內模型,由策略、健康門控、sticky 與可選峯谷/節假日策略完成具體路由。若你在多提供方 DSH 環境裏做推理與智能體開發,值得在測試 profile 裏裝一份對照日常手動選路的開銷。