9Router 智能路由与自动回退(Smart Routing Auto Fallback)实战指南
2026/9/10 17:08:44 网站建设 项目流程

9Router 智能路由与自动回退(Smart Routing & Auto Fallback)实战指南

【免费下载链接】9routerUnlimited FREE AI coding. Connect Claude Code, Codex, Cursor, Cline, Copilot, Antigravity to FREE Claude/GPT/Gemini via 40+ providers. Auto-fallback, RTK -40% tokens, never hit limits.项目地址: https://gitcode.com/GitHub_Trending/9r/9router

本篇技术指南以 9Router 官方文档(gitbook/content/ja/features/smart-routing.md)为主体,深入讲解其三层回退路由系统的架构原理、自动切换判定逻辑、Dashboard 配置项与配额重置策略,并结合仓库源码(open-sse/services/combo.js、open-sse/services/accountFallback.js)剖析底层实现。读完本文,你将掌握如何为 Claude Code、Codex、Cursor、Cline 等客户端配置永不中断的智能路由,让订阅、低价 API 与免费层协同工作,做到"配额受限也不停编码"。


一、三层回退系统:路由的核心骨架

9Router 采用"智能路由"思想:优先榨干你已经付费的订阅价值,其次使用超低价 API 兜底,最后回退到免费层保障 24 小时可用性。整体流程如下(原文流程图):

Request → 9Router → 检查 Tier 1(订阅) ↓ 配额耗尽 检查 Tier 2(低价) ↓ 预算上限 检查 Tier 3(免费) ↓ Response

Tier 1:订阅层(主用)

  • Claude Code(Pro/Max)
  • OpenAI Codex(Plus/Pro)
  • Gemini CLI(每月 18 万次免费额度)
  • GitHub Copilot
  • Antigravity(Google)

目标:从你已支付的订阅中获取最大价值,避免额度闲置浪费。

Tier 2:低价层(备份)

  • GLM-4.7(输入 100 万 token 约 $0.60)
  • MiniMax M2.1(输入 100 万 token 约 $0.20)
  • Kimi K2(每月固定 $9)

目标:订阅配额耗尽时提供超低价备份,按文档口径比 ChatGPT API 便宜约 90%。

Tier 3:免费层(应急)

  • iFlow(8 个模型)
  • Qwen(3 个模型)
  • Kiro(免费使用 Claude)

目标:零成本兜底,实现"无限制编码"。

以上价格与额度数字均出自官方文档原文,实际价格与可用额度请以供应商当前公布为准。


二、自动切换:三类典型场景

9Router 实时监控配额并按需切换供应商,官方文档给出了三个典型场景。

场景 1:订阅配额耗尽

用户请求 → cc/claude-opus-4-5 ↓ 配额耗尽(达到 5 小时限制) 自动切换 → glm/glm-4.7 ↓ 日配额耗尽 自动切换 → minimax/MiniMax-M2.1 ↓ 5 小时配额耗尽 自动切换 → if/kimi-k2-thinking(免费) ↓ 响应送达 ✅

结果:零停机、无缝体验。

场景 2:速率限制

用户请求 → cx/gpt-5.2-codex ↓ 被限流(请求过多) 自动切换 → glm/glm-4.7 ↓ 响应送达 ✅

场景 3:供应商不可用

用户请求 → cc/claude-opus-4-5 ↓ 供应商错误(503) 自动切换 → 下一个可用模型 ↓ 响应送达 ✅

底层实现:handleComboChat 的逐级尝试

上述切换在源码层面由 open-sse/services/combo.js 中的handleComboChat完成。它按序遍历 Combo 中的每个模型:

  1. 调用handleSingleModel(body, modelStr)发出请求;
  2. 若返回2xx成功,立即返回响应,中断遍历;
  3. 若失败,解析错误体中的error.messageretryAfter,记录所有模型中最早的retryAfter
  4. 调用checkFallbackError(status, errorText)判定该错误是否应触发回退:
    • 对于 503/502/504 这类瞬时错误,若冷却时间在 5 秒内,会先等待冷却再继续尝试下一个模型,给短暂过载的供应商恢复机会(源码注释明确说明这是为了修复"Combo 在瞬时 503 时直接跳过"的问题);
    • 若判定为不应回退,直接返回该错误响应;
  5. 全部模型失败后,统一返回503 Service Unavailable(而非 406),并尽可能附带retryAfter供客户端重试;若错误信息含 "no credentials",同样以 503 返回。

错误是否触发回退由 open-sse/config/errorConfig.js 的ERROR_RULES驱动,自上而下匹配:

  • 文本规则(优先)no credentials(冷却 2 分钟)、request not allowed(5 秒)、improperly formed request(2 分钟)、rate limit/too many requests/quota exceeded/capacity/overloaded(指数退避);
  • 状态码规则:401/402/403/404(冷却 2 分钟)、429(指数退避)。

其中指数退避配置为 errorConfig.js:基础 2 秒、指数递增、上限 5 分钟、最大 15 级;未匹配的瞬时错误默认冷却 30 秒(TRANSIENT_COOLDOWN_MS)。


