前言¶
在 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 未在已覈實資料中給出。