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(免费) ↓ ResponseTier 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 中的每个模型:
- 调用
handleSingleModel(body, modelStr)发出请求; - 若返回
2xx成功,立即返回响应,中断遍历; - 若失败,解析错误体中的
error.message与retryAfter,记录所有模型中最早的retryAfter; - 调用
checkFallbackError(status, errorText)判定该错误是否应触发回退:- 对于 503/502/504 这类瞬时错误,若冷却时间在 5 秒内,会先等待冷却再继续尝试下一个模型,给短暂过载的供应商恢复机会(源码注释明确说明这是为了修复"Combo 在瞬时 503 时直接跳过"的问题);
- 若判定为不应回退,直接返回该错误响应;
- 全部模型失败后,统一返回
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 依据以下四个维度选择最优模型:
- 配额可用性——检查供应商剩余配额;
- 成本层级——优先订阅 → 低价 → 免费;
- 重置时机——考虑配额何时重置;
- 供应商健康度——跳过持续报错的供应商。
优先级判断示例
以请求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_url、image、input_image→ 标记vision; file、document、input_file或application/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-thinking2. 成本优先
策略: - 先使用 Gemini CLI 免费层(每月 18 万) - 回退到 GLM/MiniMax(超低价) - 应急: iFlow(免费)推荐 Combo:
gc/gemini-3-flash-preview → glm/glm-4.7 → if/kimi-k2-thinking3. 质量优先
策略: - 使用最强模型(Claude Opus、GPT-5.2) - 回退到优质低价模型(GLM-4.7) - 最后手段: 免费层推荐 Combo:
cc/claude-opus-4-5 → cx/gpt-5.2-codex → glm/glm-4.74. 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 Code | 5 小时 + 每周 | 早晨使用全新配额 |
| Codex | 5 小时 + 每周 | Claude 配额耗尽后使用 |
| Gemini CLI | 每日(1K)+ 每月(18 万) | 全天使用 |
| GLM-4.7 | 每天上午 10:00 | 傍晚使用,次日早晨重置 |
| MiniMax M2.1 | 5 小时滚动 | 随时可用,追踪滚动窗口 |
| 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"(所有供应商配额耗尽)
解决步骤:
- 查看 Dashboard 配额追踪器;
- 等待配额重置(查看倒计时);
- 在回退链中加入免费层;
- 或提高预算上限。
问题:"Too many fallback switches"(回退切换过于频繁)
解决步骤:
- 检查主用供应商是否宕机;
- 提高配额上限(升级订阅);
- 换用更便宜的主用模型(如用 GLM 替代 Claude)。
问题:"Unexpected costs"(出现意外费用)
解决步骤:
- Dashboard → Analytics → 复核用量;
- 设置日/月预算上限;
- 非关键任务切到免费层;
- 使用带免费回退的 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),仅供参考