三、模型选择逻辑

9Router 依据以下四个维度选择最优模型:

  1. 配额可用性——检查供应商剩余配额;
  2. 成本层级——优先订阅 → 低价 → 免费;
  3. 重置时机——考虑配额何时重置;
  4. 供应商健康度——跳过持续报错的供应商。

优先级判断示例

以请求cc/claude-opus-4-5为例:

1. 检查 Claude Code 配额 ✅ 可用 → 使用 cc/claude-opus-4-5 ❌ 耗尽 → 进入步骤 2 2. 检查回退层级(如已配置) ✅ GLM 配额可用 → 使用 glm/glm-4.7 ❌ 耗尽 → 进入步骤 3 3. 检查免费层 ✅ iFlow 可用 → 使用 if/kimi-k2-thinking ❌ 全部耗尽 → 返回配额错误

能力感知的自动切换(auto-switch)

除按序回退外,源码还实现了"能力感知"重排。handleComboChat在开始遍历前,若启用autoSwitch,会先调用detectRequiredCapabilities(body)(combo.js)扫描当前用户轮次的输入模态:

  • OpenAI / Claude 的image_urlimageinput_image→ 标记vision
  • filedocumentinput_fileapplication/pdfMIME → 标记pdf
  • Gemini / Antigravity 的inlineData/fileData图片 MIME → 标记vision

随后reorderByCapabilities(models, required)(combo.js)对模型做稳定排序,将满足硬性能力(vision/pdf/audioInput/videoInput)的模型浮到队首,且绝不丢弃任何模型——回退链完整性保持不变。这一点由测试 tests/unit/combo-autoswitch.test.js 验证,例如"将具备 vision 能力的模型浮到最前,同时保留 deepseek 模型作为回退"。

轮询策略(round-robin)

对于不希望"永远只打第一个模型"的场景,Combo 支持round-robin策略与stickyLimit参数(combo.js):按配置的请求次数粘滞在当前模型上,达到上限后轮转到下一个,并在内存中按 Combo 名称独立记录轮转状态;resetComboRotation可在 Combo/设置变更时清空状态。相关行为由 tests/unit/combo-routing.test.js 覆盖,且默认fallback策略不参与轮转。


四、配置选项:Dashboard 操作手册

1. 启用/停用自动回退

Dashboard → Settings → Smart Routing → 切换「Auto Fallback」开/关
  • (默认):自动层级切换;
  • :严格模式(Strict mode),主用模型不可用时直接返回错误。

2. 设置预算上限

Dashboard → Settings → Budget Control → 日上限:$5 → 月上限:$50

预算用尽后,9Router 自动切换到免费层,防止超支。底层配套的配额统计与预算判定逻辑可参考 open-sse/services/usage/ 与 src/lib/usageDb.js 相关实现。

3. 配置回退顺序

Dashboard → Settings → Fallback Priority → 在各层级内拖拽调整供应商顺序

自定义顺序示例:

Tier 1: Gemini CLI → Claude Code → Codex Tier 2: MiniMax → GLM → Kimi Tier 3: iFlow → Kiro → Qwen

该顺序最终即 Combo 的模型数组顺序,由handleComboChat按序执行。

4. 配额重置通知

Dashboard → Settings → Notifications → 配额重置时发送邮件 → 配额使用 80% 时告警

五、典型配置示例

示例 1:基础自动回退

配置:

Model: cc/claude-opus-4-5-20251101 Fallback: 自动(默认三层)

运行表现:

早晨(配额全新): Request → cc/claude-opus-4-5 ✅ 下午(配额耗尽): Request → glm/glm-4.7 ✅(自动切换) 傍晚(GLM 配额用尽): Request → minimax/MiniMax-M2.1 ✅(自动切换) 深夜(全部付费配额耗尽): Request → if/kimi-k2-thinking ✅(免费层)

成本:每月额外支出约 $5–10(主要由订阅覆盖)。

示例 2:预算敏感型路由

配置:

Dashboard → Settings: Daily budget: $2 Monthly budget: $20 Fallback: 启用

运行表现:

第 1~15 天(预算内): Requests → glm/glm-4.7(低价层) 成本: $1.50/天 第 16 天(到达预算): Requests → if/kimi-k2-thinking(免费层) 成本: $0 次月(预算重置): Requests → 重新使用 glm/glm-4.7

结果:每月不超 $20,始终可用。

示例 3:仅订阅模式

配置:

Dashboard → Settings: Auto Fallback: 关 Strict mode: 开

运行表现:

Request → cc/claude-opus-4-5 ✅ 配额可用 → 成功 ❌ 配额耗尽 → 返回错误(不回退)

适用场景:只想用付费订阅、零额外成本。

示例 4:仅免费模式

配置:

Model: if/kimi-k2-thinking Fallback: qw/qwen3-coder-plus → kr/claude-sonnet-4.5

运行表现:

所有请求 → 仅走免费层 成本: 永远 $0

适用场景:个人项目、学习、实验。


六、最佳实践:四种路由策略

1. 最大化订阅价值

