Hotdry.

Article

用 9Router 构建零成本编码 Agent:多提供商聚合路由与 RTK Token 压缩工程实践

深入解析 9Router 如何聚合 40+ 免费 AI 提供商实现 3-Tier 自动降级路由,并通过 RTK Token Saver 在工具输出层面压缩 20-40% 输入 Token,为编码 Agent 提供零成本的持续运行能力。

2026-05-10ai-systems

在 AI 辅助编程工具日益普及的今天,开发者面临的核心问题已经从「能否使用 AI」转变为「如何经济高效地持续使用 AI」。传统的单一 AI 服务订阅模式存在明显的缺陷:月度配额用不完会过期、超限后直接中断工作流、工具输出(如 git diff、grep 结果)消耗大量 Token 导致成本急剧上升。9Router 作为一款专注于 AI coding 场景的智能路由工具,通过聚合 40+ 免费与廉价 AI 提供商、构建三级自动降级机制、集成 RTK Token 压缩技术,为开发者提供了一套完整的零成本编码 Agent 解决方案。本文将从工程实践角度深入解析 9Router 的核心架构、自动降级路由策略以及 RTK Token 压缩的实现原理与配置参数。

9Router 的核心定位与技术架构

9Router 本质上是一个运行在本地或服务器端的智能代理层,介于 AI 编码工具(如 Claude Code、Codex、Cursor、Cline、OpenClaw 等)与上游 AI 服务提供商之间。它的核心价值在于将分散的、多家的 AI 服务接口统一为一个 OpenAI 兼容的 API 端点,同时在请求层面注入智能路由、Token 压缩和配额管理能力。从架构层面来看,9Router 基于 Node.js 20+ 和 Next.js 16 构建,采用 React 19 + Tailwind CSS 4 构建管理界面,后端使用 LowDB 进行 JSON 文件式的轻量级数据存储,默认监听端口为 20128,提供两个核心端点:Dashboard 管理界面位于 http://localhost:20128/dashboard,OpenAI 兼容 API 位于 http://localhost:20128/v1。这种设计使得 9Router 能够与任何支持自定义 OpenAI 端点的 CLI 工具无缝集成,开发者只需将目标 AI 工具的 API Base URL 指向 9Router,即可开始使用聚合后的多提供商服务。

从技术实现角度看,9Router 的核心模块包括四个关键组件。第一个是格式翻译层,负责在不同提供商的消息格式之间进行转换,支持 OpenAI 格式、Claude 格式、Gemini 格式、Cursor 格式、Kiro 格式、Vertex 格式、Antigravity 格式、Ollama 格式以及 OpenAI Responses 格式之间的相互转换,这意味着当 Claude Code 发送 OpenAI 格式的请求时,9Router 能够自动将其翻译为目标提供商(如 Kiro)所需的原生格式。第二个组件是 RTK Token Saver 模块,它在格式翻译之前对工具输出结果进行智能压缩,这是 9Router 最具技术创新性的功能之一。第三个组件是智能路由引擎,负责维护提供商配额信息、判断当前请求是否应该降级、以及执行实际的请求转发。第四个组件是配额追踪系统,实时记录每个提供商的 Token 消耗量和配额重置倒计时,帮助开发者最大限度地利用订阅权益。这四个组件协同工作,构成了 9Router 完整的请求处理流水线。

三级自动降级路由的工程设计与实现

9Router 的自动降级路由机制是其区别于普通 API 代理的核心能力。这套机制将 AI 提供商划分为三个层级,形成一个金字塔式的降级结构。当高优先级层级的配额耗尽、价格超出预算限制或发生错误时,请求会自动、即时地降级到下一层级,整个过程对上层 AI 工具完全透明,不会产生任何工作流中断。

第一层级:订阅服务商(Subscription Tier)。这一层级包含 Claude Code(Pro/Max)、OpenAI Codex(Plus/Pro)、GitHub Copilot 和 Cursor IDE 等采用订阅制的服务。这些服务的共同特点是月度配额固定、价格相对较高(通常在 10-200 美元 / 月),但提供的模型质量和上下文理解能力最强。对于已经订阅了这些服务的开发者来说,9Router 的价值在于帮助他们「榨干」每一分配额。通过实时追踪订阅配额使用量和重置倒计时,9Router 能够在配额即将耗尽时主动触发降级,而不是等到请求被拒绝后才被动切换。具体配置方式是在 ~/.claude/config.json 中设置 anthropic_api_basehttp://localhost:20128/v1,然后将 anthropic_api_key 设置为 9Router Dashboard 中生成的 API Key,此时 Claude Code 发出的请求会首先经过 9Router 的路由层,根据配额状态决定是否需要降级。

