dsh-poor-router:爲 DeepSeek Harness 做的免費/廉價模型池路由

前言

在 DeepSeek Harness(DSH)裏跑智能體工作流時,模型往往不是單一付費 API,而是散落在各處的免費額度:廠商試用積分、活動贈額、OpenRouter 的 :free 路由等。它們常在同一晚裏先後掉線——請求寫到一半斷流,手動換模型又撞上另一個半死不活的端點,時間耗在「救火」而不是開發上。

手工記臺賬、憑感覺切模型,很難同時處理「誰在當下健康」「失敗後是否同檔無縫替補」「真花錢時是否有上限和通知」這類問題。下面介紹的 dsh-poor-router(README 亦稱 poor-router / 窮鬼路由器)是 DSH 生態裏的工作流類插件:把多條免費/廉價入口收成統一資源池,按請求記賬、用 Thompson 採樣做自適應選路,並在流式失敗時自動改道。

這是什麼

dsh-poor-router 面向 DeepSeek Harness 的 Budget-LLM pool router:維護可達模型的臺賬(ledger)、健康度跟蹤,並在免費檔模型之間用 Thompson sampling 做故障轉移;帶 Web 設置頁儀表盤與輸入框旁的實時改道路由徽章。

插件版本在 package.json 中爲 1.0.0,許可證 MIT,運行環境要求 Node.js >= 20。倉庫在 README 安裝說明中指向 GitHub 用戶 yishengdaxiaonengjihui 下的 dsh-poor-router;社區目錄另有 SkillHub 插件頁 可作檢索入口。SkillHub 與 DeepSeek / 幻方無官方從屬關係,DSH 本身也遵循「一切皆插件」的擴展方式,此文僅從公開 README 與包元數據歸納能力,不表述爲官方應用商店條目。

README 寫明:若能穩定負擔 API 賬單,這類「窮鬼向」設計並非目標用戶——插件只在全部免費候選都不可用時,才通過逃生口動用帶日封頂的最便宜付費模型,並用 SMS 告知花費。

核心功能

以下均出自項目 README 與 package.json 描述,按機制分組說明。

自動臺賬(pool.json)

每次請求按「條目」計量:調用次數、成功 / 失敗 / 中止、TTFT 的 EMA、輸入輸出 token(含 reasoning token)。首次見到的模型會自動登記進 pool.json。

Thompson 採樣自適應路由

每條目維護 Beta 後驗(成功/失敗),配合高斯近似採樣;TTFT 懲罰項爲 3000ms/ttft;當前小時桶權重加倍。路由決策在 llm/stream 鉤子裏完成,邏輯概覽如下:

