前言¶
在 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 未在已核实资料中给出。