第二层级:廉价服务商(Cheap Tier)。这一层级的典型代表是 GLM($0.6 / 百万 Token,日限额在每天上午 10 点重置)、MiniMax($0.2 / 百万 Token,5 小时滚动重置)和 Kimi K2.5($9 / 月固定费率,包含 1000 万 Token)。这些服务的成本极低,适合作为订阅服务的备份或者日常轻量级编码任务的主力。GLM 的 Coding Plan 提供每日重置的配额,价格是标准费率的七分之一;MiniMax 以 1M Token 的上下文窗口和极低的单价成为处理长代码片段的经济选择;Kimi K2.5 则以其固定月费模式提供了可预测的成本结构。9Router 的 Combo 功能允许开发者将这些廉价服务配置为订阅服务的降级目标,当订阅配额耗尽时自动切换。例如创建一个名为 premium-coding 的 Combo,按优先级排列模型:cc/claude-opus-4-7(订阅主力)、glm/glm-5.1(廉价备份)、minimax/MiniMax-M2.7(最便宜兜底),此时 9Router 会按照这个顺序依次尝试,直到找到可用配额的服务商。

第三层级:免费服务商(Free Tier)。这一层级是 9Router 能够实现「零成本编码」的关键所在。当前推荐的免费提供商包括 Kiro AI(提供 Claude 4.5、GLM-5、MiniMax M2.5 等模型的无限制免费访问,通过 AWS Builder ID、Google 或 GitHub OAuth 认证)、OpenCode Free(无需任何认证的直连代理,模型自动从 opencode.ai/zen/v1/models 获取)和 Vertex AI(为新 Google Cloud 账户提供 $300 免费额度,有效期 90 天,支持 Gemini 3 Pro、DeepSeek 和 GLM-5 等模型)。值得注意的是,一些早期的免费服务如 iFlow 和 Qwen Code 的免费层级已在 2026 年被提供商关闭,因此不建议继续使用。9Router 的 Combo 配置支持将免费服务作为最后一层降级兜底,例如创建一个完全免费的 Combo:优先级依次为 kr/claude-sonnet-4.5(Kiro 的 Claude 4.5 免费无限)、kr/glm-5(Kiro 的 GLM-5 免费)、vertex/gemini-3.1-pro-preview(Vertex 的 $300 免费额度),这个 Combo 的月均成本为零,同时通过 RTK 压缩还能额外节省 20-40% 的 Token 消耗。

自动降级路由的触发条件包括四种情况:配额耗尽是最常见的触发条件,9Router 通过追踪每个账户的剩余 Token 量和重置时间,在配额即将耗尽时主动降级而不是等待请求失败;错误率升高是第二个触发条件,当某个服务连续出现错误响应时,路由引擎会自动切换到下一个可用选项;价格超限是第三个触发条件,开发者可以在 Dashboard 中设置每个提供商的最大支出上限,超出后自动降级;手动切换是第四个触发条件,用户随时可以通过 Dashboard 手动指定当前使用的提供商或 Combo。实际测试表明,这个三级降级机制能够在绝大多数场景下实现零停机时间的工作流持续性,用户几乎感知不到底层的提供商切换。

RTK Token Saver 的压缩原理与工程实践

RTK(Real-Time Token compression Kit)是 9Router 实现 Token 节省的核心技术模块,它的创新之处在于将 Token 压缩发生在请求生命周期的最早阶段 —— 在消息经过任何格式翻译之前,直接对工具输出结果进行智能压缩。这一设计决策保证了 RTK 能够作用于所有支持的提供商格式,因为无论最终请求被翻译成什么格式,原始的工具输出内容已经被压缩好了。

