Visol-456/dsh-llm-fallback ↗★ 3
@visol-456/dsh-llm-fallback
用于 DeepSeek Harness LLM 层的服务商回退链插件,支持在请求失败时自动切换至备用目标。
AI 分析
核心用途是提高大模型调用的可用性和容灾能力。适合在主力 API 遭遇限流、超时或服务器故障时,需要自动无缝切换到备用模型渠道的用户。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Visol-456/dsh-llm-fallback说明文档
阅读完整 README ↗配置项
所有键都是顶层(不再有 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 时局域网客户端无法写入,但仍不建议将该端点暴露给不受信网络。