dsh-model-pool:把多提供方收成同一模型池

前言

在 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)。

典型用法

經過上面的安裝與重啓,可按下面順序使用:

  1. 打開 設置 → 模型池,查看各池內模型與路由狀態;選擇策略,按需調整行爲開關、提供方優先級或峯谷時段排序。
  2. 在輸入區模型選擇器中選擇 Model Pool 下的模型及思考深度。
  3. 正常對話;某路由失敗且尚無輸出時會冷卻並 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 裏裝一份對照日常手動選路的開銷。

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

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

小夜