从功能定位来看,RTK 解决的问题是 AI 编码过程中普遍存在但经常被忽视的 Token 消耗源:工具输出内容。在一个典型的编码 Agent 工作流中,模型需要执行的工具包括 git diff(查看代码变更)、grep 或 find(搜索代码)、ls 或 tree(浏览目录结构)、读取日志文件、读取大量代码文件等。这些工具输出的内容往往非常冗长,例如一个大型项目的 git diff 可能包含数千行变更,grep 搜索一个常用关键词可能返回数百个匹配结果,ls -R 遍历一个复杂项目可能产生数万字节的目录列表。这些内容在发送给 LLM 时会占用大量的输入 Token 配额,但其中真正有价值的信息可能只占一小部分。根据 9Router 官方的测试数据,在典型的编码 Agent 会话中,工具输出内容能够占据输入 Token 预算的 30-50%,这意味着如果能够有效压缩这些内容,Token 消耗量将大幅降低。

RTK 的压缩策略基于对不同工具输出类型的深度理解,设计了针对性的过滤器来识别和处理各类内容。git-diff 过滤器专门处理 git diff 输出,它会移除冗余的空行、合并相邻的相同操作、简化行号显示,同时保留关键的代码变更语义。git-status 过滤器处理 git status 命令的输出,只保留文件状态和名称,移除对空格和格式的描述。grep/find 过滤器处理搜索结果,通过智能去重和截断保留最重要的匹配位置,去掉重复的文件路径前缀。ls/tree 过滤器处理目录列表输出,移除详细的权限信息和时间戳,保留目录结构和文件名。dedup-log 过滤器专门处理日志文件,通过检测和合并重复的日志行来大幅缩减日志体积,例如连续出现 100 次的相同错误信息可能被压缩为「×100」的形式。smart-truncate 过滤器是一个通用的智能截断器,它会对超长内容进行语义化截断,确保保留的内容在语义上是完整的,通常用于截断超长的文件内容或搜索结果列表。read-numbered 过滤器处理带有行号标注的文件读取输出,优化行号显示格式以减少 Token 占用。

RTK 的工作流程设计遵循「安全第一」的原则。每个过滤器都内置了回退机制:当压缩过程抛出异常或压缩后的结果比原始内容更大时,RTK 会静默地保留原始内容,而不是让压缩失败影响整个请求。这种设计确保了 RTK 永远不会成为工作流的故障点。RTK 的自动检测机制是其易用性的关键 —— 它只需要「窥探」每个 tool_result 的前 1KB 内容,就能判断应该使用哪个过滤器,无需用户进行任何配置。这种零配置的设计使得 RTK 默认启用,对所有用户透明。

从性能角度看,RTK 的压缩效果在典型场景下非常显著。官方给出的对比数据是:没有 RTK 时单次请求向 LLM 发送 47K Token,使用 RTK 后降至 28K Token,节省比例达到 40%。在更极端的场景下(如超长 git diff、重复日志),节省比例可能更高。在输出 Token 压缩方面,9Router 还集成了 Caveman 模式,这是一个通过注入特定提示词来引导 LLM 回复更加简洁的附加功能,能够在输出层面再节省最高 65% 的 Token。RTK 和 Caveman 模式的组合,使得 9Router 用户能够以极低的成本运行高强度的编码 Agent 工作流。

Combo 配置与生产环境部署指南

Combo 是 9Router 中用于组织和管理多层级降级路由的核心概念。一个 Combo 本质上是一个有序的模型列表,每个模型都标注了提供商前缀(如 cc/ 表示 Claude Code 订阅、glm/ 表示 GLM API、kr/ 表示 Kiro 免费),9Router 按照列表顺序依次尝试,直到找到可用的提供商。创建一个高效 Combo 的原则是「按优先级从高到低排列、按成本从高到低排列、按冗余需求设置多层备份」。对于大多数开发者来说,推荐的 Combo 配置策略是:主力使用订阅服务的最强模型以获得最佳编码体验,备份使用廉价服务以控制成本,兜底使用免费服务以确保永不中断。