策略: - 订阅模型设为 Tier 1 - 在 Dashboard 监控配额使用量 - 仅当订阅耗尽时使用低价层

推荐 Combo:

cc/claude-opus-4-5 → glm/glm-4.7 → if/kimi-k2-thinking

2. 成本优先

策略: - 先使用 Gemini CLI 免费层(每月 18 万) - 回退到 GLM/MiniMax(超低价) - 应急: iFlow(免费)

推荐 Combo:

gc/gemini-3-flash-preview → glm/glm-4.7 → if/kimi-k2-thinking

3. 质量优先

策略: - 使用最强模型(Claude Opus、GPT-5.2) - 回退到优质低价模型(GLM-4.7) - 最后手段: 免费层

推荐 Combo:

cc/claude-opus-4-5 → cx/gpt-5.2-codex → glm/glm-4.7

4. 24 小时可用性

策略: - 回退链始终包含免费层 - 监控配额重置时间 - 在供应商间分散用量

推荐 Combo:

cc/claude-opus-4-5 → glm/glm-4.7 → minimax/MiniMax-M2.1 → if/kimi-k2-thinking

结果:永不缺配额,随时编码。

关于自定义回退链(Combo)的完整创建方法,参见 Combos 自定义回退链指南;其前端配置入口位于 Dashboard 的 Combos 页面,服务端执行入口即上文分析的handleComboChat


七、配额重置策略

不同供应商的配额窗口与重置节奏差异巨大,规划用量可显著提升资源利用率(下表为文档口径,实际请以供应商为准):

供应商配额重置策略
Claude Code5 小时 + 每周早晨使用全新配额
Codex5 小时 + 每周Claude 配额耗尽后使用
Gemini CLI每日(1K)+ 每月(18 万)全天使用
GLM-4.7每天上午 10:00傍晚使用,次日早晨重置
MiniMax M2.15 小时滚动随时可用,追踪滚动窗口
iFlow/Qwen/Kiro无限制应急备份

示例日课:

08:00 - 13:00: Claude Code(全新 5 小时配额) 13:00 - 18:00: Gemini CLI(1K/日配额) 18:00 - 22:00: GLM-4.7(低价,上午 10 点重置) 22:00 - 08:00: MiniMax 或 iFlow(5 小时滚动或免费)

源码层面,供应商的限流恢复时间会记录在连接的rateLimitedUntil字段上,getEarliestRateLimitedUntil(open-sse/services/accountFallback.js)会汇总所有账号中最先恢复的时间,而formatRetryAfter将其格式化为"reset after Xm Ys"这类人类可读文本,供日志与响应头使用。


八、监控与告警

Dashboard 配额追踪器

Dashboard → Quota Overview: Claude Code: 剩余 2.5h / 5h(50%) Gemini CLI: 今日 450 / 1000 次请求 GLM-4.7: 5M / 10M token(8 小时后重置) MiniMax: 3M / 5M token(5 小时滚动)

实时通知

Dashboard → Notifications: ⚠️ Claude Code 配额已用 80%(剩余 1 小时) ✅ GLM-4.7 配额已重置(10M token 可用) 💰 日预算已用 50%($2.50 / $5)

使用统计

Dashboard → Analytics: 今日: 5000 万 token - 3000 万 经 Claude Code(订阅) - 1500 万 经 GLM-4.7($9) - 500 万 经 iFlow(免费) 成本: $9(对比 ChatGPT API 约 $1000) 节省: 99%

上述节省比例为文档演示示例口径。用量统计的持久化实现在仓库中由 src/lib/usageDb.js 与 open-sse/services/usage/ 承担,配额监控与预算控制的前端交互位于 src/app/(dashboard)) 目录下的 Dashboard 页面。


九、故障排查

问题:"All providers quota exhausted"(所有供应商配额耗尽)

解决步骤:

  1. 查看 Dashboard 配额追踪器;
  2. 等待配额重置(查看倒计时);
  3. 在回退链中加入免费层;
  4. 或提高预算上限。

问题:"Too many fallback switches"(回退切换过于频繁)

解决步骤:

  1. 检查主用供应商是否宕机;
  2. 提高配额上限(升级订阅);
  3. 换用更便宜的主用模型(如用 GLM 替代 Claude)。

问题:"Unexpected costs"(出现意外费用)

解决步骤:

  1. Dashboard → Analytics → 复核用量;
  2. 设置日/月预算上限;
  3. 非关键任务切到免费层;
  4. 使用带免费回退的 Combo。

若需要更深度的用量与成本监控方案,可继续阅读 Quota Tracking 配额追踪指南;自定义回退链的完整配置方法见 Combos 自定义回退链指南。英文原文文档位于 gitbook/content/en/features/smart-routing.md,其他语言版本(含日文原文)可在 gitbook/content/ 下按语言目录查阅。

【免费下载链接】9routerUnlimited FREE AI coding. Connect Claude Code, Codex, Cursor, Cline, Copilot, Antigravity to FREE Claude/GPT/Gemini via 40+ providers. Auto-fallback, RTK -40% tokens, never hit limits.项目地址: https://gitcode.com/GitHub_Trending/9r/9router

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询