llm/stream hook
├─ aux/small request? ──► executor pool (thickest remaining grant)
│                          └─ every 6th ──► epsilon-explore unused free model
├─ provider cooling? ──► pickAlt(): same tier → down A/B/C → escape hatch (paid, capped, cheapest)
├─ model cooling?   ──► pickAlt()
└─ hour-congested?  ──► pickAlt()      (today's bucket fail-rate > 60% @ n≥4)

pickAlt() samples candidates with Thompson sampling × TTFT penalty;
34% chance to inject an unused newcomer into the same-tier window.
Every decision is logged to the ring buffer; nothing writes back to config.

小時桶 v2

擁塞判斷僅使用當天本地鍵 YYYY-MM-DD:HH 的桶,7 天滾動裁剪,避免陳舊數據造成「永久擁塞」誤判。

同質量檔位梯隊

可爲模型打 tier: S/A/B/C。改道時優先同級,再順降 A→B→C,最後才上檔;檔位可在面板編輯並即時持久化。

Executor 池

將廉價高配額模型標爲 role: executor,瑣碎/輔助子請求路由到剩餘 grant 最厚的一條;每第 6 次此類請求會對未使用的免費模型做 epsilon 探索(另有 34% 同檔採樣注入)。

真花錢護欄

付費模型設 paid: true,配置每百萬 token 價格與日封頂 dailyCapYuan;它們不會進入普通候選列表,僅當所有免費候選都「死亡」時經逃生口按最便宜優先啓用,過半日封頂時通過 text_me 發短信警告。

廠商熔斷

AUTH/QUOTA 類失敗使 provider 冷卻 10 分鐘,429 冷卻 90 秒;冷卻狀態跨重啓保留。

取證與面板

切換日誌(環形 50 條)落盤,保留 Thompson 採樣記錄與 persist 日誌;Web 設置頁展示可用性排序(後驗均值 × 延遲懲罰)、按廠商分組的臺賬行(可展開改有效期/grant/tier)、近期切換與 TS picks。輸入框左側 ⚡ 徽章在約 5 秒內顯示最近一次請求實際服務的模型及原因(如 aux-explore),懸停可看詳情,十分鐘後變淡,可開關。

Session 工具

插件註冊兩個會話工具:pool_status(全量快照)、pool_control(setTier、setRouting、setAdaptive、setBadge、setExpiry、setGrant、setDisabled、clearProviderCooldown、reloadPool 等覆蓋項)。無 Web GUI 時工具仍可在 headless 環境使用,面板與徽章無處渲染而已。

FAQ 要點:改道不會改變你在配置裏固定的模型——按請求無狀態,每次從配置模型出發,僅當次調用可能被替換;全部免費模型同時掛掉時走逃生口 + SMS,任一恢復後恢復正常選路。

安裝與啓用

README 推薦的 GitHub 安裝方式爲(須原樣使用,勿憑插件名自行拼接 owner):

dsh plugin --profile web add github:yishengdaxiaonengjihui/dsh-poor-router

也可在對應 profile 的 package.json 中加入依賴 "dsh-poor-router": "github:yishengdaxiaonengjihui/dsh-poor-router",在 dsh.profile.bundles 中列出,再執行 pnpm install。

本地聯調時,在 <DSH_HOME>/profiles/web/ 的 package.json 裏用 link: 指向本機路徑,例如:

# in <DSH_HOME>/profiles/web/
# package.json dependencies:
"dsh-poor-router": "link:D:/somewhere/dsh-poor-router"

完成後重啓 DSH;Web 客戶端相關模塊由 client-modules 自動打包。

配置

數據與模型條目集中在 pool.json。插件級路徑默認 <cwd>/poor-router/,可在 profile 的 cordis.patch.yml 中覆蓋:

- id: poor-router
  name: dsh-poor-router
  config:
    dataDir: 'D:/my-data/poor-router'   # base dir for all three files
    # or individually:
    # poolPath: '...'
    # statePath: '...'
    # importPath: '...'
    layerRules:                          # optional default layers by id prefix
      - { match: 'deepseek-official/', layer: 'backbone' }
      - { match: 'tokenrouter/', layer: 'matchstick' }

常用條目字段:

field meaning
id provider/model — must match what the harness proposes
expiresAt ISO date; urgency sort + panel countdown
grantRemaining / grantUnit executor-pool budgeting
tier S/A/B/C quality ladder (panel-editable)
role "executor" joins the aux-request pool
layer backbone (never burned) / burn / matchstick
paid + priceIn/OutYuanPerM + dailyCapYuan real-money guardrail
escapeHatch allow this paid model as last-resort

先在 DSH 中啓用插件並跑通若干真實請求,讓未見過的模型自動進入 pool.json;再在面板或 pool_control 中補全 expiresAt、grantRemaining、tier、role 與付費護欄字段,與你在 Harness 裏配置的 provider/model id 保持一致。

適用場景與注意

適合:長期混用多條免費或極低價 LLM 額度、希望 DSH 工作流在單點失敗時自動同檔替補、需要可視化臺賬與改道原因的場景。

注意:

  1. 插件以當前 DSH 進程權限運行,安裝前請閱讀源碼與 MIT 許可證,並確認 text_me、付費逃生口等配置是否符合你的風控要求。
  2. 安裝命令中的 GitHub 座標以 README 原文爲準(yishengdaxiaonengjihui/dsh-poor-router),與目錄站展示路徑可能不同,以你實際 dsh plugin add 的源爲準。
  3. 逃生口會花真錢並可能發短信;免費池全部不可用纔會觸發,但仍需自行設置 dailyCapYuan 與價格字段。

結尾

dsh-poor-router 把分散的免費額度當成一個池:記賬、採樣選路、熔斷與同級改道,儘量讓 Harness 會話在配額抖動時仍能跑完;必要時才動用封頂付費模型。

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

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

小夜