生产环境中部署 9Router 有三种主要方式。第一种是本地开发模式,这是最简单快速的启动方式,执行 npm install -g 9router 安装全局包,然后运行 9router 命令启动服务,Dashboard 会自动在浏览器中打开。第二种是 Docker 容器化部署,适合需要长期运行或需要跨设备共享的场景。基础的 Docker 部署命令是 docker run -d --name 9router -p 20128:20128 -v 9router-data:/app/data 9router,如果要使用环境变量配置,则需要通过 --env-file 参数指定 .env 文件。第三种是 VPS 或云服务器部署,需要克隆仓库、执行 npm installnpm run build 进行构建,然后通过 PM2 等进程管理器启动。在生产环境中,必须修改的关键环境变量包括 JWT_SECRET(JWT 签名密钥,默认值存在安全风险)、INITIAL_PASSWORD(初始登录密码)和 API_KEY_SECRET(API 密钥的 HMAC 盐值。如果将 9Router 暴露到公网,强烈建议设置 REQUIRE_API_KEY=true 来强制要求 API 密钥验证,并通过 HTTPS 反向代理(如 Nginx)添加 TLS 加密。

对于需要在团队中共享 9Router 实例的场景,多账户支持功能提供了负载均衡和高可用能力。开发者可以为同一个提供商添加多个账户,9Router 会自动在多个账户之间进行轮询(round-robin)或者基于优先级路由。当某个账户的配额耗尽时,流量会自动切换到下一个账户,不需要人工干预。这一功能对于大型团队或者高强度使用场景特别有价值。

工程实践中的关键参数配置与监控

要在生产环境中稳定运行基于 9Router 的编码 Agent,需要关注几个关键参数的配置与监控。RTK 开关状态是第一个需要确认的参数,默认情况下 RTK 是开启的,但如果发现某些工具输出出现了语义丢失,可以通过 Dashboard → Endpoint settings 手动关闭特定过滤器或整个 RTK 功能。Combo 中的模型优先级需要根据实际使用场景进行调整,如果主要进行复杂架构设计,应该将 Opus 系列模型放在最前面;如果主要进行日常代码修改,Sonnet 系列模型可能在成本和效果之间取得更好平衡。配额告警阈值可以通过 Dashboard 设置,当某个提供商的剩余配额低于设定值时触发提醒,帮助开发者提前规划降级时机。

使用量分析与成本追踪是 9Router Dashboard 的另一个重要功能模块。Usage Analytics 会记录每个提供商、每个模型的 Token 消耗量和估算成本。需要特别理解的是,Dashboard 中显示的「成本」并非 9Router 向你收取的费用,而是将你的使用量按照各提供商的公开定价进行折算后的「等效成本」,目的是帮助你理解如果直接使用付费 API 需要支付多少费用。对于使用免费提供商的场景(如 Kiro、OpenCode Free),Dashboard 显示的成本数字代表的是你通过使用免费服务节省下来的费用,这是一种正向的「省钱追踪」而非负向的「账单」。

在安全与隐私方面,9Router 作为本地代理运行,所有请求都会经过本地路由层再转发到上游提供商。这意味着你的 API 请求日志、Token 使用记录等敏感信息首先存储在本地,然后才通过云同步功能(可选)进行加密同步。对于高安全性要求的场景,建议关闭云同步功能,所有配置和历史记录完全存储在本地机器上。Docker 部署时,数据卷挂载点 /app/data 用于存储应用状态,~/.9router 是本地存储的默认路径,两者通过构建时的符号链接指向同一位置。

总结

9Router 为 AI 编码场景提供了一套完整的多提供商聚合路由解决方案,通过三级自动降级机制确保编码 Agent 永远不会因为配额耗尽而中断工作,通过 RTK Token Saver 在工具输出层面实现 20-40% 的输入 Token 节省,通过格式翻译层实现对任何支持 OpenAI 端点的 CLI 工具的兼容。对于已经有订阅服务的开发者,9Router 是最大化订阅价值的工具;对于预算有限或希望零成本运行的开发者,9Router 与免费提供商的组合提供了可靠的免费编码体验。理解并善用 Combo 配置、RTK 压缩规则和配额追踪功能,是在生产环境中稳定运行 9Router 的关键。

资料来源:GitHub - decolua/9router(https://github.com/decolua/9router)

ai-systems

内容声明:本文无广告投放、无付费植入。

如有事实性问题,欢迎发送勘误至 i@hotdrydog.com