前言¶
DSH 支持插件擴展,但免費層級的 API 經常在使用中途耗盡。手動切換很繁瑣。dsh-poor-router 將這些資源池化,追蹤使用情況,監控健康狀況,並自動切換。
插件簡介¶
dsh-poor-router 是一個預算 LLM 池路由器,用於 DeepSeek Harness。它由 yishengdaxiaonengjihui 維護。插件解決的核心問題是:免費模型分散且壽命短,需要在請求失敗時無縫切換。它提供自動記賬、健康追蹤和基於 Thompson 採樣的自適應路由。
核心能力¶
-
自動記賬
插件會記錄每個條目的調用次數、成功/失敗/中止狀態、首字生成延遲(EMA)以及 Token 的流入流出。首次發現的模型會自動註冊到pool.json。 -
Thompson-sampling 自適應路由
路由決策基於每個條目的 Beta 後驗分佈和高斯近似採樣。決策時考慮首字生成延遲懲罰(3000ms/ttft)和當前小時的桶權重。34% 的概率會注入一個未使用的同層新模型。 -
每小時桶 v2
擁塞判斷僅基於當日的小時桶(YYYY-MM-DD:HH本地時間),並配合 7 天滾動修剪。這避免了因歷史數據導致的“幽靈”擁塞。 -
同質量階梯
模型通過tier: S/A/B/C標籤分類。路由優先選擇同層模型,其次按 A→B→C 降級,僅在必要時爬升。階梯可在 Web 面板中實時編輯。 -
執行器池
標記爲role: executor的廉價高配額模型會被加入執行器池。瑣碎或輔助請求會被路由到剩餘配額最厚的模型。每 6 次這樣的請求中,有一次會進行 epsilon 探索。 -
付費護欄
標記爲paid: true的模型擁有每日限額。它們不會出現在候選列表中,僅作爲“轉義艙”使用。當所有免費候選都失效時,插件會切換到最便宜的付費模型,並觸發 SMS 警告。 -
提供者斷路器
針對認證失敗(AUTH)、配額不足(QUOTA)和 429 錯誤分別設置了冷卻時間(10 分鐘、90 分鐘),冷卻狀態會持久化。 -
取證與日誌
插件維護一個保留 50 條的切換日誌(環緩衝區)和 TS 樣本記錄,所有取證數據持久化到磁盤。 -
Web 面板與重定向徽章
提供設置頁儀表盤,顯示可用性排名、分組 Ledger 和最近切換記錄。輸入框左側顯示 ⚡ 重定向徽章,展示最近一次請求的來源和原因。
安裝與啓用¶
在 DSH 環境中運行以下命令安裝插件:
dsh plugin --profile web add github:yishengdaxiaonengjihui/dsh-poor-router
或者手動編輯 package.json,添加依賴並運行 pnpm install。
配置¶
配置文件主要位於 pool.json(與模型配置同級)和插件的默認路徑 <cwd>/poor-router/。插件級路徑可在 cordis.patch.yml 中覆蓋。
cordis.patch.yml 示例¶
- id: poor-router
name: dsh-poor-router
config:
dataDir: 'D:/my-data/poor-router' # 基礎目錄
layerRules:
- { match: 'deepseek-official/', layer: 'backbone' }
- { match: 'tokenrouter/', layer: 'matchstick' }
pool.json 字段說明¶
| 字段 | 含義 |
|---|---|
id |
provider/model,必須與 Harness 提供的 ID 一致 |
expiresAt |
ISO 格式日期,用於排序和麪板倒計時 |
grantRemaining / grantUnit |
執行器池的預算配置 |
tier |
質量階梯 S/A/B/C |
role |
"executor" 加入執行器池 |
layer |
backbone(永不燒) / burn / matchstick |
paid + priceInYuanPerM + dailyCapYuan |
付費護欄配置 |
escapeHatch |
允許作爲最後手段使用的付費模型 |
代理工具¶
插件註冊了兩個會話工具,可通過 CLI 調用:
pool_status:獲取完整的快照,包括摘要和每個條目的統計。pool_control:用於覆蓋配置,如setTier(設置質量)、setRouting(設置路由模式)、setBadge(顯示徽章)、setExpiry(設置過期)、clearProviderCooldown(清除冷卻)等。
注意事項¶
- 無狀態路由:路由決策是每次請求無狀態的,不會永久修改配置。
- 轉義艙:當所有免費模型失效時,插件會切換到最便宜的付費模型,並通過
text_me發送 SMS 提示。 - 無頭運行:插件可以在沒有 Web GUI 的情況下運行,CLI 工具依然可用。