项目地址:decolua/9router
9Router 面向 Claude Code、Codex、Cursor、Cline 等 AI 编程工具,提供本地路由、模型切换、Token 节省与多供应商接入能力。
一句话看懂
9Router 是一个跑在本地的 AI Router。你把 AI 编程工具的 API Endpoint 指到 http://localhost:20128/v1,它再帮你把请求转发到不同模型供应商:订阅额度优先,用完后切到便宜模型,再不行切到免费额度。与此同时,它还会做格式转换、配额追踪、Token 刷新,以及 README 中重点强调的 RTK Token 节省。
如果你每天大量使用 AI 写代码,9Router 解决的是一个很实际的问题:模型额度、成本和工具兼容性经常打断工作流。
项目速览
| 维度 | 内容 |
|---|---|
| 项目类型 | 本地 AI API 路由器 / Token Saver |
| 技术栈 | Next.js、React、Express、代理中间件、本地存储 |
| 默认端口 | 20128 |
| 核心协议 | OpenAI 兼容 /v1 接口,并做 Claude/OpenAI 格式转换 |
| 面向工具 | Claude Code、Codex、Cursor、Cline、OpenCode、OpenClaw 等 |
| README 目标 | 节省 20-40% tokens,自动切换免费/低价/订阅模型 |
工作原理
9Router 在本地充当网关。外部看起来它像一个 OpenAI 兼容接口;内部则根据模型、账号、额度和策略,把请求转给不同供应商。
AI 编程工具
Claude Code / Codex / Cursor
本地 endpoint
localhost:20128/v1
9Router 智能路由
RTK Token 节省
OpenAI / Claude 格式转换
配额追踪与 Token 刷新
自动 fallback
订阅模型
低价模型
免费额度
这个设计的好处是,工具侧配置只做一次。以后你添加新供应商、换模型、调整优先级,都在 9Router 控制台里完成,不需要每个 CLI 单独改一遍。
为什么它对 AI 编程有用
AI 编程工具的消耗不只是用户输入。git diff、grep、文件读取、测试输出、工具返回值都会进入上下文,尤其是长任务里,tool_result 很容易吃掉大量 Token。9Router 的 RTK Token 节省器就是针对这类输出做压缩和裁剪,减少无效上下文。
更重要的是 fallback。真实工作里最烦的不是模型贵,而是写到一半被限流、额度用完、供应商故障。9Router 把供应商分层:订阅优先、低价兜底、免费补位,让"继续工作"比"手动换模型"更自然。
技术栈与模块
仓库的 package.json 显示它是一个 Next.js 应用,依赖 React 19、Next 16、Express、http-proxy-middleware、jose、sql.js、zustand、Monaco、Recharts 等。大致可以分成四层:
| 层级 | 作用 |
|---|---|
| Web Dashboard | 管理供应商、模型、密钥、额度和路由策略 |
| API Gateway | 暴露 OpenAI 兼容接口,接收工具请求 |
| Provider Adapter | 做不同供应商的协议与鉴权适配 |
| Local State | 保存配置、统计、会话和配额信息 |
Dashboard
Next.js / React
本地配置与统计
/v1 API Gateway
路由策略引擎
Provider Adapters
Claude / Codex / Copilot
GLM / MiniMax 等低价模型
Kiro / OpenCode Free / Vertex credits
路由策略可以怎么设计
9Router 最值得玩味的地方,是它把"选模型"从一次性配置变成了策略。你可以按成本、稳定性、上下文长度、供应商额度来设计路由。
额度充足
接近上限
一次编码请求
检查订阅额度
订阅模型
低价模型
免费模型兜底
RTK 压缩 tool_result
返回结果
一个实用策略是:复杂架构设计和大规模重构走高质量模型,日常补测试、解释报错、改文案走低价模型,临时探索和重复性任务走免费额度。这样既不牺牲关键任务质量,也不会把昂贵额度浪费在低风险任务上。
快速开始
全局安装方式:
bash
npm install -g 9router
9router
然后打开控制台:
text
http://localhost:20128
在 AI 编程工具中填写:
text
Endpoint: http://localhost:20128/v1
API Key: 控制台生成或复制的 key
Model: 选择 9Router 中配置的模型名
源码运行方式:
bash
git clone https://github.com/decolua/9router.git
cd 9router
cp .env.example .env
npm install
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
适合谁
9Router 特别适合高频 AI 编程用户:每天在多个 CLI、编辑器、模型之间切换的人;已经购买多个订阅,希望把额度用满的人;以及团队里想统一模型入口、降低配置混乱的人。
它不太适合只偶尔聊天、只用单一官方客户端的人。它引入了一个本地网关,就意味着你需要理解密钥保存、供应商配置、端口暴露、日志记录这些基础问题。
使用时要留意
9Router 会处理 API Key、账号 Token 和请求内容。部署在个人电脑上通常问题不大;如果放在服务器或团队环境里,就要认真做访问控制、日志脱敏和配置备份。尤其不要把本地控制台暴露到公网。
另外,Token 压缩不是魔法。它能减少冗余工具输出,但如果任务本身需要完整上下文,过度压缩可能影响模型判断。最稳妥的方式是先观察几天统计,再逐步调整策略。
排查问题时先看三件事
如果工具接入后不可用,先不要急着换模型。可以按下面顺序排查:
| 检查项 | 说明 |
|---|---|
| Endpoint | AI 工具是否确实指向 http://localhost:20128/v1 |
| API Key | 工具侧 key 是否和 9Router 控制台一致 |
| Model | 模型名是否是 9Router 已配置并可路由的名称 |
| Provider | 供应商账号是否登录、Token 是否过期、额度是否可用 |
| Logs | 控制台是否显示格式转换、限流、鉴权或网络错误 |
如果团队共用一台 9Router,更要把访问边界说清楚。它适合作为本地或内网基础设施,不适合裸奔在公网。
总结
9Router 的定位很清楚:它不是一个新模型,也不是一个聊天客户端,而是 AI 编程工作流里的"本地调度台"。它把供应商、额度、协议和 Token 成本放到一个入口里管理。对重度 AI 编程用户来说,这种基础设施感很有价值,因为它让你少一点被额度和配置打断,多一点把注意力留给代码本身。