Visol-456/dsh-llm-fallback3

@visol-456/dsh-llm-fallback

用于 DeepSeek Harness LLM 层的服务商回退链插件,支持在请求失败时自动切换至备用目标。

AI 分析

核心用途是提高大模型调用的可用性和容灾能力。适合在主力 API 遭遇限流、超时或服务器故障时,需要自动无缝切换到备用模型渠道的用户。

包名
@visol-456/dsh-llm-fallback
版本
0.1.1
许可证
MIT
最近更新
2026年8月14日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Visol-456/dsh-llm-fallback

配置项

所有键都是顶层(不再有 chains/match):

  • fallbacks(需要路由时必填,至少一条):按顺序排列的 (provider, model) 备用目标,请求失败后切换过去。请求本身是链头,永不被改写;条目不得重复 (provider, model) 组合。省略 fallbacks 键合法且插件保持休眠(可在 Settings -> 回退链 页创建,或写入 /settings.yaml)。
  • switchCodes(默认 EMPTY_RESPONSE, RATE_LIMIT, SERVER, UNKNOWN_MODEL, TIMEOUT, TRANSPORT,覆盖瞬时故障与配置错误类):允许触发切换的失败码;其他错误码永不切换。
  • failureThreshold(默认 1):链头(或某个 fallback)上的连续合格失败数达到该值即打开熔断;冷却探测失败则无条件打开。
  • cooldownMs(默认 0):切换后链头在多长时间内保持排除、之后才可被再次探测。

建议:把 cooldownMs 设为至少 30000。默认 0 意味着每个请求都会先探测链头,故障期间每个请求都会先在链头上失败一次,再被备用条目接管。

破坏性变更(0.1.x):配置曾用过 chains[] 里的 providers(0.1.0)或 match + fallbacks(更早的 0.1.1 快照)。这些都没了:链头永远是请求本身,只需顶层 fallbacks 列表(加上切换规则)。迁移:chains: [{ match: { provider: A.provider, model: A.model }, fallbacks: [B, C] }]fallbacks: [B, C]。加载含旧 chains/match/providers 键的配置会报清晰弃用错误。

非空配置非法时,插件加载(或经 settings seam 保存时)会直接报错。

Web UI 配置(dsh web)

无需手写 cordis.yml,也可以在 Harness 的 Web 界面里编辑备用目标。插件加载到 dsh web profile 后,Settings 面板会出现一个 回退链(Fallback)页面(与 Models 并列):

  • 没有配置任何备用目标时,页面显示引导空状态:「还没有备用目标」+「添加备用目标」按钮;新建并保存的第一个目标在下一次请求生效。
  • 编辑备用目标:每行都用下拉选择(provider 与 model 均取自 harness 模型目录;选中 provider 后联动刷新 model 列表,从根源杜绝手填出 11111 这类不存在的 model),上移/下移/删除按钮在行内右侧;切换错误码(宽输入框)、失败阈值与冷却时间在下方同一对齐网格里,然后点击 保存
  • 保存的值写入 /settings.yaml,并在下一次请求生效(无需重启)。解析顺序为 schema 默认 → cordis.yml 条目 → 已保存的 UI 段,因此 UI 保存优先,cordis.yml 未写的字段回落到默认值。
  • 重置为 cordis.yml 会清空已保存段,恢复纯 cordis.yml 行为(若条目无链则回到休眠模式)。
  • 若其他窗口或设置文档修改了配置,页面会显示冲突横幅,提示先重新加载再应用。

浏览器通过插件在共享 web server 上提供的仅回环端点(/llm-fallback/config)读写该段。端点拒绝非回环来源与跨站请求;它是防误写/防跨站围栏,不是鉴权层。当 web server 绑定 0.0.0.0 时局域网客户端无法写入,但仍不建议将该端点暴露给不受信网络。