dsh-polyglot:爲 DSH 提供 OpenAI 兼容端點切換與自動回退

前言

在 DSH 裏調用外部模型時,常見的問題不只是缺少一個 OpenAI-compatible endpoint,而是多個 endpoint 同時存在、免費額度不穩定、限流後需要切換,以及每次調用到底由哪個 provider 服務、消耗了多少 token 需要可查詢。

dsh-polyglot 是 Jesse-njx 維護的一個 DSH 插件,MIT 許可。它把若干 OpenAI-compatible provider 收斂成一個可選擇的虛擬 provider polyglot,並在 free tier 觸發 429、quota-exceeded、5xx 或缺少 key 時自動切到鏈中的下一家。

這是什麼

dsh-polyglot 可以概括爲三件事:

  • 一個通用的 OpenAI-compatible ctx.llm 適配器;
  • 一組以 JSON 文件維護的 provider preset;
  • 一個在請求失敗時自動回退的 router。

它適合需要在 DSH 裏使用多個 DeepSeek 或其他 OpenAI-compatible 端點、並且希望 free tier 限流時不直接中斷調用鏈的場景。

核心功能

一個通用 ctx.llm 適配器

dsh-polyglot 提供一個 single generic OpenAI-compatible ctx.llm adapter,參數包括:

baseUrl
apiKey
model
optional headers
quirks

這個 adapter 處理 streaming、tool calls 和 usage extraction。不同 provider 的偏差通過 quirks 這類聲明式配置表達,而不是爲每個 provider 單獨寫一套 adapter。

自動回退路由

router 會在以下情況觸發 fallback:

429
quota-exceeded
5xx
missing key

觸發後,失敗的 provider 會進入 cooling-down 狀態,策略包括 exponential backoff 和 Retry-After support。請求會嘗試鏈中的下一個 provider。

如果一個 provider 沒有配置 key,它會被自動跳過。因此整條鏈可以降級運行,而不是因爲某一個 key 缺失而硬失敗。

需要區分兩種失敗:

  • 如果 fallback-eligible failure 發生在 content 尚未流出之前,可以切換到下一個 provider;
  • 如果 failure 發生在 content 已經流出之後,已經寫入的內容無法撤回,最終以 normal error finish 呈現。

Provider presets

provider preset 是位於 presets 下的 JSON data files。每個 preset 帶有 verifiedAt 和 free-tier notes,方便查看該 provider 的免費額度、限制和注意事項。

資料中註明 provider figures 可能每週變化,因此 preset 裏的 verifiedAt 用於體現驗證時間。

會話日誌與用量統計

每次嘗試都會記錄到 session log 中,標記爲:

polyglot/served

/polyglot usage 基於 session log 彙總每個 provider 的 calls、ok/failed、tokens 和 estimated cost。

命令

插件提供以下命令:

/model
/model <chain>
/polyglot
/polyglot usage
/polyglot presets

其中:

  • /model 用於查看 chains 和 active one;
  • /model <chain> 用於在 session 中切換 active chain;
  • /polyglot usage 用於查看每個 provider 的調用和用量彙總。

安裝與啓用

使用以下命令安裝到指定 DSH profile:

dsh plugin --profile web add @dsh-polyglot/bundle

安裝完成後,在 model selector 中選擇虛擬 provider:

polyglot

選擇後,請求會經過 dsh-polyglot 的 adapter 和 router 處理。未配置 key 的 provider 會被跳過,鏈繼續嘗試後續 provider。

典型用法

配置 key

不同 preset 通過 credentials seam 或環境變量配置 key。示例中給出的環境變量包括:

export NOUS_PORTAL_TOKEN=...      # nous-portal (bearer, manual token for v0.1)
export OPENCODE_API_KEY=...       # opencode-zen
export DEEPSEEK_API_KEY=...       # deepseek-official (new accounts: 5M free tokens, 30 days, no card)
export KILO_API_KEY=...           # kilo (paid fallback rung)

配置完成後,polyglot 會按鏈中的 provider 順序嘗試可用端點。

查看和切換 chain

查看當前 chain:

/model

切換 active chain:

/model <chain>

切換行爲會作爲 polyglot/chain 記錄。

查看用量

查看每個 provider 的彙總:

/polyglot usage

彙總內容包括 calls、ok/failed、tokens 和 estimated cost。

查看 preset 狀態:

/polyglot presets

適用場景與注意

適合以下場景:

  • 在 DSH 中接入多個 OpenAI-compatible provider;
  • 希望 free tier 限流後自動切換;
  • 需要查看每次請求由哪個 provider 服務;
  • 需要按 provider 彙總 tokens 和 estimated cost。

安裝和使用時需要注意:

  • 插件以當前 dsh 進程權限運行,安裝前應檢查源碼、許可證和 preset notes;
  • free tiers often gated for evaluation use;
  • OpenCode Zen 的 commercial terms 在資料中標記爲 undocumented;
  • preset notes 會在 configure time 暴露 ToS concerns;
  • dsh-polyglot 不會 silently launder usage;
  • provider 數據可能隨時間變化,應結合 verifiedAt 查看。

鏈接

GitHub:

https://github.com/Jesse-njx/dsh-polyglot

目錄頁 URL 未在已覈實資料中給出。

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

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

小夜