请求失败时自动切换供应商池中的下一个模型重试
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add QGG4588/dsh-model-failover该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
- 发起网络请求client.js:49
return fetch('/api/model-failover/' + path, init).then(async (r) => {
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 模型故障自动转移 · 服务商池故障转移:遇到限流、配额不足或超时,自动用所选服务商完整模型池里下一个没试过的模型重试。运行时工具:model_failover。
README
由 DeepSeek 最新模型翻译生成dsh-model-failover — 模型故障自动转移
DeepSeek Harness 插件:模型请求失败时,自动切换到「所选供应商池」中的下一个模型重试。
它解决什么
DSH 官方模型选择是「一次选定、失败就报错」。官方 dsh-llm-retry 只在同一供应商内重试——如果供应商整体限流/配额耗尽/宕掉,重试 5 次后这一轮仍然失败。
本插件在供应商之间做故障转移:
- 池 = 所选供应商下的全部模型:只选一个供应商 → 该供应商内所有模型轮询;选多个 → 按顺序跨供应商池轮询。
- 失败即切:RATE_LIMIT / QUOTA / TIMEOUT / SERVER / TRANSPORT / EMPTY_RESPONSE 等可配置的机器可路由 code 触发;每个候选模型只试一次,绝不重复试同一个。
- 池尽即还原:整个池都失败时交还原错误,不掩盖真实故障。
- 运行时可控:model_failover 工具随时 status / set / clear / enable / disable,不用改配置重启。
- 可粘滞:sticky: true 时转移后该会话持续使用新模型;默认只转移当次故障。
展开完整文档(README 剩余 1 节)
dsh-model-failover — 模型故障自动转移
DeepSeek Harness 插件:模型请求失败时,自动切换到「所选供应商池」中的下一个模型重试。
它解决什么
DSH 官方模型选择是「一次选定、失败就报错」。官方 dsh-llm-retry 只在同一供应商内重试——如果供应商整体限流/配额耗尽/宕掉,重试 5 次后这一轮仍然失败。
本插件在供应商之间做故障转移:
- 池 = 所选供应商下的全部模型:只选一个供应商 → 该供应商内所有模型轮询;选多个 → 按顺序跨供应商池轮询。
- 失败即切:RATE_LIMIT / QUOTA / TIMEOUT / SERVER / TRANSPORT / EMPTY_RESPONSE 等可配置的机器可路由 code 触发;每个候选模型只试一次,绝不重复试同一个。
- 池尽即还原:整个池都失败时交还原错误,不掩盖真实故障。
- 运行时可控:model_failover 工具随时 status / set / clear / enable / disable,不用改配置重启。
- 可粘滞:sticky: true 时转移后该会话持续使用新模型;默认只转移当次故障。
机制(与 DSH 官方扩展点对齐)
1. agent/request-error 瀑布流(官方重试插件同款扩展点):上游 dsh-llm-retry 同供应商重试耗尽后返回 undefined,本插件接住失败 → 从池中挑下一个未试过的模型 → 返回 { kind: "retry" }, agent-loop 重新 prepareRequest 并重发。
2. agent/request 瀑布流:把待生效目标写进本次请求的 provider/model,成为实际发送的模型(与 dsh-session-conductor 的成员模型切换同一模式)。
3. 失败分类只认 failure.code(机器可路由),绝不解析报错文本。
4. 状态存 <DSH_HOME>/model-failover/state.json:运行时池、粘滞目标、modelCatalog 快照、最近事件。
不写会话事件(Session 拒绝未知 type 的非 ignorable 事件)。
安装
本仓库是一个 Host-only bundle(无第三方依赖、无需构建):
dsh-model-failover/
├── index.js # 宿主插件主体 ├── cordis.patch.yml # bundle patch(insert 一行) ├── package.json # dsh.bundle.patch 声明 ├── locale/{en,zh}.json # 插件市场显示名/描述 └── icon.svg
通过 DSH 的 Plugin Manager 安装该目录(install_bundle,target 传本目录绝对路径),或把目录放进 profile 的 node_modules/ 并在 cordis.patch.yml 追加:
- insert:
- id: dsh-model-failover
name: dsh-model-failover
config: {}
重启 DSH 生效。
配置(cordis.patch.yml 行 config,全部有默认值)
| 键 | 默认 | 说明 |
| enabled | true | 总开关 |
| providers | [] | 默认供应商池(按顺序);空 = 用 model_failover set 运行时设置 |
| retryableCodes | RATE_LIMIT, QUOTA, ACCOUNT_QUOTA, SERVER, TIMEOUT, TRANSPORT, EMPTY_RESPONSE, NO_ADAPTER | 触发转移的失败码 |
| sticky | false | 转移后粘滞该会话直到 clear;false = 仅当次故障内转移 |
| maxFailoverAttempts | 0 | 单次故障最多转移几个候选(0 = 整个池子) |
运行时工具 model_failover
| action | 参数 | 作用 |
| status | — | 查看开关/池(含候选模型列表)/触发码/最近 8 条转移事件 |
| set | providers: ["wb","agnes"] | 设置运行时池(优先于 config.providers),立即生效 |
| clear | — | 清空运行时池与粘滞目标,回退配置池 |
| enable / disable | — | 运行时总闸 |
示例:
model_failover set providers=["wb","agnes"] → 池 = wb 全部模型 + agnes 全部模型(按此顺序) model_failover status → 池 6 个候选:wb/cn:a, wb/cn:b, … agnes/global:x
图形界面(输入框右下角)
插件自带浏览器半边:在输入框右下角、官方「模型选择器」左侧有一个 ⇄ 故障转移 按钮,点开后可以:
- 勾选一个或多个供应商(池 = 所选供应商内的全部模型,实时显示每个供应商的模型数)
- 保存 / 清空 / 停用·启用,点一下立即生效(与 model_failover 工具共用同一份状态)
- 查看当前池大小与最近几次转移事件
数据与操作走宿主同源路由 GET /api/model-failover/status、POST /api/model-failover/{set,clear,toggle}。
新增/修改 Client 代码后需要重启 DSH 并刷新页面(桌面端不做热加载)。
与其它插件的协同
- dsh-llm-retry(官方):天然协同——上游先同供应商重试(自带退避),耗尽后本插件接住做跨供应商转移。
- dsh-session-conductor(成员模型切换):两者都在 agent/request 改写模型。本插件在有待生效转移目标或 sticky 粘滞时生效;显式成员模型不会被无故障时改写(无 pending 时不干预)。
已知边界
- 池成员来自 modelCatalog;目录不可用时用最近的落盘快照(重启后仍可用)。
- 图片消息 + 纯文本模型:本插件不检查候选模型的输入模态(v1),如果池内含纯文本模型,可能在该轮被拒。
- 转移发生在同一步内,可能增加该步耗时(每个候选一次完整请求尝试 + 官方退避)。
- 不做「定时轮询」:只有失败才转移(按设计)。
测试
node --test test/unit.mjs
覆盖:池展开(单/多供应商、去重、未知跳过)、失败码过滤、路由改写、全链路(失败 → 转移 → 重试 → 池尽还原)、运行时 set 立即生效、sticky/非 sticky 行为、状态持久化 + 快照兜底。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
QGG4588/dsh-model-failover
请求失败时自动切换供应商池中的下一个模型重试
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1