9Router Smart Routing 与 Auto Fallback 实战:三级回退体系、自动切换与配额优化指南

发布时间:2026/9/10 16:51:52
9Router Smart Routing 与 Auto Fallback 实战:三级回退体系、自动切换与配额优化指南 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/9router9Router 通过内置的 Smart Routing智能路由模块为 Claude Code、Codex、Gemini CLI、GitHub Copilot 等订阅型工具统一调度 40 上游 provider用「订阅 → 低价 → 免费」三级回退链保证请求永不因配额耗尽或限流而中断。本文基于 gitbook/content/en/features/smart-routing.md 展开并结合仓库内open-sse/services/combo.js、accountFallback.js、errorConfig.js等源码实现与对应测试讲清楚三级回退的判定逻辑、自动切换的真实行为、预算控制与配额重置策略的落地方法。读完你将能配置 Auto Fallback 与预算上限、按成本/质量/可用性设计 fallback 顺序、看懂配额追踪与告警并据此规划 24/7 不间断的编码工作流。一、Smart Routing 工作原理从请求到三级回退1.1 核心流程9Router 的智能路由并不只是「请求转发」而是一个带状态判断的决策链。文档给出的总体流程如下Request → 9Router → Check Tier 1 (Subscription) ↓ quota exhausted Check Tier 2 (Cheap) ↓ budget limit Check Tier 3 (Free) ↓ Response每个请求进入 9Router 后先尝试第一级已有订阅只有当配额用尽或触发错误规则时才会顺延到下一级而不是在多个 provider 之间随机分发。这样设计的目的是最大化你已付费订阅的使用率把额外成本压到最低同时保证 7×24 可用性。1.2 三级回退体系层级定位代表 provider目标Tier 1: SUBSCRIPTION主用优先消耗已购订阅Claude Code (Pro/Max)、OpenAI Codex (Plus/Pro)、Gemini CLI每月免费 180K、GitHub Copilot、Antigravity (Google)让订阅价值最大化基本零边际成本Tier 2: CHEAP备份订阅配额耗尽后的低价兜底GLM-4.7$0.60/1M 输入、MiniMax M2.1$0.20/1M 输入、Kimi K2$9/月包月比 ChatGPT API 便宜约 90% 的应急通道Tier 3: FREE应急零成本最后防线iFlow8 个模型、Qwen3 个模型、Kiro免费 Claude保证永不因配额中断需要说明的是上表中的价格、免费额度与模型列表来自项目文档的快照描述实际额度以各 provider 当前的官方政策与你在 Dashboard 中看到的配额数据为准9Router 本身支持在 Dashboard 中实时追踪与校准详见 配额追踪文档。二、自动切换的真实行为三个典型场景文档用三个场景描述了 9Router 监控配额并自动切换的机制。结合源码可以确认自动切换并不是在「发出请求前」预判配额而是在请求返回错误后按规则判定是否 fallback见下文 3.2 的checkFallbackError逻辑。场景 1订阅配额耗尽逐级下探User request → cc/claude-opus-4-5 ↓ quota exhausted (5-hour limit reached) Auto switch → glm/glm-4.7 ↓ daily quota exhausted Auto switch → minimax/MiniMax-M2.1 ↓ 5-hour quota exhausted Auto switch → if/kimi-k2-thinking (FREE) ↓ Response delivered ✅场景 2限流Rate LimitingUser request → cx/gpt-5.2-codex ↓ rate limited (too many requests) Auto switch → glm/glm-4.7 ↓ Response delivered ✅场景 3Provider 不可用User request → cc/claude-opus-4-5 ↓ provider error (503) Auto switch → next available model ↓ Response delivered ✅三种场景的最终效果一致零停机、无缝体验。区别在于触发切换的错误类型——配额类错误走逐级回退瞬态服务错误如 503则会进入短暂的冷却等待后继续回退详见 3.3。三、模型选择逻辑配额、成本层级、重置时间与健康度3.1 四个决策维度9Router 选择「当前最佳模型」时综合考量以下因素Quota availability配额可用性——检查 provider 是否还有剩余配额Cost tier成本层级——偏好顺序为 订阅 → 低价 → 免费Reset timing重置时机——考虑配额何时重置优先使用「刚重置过」的 providerProvider health健康度——跳过最近报错的 provider。文档给出了对cc/claude-opus-4-5发起请求时的完整决策示例1. Check Claude Code quota ✅ Available → Use cc/claude-opus-4-5 ❌ Exhausted → Continue to step 2 2. Check fallback tier (if configured) ✅ GLM quota available → Use glm/glm-4.7 ❌ Exhausted → Continue to step 3 3. Check free tier ✅ iFlow available → Use if/kimi-k2-thinking ❌ All exhausted → Return quota error3.2 源码实现fallback 主循环上述逐级尝试逻辑在 open-sse/services/combo.js 的handleComboChat中实现。核心要点combo.js 的 L229-L331按顺序遍历模型列表对每个模型调用handleSingleModel日志中记录Trying model i/N: xxx与成功/失败原因成功即返回只要result.ok2xx就立即返回该响应不再尝试后续模型失败时解析错误从响应体中提取error.message、retryAfter等字段并记录所有模型中最早的 retryAfter用于最终向客户端返回可重试提示判定是否回退调用checkFallbackError(result.status, errorText)决定是「继续回退」还是「直接返回该错误」瞬态错误加冷却对于 503/502/504 且冷却时间 ≤ 5s 的情况先等待冷却再落到下一个模型避免「provider 短暂过载就被立刻跳过」源码注释明确指出这修复了 combo 在瞬态 503 下穿透的问题全部失败时返回 503源码注释说明不使用 406 而使用 503是因为「provider 不可用或没有可用凭证」属于服务不可用而非请求本身非法503 更准确且客户端可重试。当错误信息包含 no credentials 时也会归一化为 503。3.3 源码实现错误分类与冷却规则open-sse/services/accountFallback.js 的checkFallbackError按「文本规则优先、状态码规则其次」的顺序匹配 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指数退避默认未匹配任意错误瞬态冷却 30 秒指数退避的参数位于 errorConfig.js 的BACKOFF_CONFIG基础间隔 2 秒、最大 5 分钟、最高 15 级即 1s → 2s → 4s → … 封顶 4 分钟provider 上报的限流冷却时间如 Codex 的resets_at上限为 30 分钟MAX_RATE_LIMIT_COOLDOWN_MS。测试 tests/unit/base-executor-retry.test.js 覆盖了该退避行为。另外accountFallback.js还提供了**模型锁model lock**机制当某模型的错误触发冷却后会在连接记录上写入modelLock_${model}字段并设置过期时间buildModelLockUpdate、isModelLockActive冷却期内该模型被视为不可用从而在「组合回退」与「同 provider 多账号」场景下避免反复命中同一故障模型。四、Dashboard 配置选项以下配置均在 Dashboard 中完成本地默认地址http://localhost:20128登录密码见 Dashboard 首启引导。4.1 开关 Auto FallbackDashboard → Settings → Smart Routing → Toggle Auto Fallback ON/OFFON默认自动执行层级切换请求总能找到可用的下一级OFF严格模式主模型不可用时直接返回错误不做任何回退适合「只想用订阅、拒绝额外成本」的场景。4.2 设置预算上限Dashboard → Settings → Budget Control → Daily limit: $5 → Monthly limit: $50当预算到达上限时9Router 会自动切换到免费层Tier 3付费 provider 不再被选中从而保证「超支不可能发生」。配额追踪文档还补充了预算告警的两级阈值如日预算 80% 与 100% 告警以及「超限自动切免费层」的行为见 gitbook/content/en/features/quota-tracking.md。4.3 配置回退顺序Dashboard → Settings → Fallback Priority → Drag to reorder providers within each tier在每一层内拖拽调整 provider 优先级。文档给出的自定义顺序示例Tier 1: Gemini CLI → Claude Code → Codex Tier 2: MiniMax → GLM → Kimi Tier 3: iFlow → Kiro → Qwen4.4 配额重置通知Dashboard → Settings → Notifications → Email when quota resets → Alert when 80% quota used除邮件外配额追踪文档还提到可选 Webhook 投递与 Dashboard 内通知且支持「配额 80% / 90% / 耗尽 / 重置」四个告警节点详见 quota-tracking.md 的 Alerts 章节。五、四种典型配置示例5.1 示例 1基础自动回退默认三级Setup:Model: cc/claude-opus-4-5-20251101 Fallback: Auto (default 3-tier)Behavior:Morning (fresh quota): Request → cc/claude-opus-4-5 ✅ Afternoon (quota exhausted): Request → glm/glm-4.7 ✅ (auto switched) Evening (GLM quota out): Request → minimax/MiniMax-M2.1 ✅ (auto switched) Late night (all paid quota out): Request → if/kimi-k2-thinking ✅ (free tier)Cost约 $5–10/月额外开销大部分用量被订阅覆盖。这个量级与文档对「100M tokens 月成本」的测算一致80M 走订阅$0 15M 走 GLM$9 5M 走 MiniMax$1≈ $10。5.2 示例 2预算敏感型路由Setup:Dashboard → Settings: Daily budget: $2 Monthly budget: $20 Fallback: EnabledBehavior:Day 1-15 (within budget): Requests → glm/glm-4.7 (cheap tier) Cost: $1.50/day Day 16 (budget reached): Requests → if/kimi-k2-thinking (free tier) Cost: $0 Next month (budget resets): Requests → glm/glm-4.7 againResult月支出恒 ≤ $20且始终可用。5.3 示例 3纯订阅模式严格模式Setup:Dashboard → Settings: Auto Fallback: OFF Strict mode: ONBehavior:Request → cc/claude-opus-4-5 ✅ Quota available → Success ❌ Quota exhausted → Return error (no fallback)Use case只想使用已付费订阅、零额外成本时使用。5.4 示例 4纯免费模式Setup:Model: if/kimi-k2-thinking Fallback: qw/qwen3-coder-plus → kr/claude-sonnet-4.5Behavior:All requests → Free tier only Cost: $0 foreverUse case个人项目、学习与实验。六、最佳实践与回退链设计6.1 最大化订阅价值Strategy: - Set subscription models as Tier 1 - Monitor quota usage in dashboard - Use cheap tier only when subscription exhausted示例 combocc/claude-opus-4-5 → glm/glm-4.7 → if/kimi-k2-thinking6.2 面向成本优化Strategy: - Use Gemini CLI free tier first (180K/month) - Fallback to GLM/MiniMax (ultra-cheap) - Emergency: iFlow (free)示例 combogc/gemini-3-flash-preview → glm/glm-4.7 → if/kimi-k2-thinking6.3 面向质量优化Strategy: - Use best models (Claude Opus, GPT-5.2) - Fallback to good cheap models (GLM-4.7) - Last resort: Free tier示例 combocc/claude-opus-4-5 → cx/gpt-5.2-codex → glm/glm-4.76.4 7×24 可用性Strategy: - Always include free tier in fallback - Monitor quota reset times - Distribute usage across providers示例 combocc/claude-opus-4-5 → glm/glm-4.7 → minimax/MiniMax-M2.1 → if/kimi-k2-thinking6.5 进阶能力感知的自动切换源码补充除了按配额/成本回退仓库在 combo.js 的 L63-L82 还实现了按请求能力重排 combo 模型的逻辑reorderByCapabilities先通过detectRequiredCapabilities从请求体中识别当前对话需要的硬能力vision / pdf / audioInput / videoInput与软能力如 search检测覆盖 OpenAI chat、Claude messages、Gemini contents、Responses input 等多种格式再将 combo 模型按能力匹配度分为三档Tier 0满足全部硬能力 软能力、Tier 1只满足硬能力、Tier 2其余做稳定排序后把最匹配的模型浮到最前面且不会丢弃任何模型回退链保持完整。该行为由 tests/unit/combo-autoswitch.test.js 验证例如当请求携带图片时vision能力会被检测出来无视觉能力的模型不会排在最前测试断言「floats vision-capable model to front, keeps fallback」且模型数量不变。这意味着Smart Routing 不仅能按配额回退还会避免把带图/带 PDF 的请求路由到不支持这些模态的模型上。6.6 进阶round-robin 轮询策略源码补充combo.js 的 L140-L186 提供了getRotatedModels当 combo 策略为round-robin时可配置stickyLimit每个模型连续处理的请求数按「每 N 个请求切换一次」的方式在模型间轮转策略为fallback时则保持顺序尝试、不做轮转。测试 tests/unit/combo-routing.test.js 验证了默认每请求轮换、按stickyLimit粘滞以及各 combo 独立维护轮换状态等行为。适合在多个等价低价模型之间分摊负载、避免单点触发限流。七、配额重置策略围绕重置时间排布使用不同 provider 的配额类型与重置节奏差异很大文档给出的对照表是规划全天工作流的关键依据Provider配额重置策略Claude Code5 小时滚动 每周早晨使用配额最新鲜Codex5 小时滚动 每周在 Claude 配额耗尽后使用Gemini CLI每日1K 次 每月180K全天分散使用GLM-4.7每日 10:00 AMUTC8晚间使用次日早晨重置MiniMax M2.15 小时滚动窗口任意时间滚动窗口自动追踪iFlow / Qwen / Kiro无限应急兜底结合 quota-tracking.md 的补充细节Gemini CLI 是「请求数每日 1,000 月度 completions180,000双维度」Claude Code 按模型分别统计 5 小时用量并每周一 00:00 UTC 周重置GLM-4.7 为「每日 10M tokens、北京时间 10:00 重置」MiniMax 为「每 5 小时 5M tokens 的连续滚动窗口」最旧用量到期后额度自动释放。文档给出的每日例行节奏如下08:00 - 13:00: Claude Code (fresh 5h quota) 13:00 - 18:00: Gemini CLI (1K/day quota) 18:00 - 22:00: GLM-4.7 (cheap, resets 10AM) 22:00 - 08:00: MiniMax or iFlow (5h rolling or free)把「重置时间」作为组合设计的输入正是 combos.md 中reset-optimized组合的思路早晨组合放刚重置的订阅模型晚间组合放次日才重置的低价/免费模型。八、监控与告警8.1 Dashboard 配额追踪Dashboard → Quota Overview: Claude Code: 2.5h / 5h remaining (50%) Gemini CLI: 450 / 1000 requests today GLM-4.7: 5M / 10M tokens (resets in 8h) MiniMax: 3M / 5M tokens (rolling 5h)8.2 实时通知Dashboard → Notifications: ⚠️ Claude Code quota 80% used (1h remaining) ✅ GLM-4.7 quota reset (10M tokens available) Daily budget 50% used ($2.50 / $5)8.3 用量分析Dashboard → Analytics: Today: 50M tokens - 30M via Claude Code (subscription) - 15M via GLM-4.7 ($9) - 5M via iFlow (free) Cost: $9 (vs $1000 on ChatGPT API) Savings: 99%8.4 配额追踪的 API 化源码补充配额与用量不仅能在 Dashboard 查看仓库还提供了结构化 API。在 quota-tracking.md 中定义了如下接口形态以本地服务localhost:20128为例GET http://localhost:20128/api/quota Authorization: Bearer your-api-key返回各 provider 的used / limit / unit / percentage、reset类型、窗口、下次重置时间与cost今日/本月。类似地GET http://localhost:20128/api/usage?periodtoday返回请求数、token 总量、成本及按模型的拆分。仓库侧open-sse/services/usage/目录下的实现如minimax.js对 MiniMax 用量接口按「先主后备、瞬态错误回退」的顺序探测与src/lib/usageDb.js等持久化模块共同支撑了这一能力适合把配额状态接入自己的监控脚本或 CI 通知。九、故障排查Issue: All providers quota exhausted所有 provider 配额耗尽Solution:打开 Dashboard 配额追踪器查看各 provider 剩余量等待配额重置查看倒计时在回退链中加入免费层Tier 3或调高预算上限。Issue: Too many fallback switches回退切换过于频繁Solution:检查主 provider 是否宕机提高配额上限升级订阅改用更便宜的主模型如用 GLM 代替 Claude。补充从源码看频繁切换的另一常见诱因是瞬态错误。handleComboChat对 503/502/504 且冷却 ≤ 5s 的错误会先等待冷却再回退combo.js L291-L298checkFallbackError对rate limit/too many requests/quota exceeded等文本规则统一走指数退避因此「看似频繁」的切换往往意味着主 provider 正在限流或过载应优先排查主链路的健康度与配额状态。Issue: Unexpected costs出现意外成本Solution:Dashboard → Analytics 复盘用量设置日/月预算上限非关键任务切换到免费层使用带免费兜底的组合combo。十、组合Combos自定义回退链Smart Routing 的三级体系是系统内置的默认策略而Combos 允许你在 Dashboard 中自定义任意长度的回退链combos.md。例如Combo name: premium-coding Models: 1. cc/claude-opus-4-5-20251101 (try first) 2. glm/glm-4.7 (if #1 quota exhausted) 3. minimax/MiniMax-M2.1 (if #2 quota exhausted)创建后在任意兼容客户端中把Model直接填为组合名如premium-coding即可9Router 会在该组合内按序尝试直到成功。Combos 与 Smart Routing 的关系是前者是「你自定义的回退顺序」后者是「系统默认的三级回退与自动判定引擎」两者共享同一套 fallback 循环与错误分类逻辑handleComboChat同时服务两者。常用组合建议复杂任务用premium-coding、简单任务用budget-combo、实验用free-combo、生产代码用quality-first。十一、总结9Router 的 Smart Routing 把「配额管理」从人工盯盘变成了自动化的三层决策先用订阅、再用低价、最后免费兜底配合checkFallbackError的错误分类文本规则 → 状态码规则 → 瞬态默认值、指数退避冷却与模型锁机制实现了对配额耗尽、限流和 provider 故障三类异常的自动降级。实际使用中建议默认开启 Auto Fallback并在回退链尾部保留免费层保证 7×24 可用用Dashboard 预算上限 配额追踪控制成本预算达到即自动切免费层结合各 provider 的重置时间表设计日常使用节奏早晨订阅 → 午后 Gemini → 晚间 GLM → 深夜 MiniMax/iFlow按任务类型创建多个Combo并善用能力感知自动切换与 round-robin 策略分摊负载。相关延伸阅读Combos 自定义回退链、Quota Tracking 配额与用量监控。【免费下载链接】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),仅供参考