9Router:免费 AI 路由与 Token 节省器——将 Claude Code、Codex、Cursor 等接入 40+ 提供商的实战指南
本指南以 9Router 项目官方 README 为核心,完整讲解这套免费开源 AI 路由器/Token 节省器的架构原理、安装启动、三层智能切换、RTK 压缩、配额追踪与多工具集成方法。读完本文,你将掌握如何用 http://localhost:20128/v1 一个端点把 Claude Code、Codex、Cursor、Cline 等任意支持自定义 OpenAI 端点的编程工具接入订阅、低价与免费三层模型池,并通过组合(Combo)实现零停机自动降级与 20–40% 的 Token 节省。
为什么需要 9Router
在纯订阅或纯按量付费的 AI 编程模式下,开发者普遍会遇到五类问题:
- 订阅配额每月到期却用不完:Claude Code、Codex 等订阅套餐按 5 小时 + 每周重置,忙时不够用、闲时被浪费;
- 速率限制打断编程节奏:高峰期请求被限流,工作被迫中断;
- 工具输出烧 Token:
git diff、grep、ls等命令输出往往占去 30–50% 的提示词预算; - 昂贵 API 账单:每个提供商月费 $20–50,多开更是负担;
- 手动切换提供商:配额耗尽后需要人工改配置。
9Router 的对应解法是:
- RTK Token 节省器——自动压缩
tool_result内容,每次请求节省 20–40% 输入 Token; - 充分利用订阅——实时追踪配额,在重置前用尽每一分额度;
- 自动切换——订阅 → 低价 → 免费,零停机时间;
- 多账户支持——按提供商在多个账户之间轮询;
- 通用兼容——支持 Claude Code、Codex、Cursor、Cline 以及任何 CLI 工具。
工作原理:三层智能路由架构
9Router 以本地代理形式运行,你的 CLI 工具只需指向 OpenAI 兼容端点即可,路由过程如下图所示:
┌─────────────┐
│ Your CLI │ (Claude Code、Codex、OpenClaw、Cursor、Cline...)
│ Tool │
└──────┬──────┘
│ http://localhost:20128/v1
↓
┌─────────────────────────────────────────────┐
│ 9Router (Smart Router) │
│ • RTK Token Saver (cut tool_result tokens) │
│ • Format translation (OpenAI ↔ Claude) │
│ • Quota tracking │
│ • Auto token refresh │
└──────┬──────────────────────────────────────┘
│
├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, GitHub Copilot
│ ↓ quota exhausted
├─→ [Tier 2: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M)
│ ↓ budget limit
└─→ [Tier 3: FREE] Kiro, OpenCode Free, Vertex ($300 credits)
9Router 在请求路径上承担四项关键职责:先用 RTK 削减 tool_result 的 Token 体积,再做 OpenAI ↔ Claude 等格式翻译,同时记录配额消耗并在 OAuth Token 过期前自动刷新,最后按三层策略把请求路由到最合适的提供商。最终结果是"编程永不停歇、最小成本 + 20–40% Token 节省"。
从源码结构看,这条管线由 open-sse/ 目录下的翻译器(translator)、处理器(handlers)与 RTK(rtk)三块协同完成:open-sse/rtk/index.js 中的 compressMessages 注释明确说明它在 translateRequest(任何格式转换之前)的顶部被注入执行。
快速开始
1. 全局安装并启动:
npm install -g 9router
9router
🎉 控制面板在 http://localhost:20128 打开。
2. 连接免费提供商(无需注册):
控制面板 → 提供商 → 连接 Kiro AI(约 50 积分/月免费,可访问 Claude 4.5 + GLM-5 + MiniMax)或 OpenCode Free(无需认证)→ 完成!
3. 在 CLI 工具中使用:
Claude Code/Codex/OpenClaw/Cursor/Cline 设置:
Endpoint: http://localhost:20128/v1
API Key: [从控制面板复制]
Model: kr/claude-sonnet-4.5
替代方案:从源码运行(本仓库):
本仓库的包是私有的(9router-app),因此源码/Docker 执行是预期的本地开发方式。
cp .env.example .env
npm install
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
生产模式:
npm run build
PORT=20128 HOSTNAME=0.0.0.0 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run start
默认 URL:
- 控制面板:
http://localhost:20128/dashboard - OpenAI 兼容 API:
http://localhost:20128/v1
注意 package.json 中源码默认开发端口为 20127(next dev --port 20127),README 示例统一以 20128 作为对外服务端口,两者可通过 PORT 环境变量对齐。
核心功能详解
9Router 的主要能力可归纳为下表:
| 功能 | 作用 | 为什么重要 |
|---|---|---|
| RTK Token 节省器 | 压缩工具输出(git diff、grep、ls、tree...)后再发送给 LLM |
每次请求节省 20–40% 输入 tokens |
| Headroom Token 节省器 | 在提供商路由前调用可选的外部 /v1/compress 代理 |
不改变客户端即可节省更多上下文 Token |
| Caveman 模式 | 注入 caveman 风格提示词 → LLM 回复简洁,保留技术实质 | 节省高达 65% 输出 tokens |
| Ponytail | 注入"懒惰资深开发"提示词 → LLM 写最精简、YAGNI 优先的代码 | 更少输出 tokens、更少重构 |
| 智能三层切换 | 自动路由:订阅 → 低价 → 免费 | 编程永不停歇,零停机时间 |
| 实时配额追踪 | 实时 Token 计数 + 重置倒计时 | 充分利用订阅价值 |
| 格式转换 | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro ↔ Vertex | 兼容任何 CLI 工具 |
| 多账户支持 | 每个提供商支持多个账户 | 负载均衡 + 冗余备份 |
| 自动 Token 刷新 | OAuth Token 自动刷新 | 无需手动重新登录 |
| 自定义组合 | 创建无限模型组合 | 自定义适合你的切换策略 |
| 请求日志 | 调试模式下的完整请求/响应日志 | 轻松排查问题 |
| 云同步 | 跨设备同步配置 | 处处相同设置 |
| 使用分析 | 追踪 tokens、成本、趋势 | 优化开支 |
| 任意部署 | 本地、VPS、Docker、Cloudflare Workers | 灵活部署选项 |
设置 X-9Router-Token-Saver: off 可针对单次聊天请求绕过所有 Token 节省器。该头部在 open-sse/handlers/chatCore.js 的请求处理核心中参与解析,与 open-sse/rtk/ 的启用开关联动。
RTK Token 节省器:源码级原理
工具输出(git diff、grep、find、ls、tree、日志转储...)通常占用 30–50% 的提示词预算。RTK 在请求到达 LLM 之前检测并应用智能、无损压缩,具备以下特性:
- 过滤器:
git-diff、git-status、git-log、build-output、grep、find、ls、tree、dedup-log、smart-truncate、read-numbered、search-list,共 12 个,完整注册在 open-sse/rtk/registry.js; - 自动检测:无需配置——RTK 检查每个
tool_result的前 1KB(DETECT_WINDOW = 1024,定义于 open-sse/rtk/constants.js),按固定顺序匹配特征后挑选合适过滤器; - 安全设计:如果过滤器失败、抛出异常或使输出变大,RTK 会静默保留原始文本,错误永远不会中断请求(见 open-sse/rtk/applyFilter.js 的
safeApply,注释明确对应 Rust 版catch_unwind语义); - 通用兼容:适用于所有格式(OpenAI、Claude、Gemini、Cursor、Kiro、OpenAI Responses),因为它在任何格式转换之前运行;
- 默认开启:可随时在控制面板 → 端点设置中切换。
自动检测的实际逻辑在 open-sse/rtk/autodetect.js,检测顺序为:git-log → git-diff → git-status → build-output → grep → find → tree → ls → search-list → read-numbered → dedup-log → smart-truncate → null。例如通过正则 ^diff --git 识别 git diff、^On branch |^nothing to commit 识别 git status、[├└]── 盒式绘图字符识别 tree 输出、"file:number:content" 三字段结构识别 grep 结果。
压缩入口 open-sse/rtk/index.js 的 compressMessages 同时兼容多种消息形态:
- OpenAI
tool消息的字符串或[{type:"text",text}]数组内容; - Claude
content块中tool_result的字符串与数组两种形态(跳过is_error === true的错误痕迹); - OpenAI Responses 的
function_call_output; - Kiro 专有
conversationState.history[].userInputMessage...toolResults结构。
压缩有边界保护:小于 500 字节的小块直接跳过、大于 10 MiB 的原始内容不做处理(RAW_CAP),压缩结果不允许为空或变大。日志函数 formatRtkLog 会输出形如 <a href="https://link.gitcode.com/i/64ee8895c3d9574bca566cc7f7b445d8" target="_blank">RTK] saved 4096B / 10240B (40.0%) via [git-diff] hits=1 的统计,仓库内配套测试 [tests/unit/rtk.test.js、tests/unit/rtk.e2e.test.js 与 tests/unit/rtk.multi-provider.e2e.test.js 对单提供商与多提供商场景均做了验证。
效果示意:
不使用 RTK:47K tokens 发送给 LLM
使用 RTK: 28K tokens 发送给 LLM (节省 40% · 相同上下文 · 相同答案)
Headroom Token 节省器
Headroom 是可选组件,独立运行。9Router 调用 Headroom 本地的 /v1/compress 端点,随后保持正常的路由、切换、鉴权与用量追踪:
Client → 9Router → Headroom /v1/compress → 9Router → provider
本地安装:
pip install "headroom-ai[proxy]"
headroom proxy --port 8787
在控制面板 → 端点 → Token Saver → Headroom 中启用,默认 URL 为 http://localhost:8787。相关实现位于 open-sse/rtk/headroom.js。
Docker 场景下的地址写法:
# Headroom 服务位于同一 Docker 网络
http://headroom:8787
# Headroom 运行在宿主机
http://host.docker.internal:8787
如果 Headroom 宕机或返回错误,9Router 会 fail-open,直接发送原始请求,不阻塞业务。
Caveman 模式与 Ponytail(输出侧 Token 节省)
Caveman 模式(灵感来自流行的 "why use many token when few token do trick" 风格提示词)向每个请求注入 caveman 风格系统提示词,让 LLM 回复极简但保留技术实质,最多可节省 65% 的输出 Token。其提示词模板与注入逻辑分别位于 open-sse/rtk/cavemanPrompts.js 与 open-sse/rtk/caveman.js。
Ponytail(懒惰资深开发) 向每个请求注入"lazy senior dev"系统提示词,引导 LLM 编写最小化、YAGNI 优先的代码——优先删除而非新增、优先标准库而非新依赖、优先一行式而非抽象。分为三档(见 open-sse/rtk/ponytailPrompt.js):
- Lite——构建所要求的内容,并指出更懒的替代方案;
- Full——YAGNI 阶梯强制:标准库 → 原生 → 现有依赖 → 一行式 → 最小代码;
- Ultra——YAGNI 极端派:先删除,交付一行式,并在同一回复中质疑其余需求。
Ponytail 绝不牺牲:输入校验、防止数据丢失的错误处理、安全性、可访问性或任何被明确要求的内容。在控制面板 → 端点 → Ponytail 中启用,可与 Caveman(输出简洁)和 RTK(输入压缩)叠加使用。
智能三层切换
创建带自动切换的组合:
组合:"my-coding-stack"
1. cc/claude-opus-4-6 (你的订阅)
2. glm/glm-4.7 (低价备份,$0.6/1M)
3. if/kimi-k2-thinking (免费备选)
→ 配额用完或出错时自动切换
实时配额追踪
- 每个提供商的 Token 消耗
- 重置倒计时(5 小时、每日、每周)
- 付费等级的成本估算
- 月度支出报告
格式转换
格式间无缝转换:OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro ↔ Vertex ↔ Antigravity ↔ Ollama ↔ OpenAI Responses。你的 CLI 工具发送 OpenAI 格式 → 9Router 转换 → 提供商接收原生格式,适用于任何支持自定义 OpenAI 端点的工具。从源码结构看,这一层由 open-sse/translator/ 下的 request、response、formats 与 schema 模块协同完成。
多账户与自动 Token 刷新
- 每个提供商可添加多个账户,自动轮询或基于优先级路由;
- 当一个账户达到配额时自动切换到下一个;
- OAuth Token 在过期前自动刷新,无需手动重新认证。
自定义组合
- 创建无限模型组合,混合订阅、低价和免费等级;
- 为组合命名以便在 CLI 中直接引用;
- 使用云同步跨设备共享组合。
请求日志与使用分析
- 启用调试模式获取完整请求/响应日志,追踪 API 调用、请求头和载荷;
- 追踪每个提供商和模型的 Token 使用量、成本估算和支出趋势,生成月度报告;
- 注意:使用分析中显示的"成本"仅用于追踪和比较目的,9Router 本身永远不会向你收费。
云同步
- 跨设备同步提供商、组合和设置,自动后台同步,安全加密存储;
- 云运行时说明:生产环境中优先使用服务端变量——
BASE_URL(云同步调度程序使用的内部回调 URL)与CLOUD_URL(云同步端点基础 URL);NEXT_PUBLIC_BASE_URL与NEXT_PUBLIC_CLOUD_URL仍用于兼容性/UI,但服务端运行时优先使用前者; - 云同步请求使用超时 + 快速失败行为,避免云 DNS/网络不可用时 UI 挂起。
成本与计费真相
9Router 计费真相:
- ✅ 9Router 软件 = 永久免费(开源,绝不收费)
- ✅ 控制面板"成本" = 仅用于显示/追踪(不是实际账单)
- ✅ 你直接向提供商付款(订阅或 API 费用)
- ✅ 免费提供商保持免费(在免费额度内 $0)
- ❌ 9Router 永不发送发票或扣款
成本显示如何工作: 控制面板显示估算成本,如同你直接使用付费 API。这不是计费,而是一个比较工具,用于展示你的节省。
控制面板显示:
• 总请求数:1,662
• 总 Tokens:47M
• 显示成本:$290
实际检查:
• 提供商:Kiro(免费等级:约 50 积分/月)
• 实际支付:$0.00
• $290 意味着什么:通过使用免费模型节省的金额!
付款规则:
- 订阅提供商(Claude Code、Codex):通过他们的网站直接付款;
- 低价提供商(GLM、MiniMax):直接付款,9Router 只做路由;
- 免费提供商(Kiro、OpenCode Free、Vertex):真正的免费,在免费额度内无隐藏费用;
- 9Router:从不收取任何费用。
价格一览
| 等级 | 提供商 | 成本 | 配额重置 | 适用场景 |
|---|---|---|---|---|
| TOKEN 节省器 | RTK(内置) | 免费 | 始终开启 | 每次请求节省 20–40% tokens |
| 订阅 | Claude Code (Pro/Max) | $20–200/月 | 5 小时 + 每周 | 已有订阅的用户 |
| Codex (Plus/Pro) | $20–200/月 | 5 小时 + 每周 | OpenAI 用户 | |
| GitHub Copilot | $10–19/月 | 每月 | GitHub 用户 | |
| Cursor IDE | $20/月 | 每月 | Cursor 用户 | |
| 低价 | GLM-5.1 / GLM-4.7 | $0.6/1M | 每日 10AM | 预算备份 |
| MiniMax M2.7 | $0.2/1M | 5 小时滚动 | 最便宜选项 | |
| Kimi K2.5 | $9/月固定 | 10M tokens/月 | 可预测成本 | |
| 免费 | Kiro AI | $0 | 50 积分/月 | Claude 4.5 + GLM-5 + MiniMax 免费 |
| OpenCode Free | $0 | varies* | 无需认证,自动获取模型(列表会变化) | |
| Vertex AI | $300 额度 | 新 GCP 账户 | Gemini 3 Pro + DeepSeek + GLM-5 |
注意: iFlow、Qwen Code 和 Gemini CLI 的免费等级已于 2026 年停止,请改用 Kiro / OpenCode Free / Vertex。Kiro AI 于 2025 年 9 月转为付费模式,免费等级现上限为每月 50 积分(新账户前 30 天另加 500 试用积分)。OpenCode Free 的模型列表会随时间变化,部分模型仅限时免费。Vertex AI 新 GCP 账户 $300 免费额度仍然有效,但自 2026 年 3 月起 Gemini API 端点不再消耗这些额度,请改用 Vertex AI Studio 端点。
专业提示: RTK + Kiro AI + OpenCode Free 组合 = $0 成本 + 节省 20–40% tokens!
典型使用场景
场景 1:"我有 Claude Pro 订阅"
问题: 配额到期未用完,繁忙编码时遇到速率限制
组合:"maximize-claude"
1. cc/claude-opus-4-7 (充分利用订阅)
2. glm/glm-5.1 (配额用完时的低价备份)
3. kr/claude-sonnet-4.5 (免费紧急备选)
月成本:$20(订阅)+ ~$5(备份)= $25 总计
场景 2:"我想零成本"
组合:"free-forever"
1. kr/claude-sonnet-4.5 (通过 Kiro 免费使用 Claude 4.5,约 50 积分/月)
2. kr/glm-5 (通过 Kiro 免费使用 GLM-5)
3. oc/<auto> (OpenCode Free,无需认证)
月成本:$0
质量:生产级模型 + RTK 节省 20–40% tokens
场景 3:"我需要 24/7 编码,不中断"
组合:"always-on"
1. cc/claude-opus-4-7 (最佳质量)
2. cx/gpt-5.5 (第二个订阅)
3. glm/glm-5.1 (低价,每日重置)
4. minimax/MiniMax-M2.7 (最便宜,5 小时重置)
5. kr/claude-sonnet-4.5 (通过 Kiro 免费使用,约 50 积分/月)
结果:5 层切换 = 零停机时间
场景 4:"我想在 OpenClaw 中使用免费 AI"
组合:"openclaw-free"
1. kr/claude-sonnet-4.5 (Claude 4.5 免费)
2. kr/glm-5 (GLM-5 免费)
3. kr/MiniMax-M2.5 (MiniMax 免费)
月成本:$0
访问方式:WhatsApp、Telegram、Slack、Discord、iMessage、Signal...
常见问题
Q:为什么我的控制面板显示高成本? 控制面板追踪 Token 使用并显示估算成本,如同直接使用付费 API。这不是实际计费,而是展示你通过免费模型或现有订阅节省了多少钱。
Q:9Router 会扣我的钱吗? 不会。9Router 是在你自己电脑上运行的开源软件,永不收费。它没有你的信用卡、不能发送发票、没有计费系统。你只需直接向订阅或低价提供商付款。
Q:免费提供商真的是无限量的吗?
基本上是。Kiro AI(约每月 50 积分免费,新账户前 30 天加 500 试用积分,通过 AWS Builder ID / Google / GitHub OAuth)、OpenCode Free(无认证直连代理,模型从 opencode.ai/zen/v1/models 自动获取)、Vertex AI(新 Google Cloud 账户 $300 免费额度,90 天)都是真正的免费服务。9Router 只是路由请求,没有"陷阱"或未来计费。已停止的免费等级(不再推荐):iFlow(2026 改为付费)、Qwen Code(阿里巴巴 2026-04-15 停止免费 OAuth 等级)、Gemini CLI(Google 2026-06-18 停止服务,由闭源 Antigravity CLI 取代)。
Q:如何最小化我的实际 AI 成本?
采用"免费优先"策略:1)从 100% 免费组合开始(Kiro GLM-5 / OpenCode Free / Vertex Gemini 3 Pro,成本 $0/月);2)仅在需要时添加低价备份(如 glm/glm-4.7,只为实际使用付费);3)最后使用已有订阅提供商,通过配额追踪最大化其价值。
Q:如果我的使用量突然激增怎么办? 智能切换防止意外费用:订阅达到限制 → 自动切换到低价等级;低价等级变贵 → 自动切换到免费等级。你可以在控制面板中为每个提供商设置支出限制,9Router 会遵守。
设置指南
订阅提供商(充分利用价值)
Claude Code (Pro/Max)
控制面板 → 提供商 → 连接 Claude Code
→ OAuth 登录 → 自动 token 刷新
→ 5小时 + 每周配额追踪
模型:
cc/claude-opus-4-7
cc/claude-opus-4-6
cc/claude-sonnet-4-6
cc/claude-haiku-4-5-20251001
专业提示:复杂任务用 Opus,追求速度用 Sonnet,9Router 按模型追踪配额。
OpenAI Codex (Plus/Pro)
控制面板 → 提供商 → 连接 Codex
→ OAuth 登录(端口 1455)
→ 5小时 + 每周重置
模型:
cx/gpt-5.5
cx/gpt-5.4
cx/gpt-5.3-codex
cx/gpt-5.2-codex
GitHub Copilot
控制面板 → 提供商 → 连接 GitHub
→ 通过 GitHub 进行 OAuth
→ 每月重置(每月 1 日)
模型:
gh/gpt-5.4
gh/claude-opus-4.7
gh/claude-sonnet-4.6
gh/gemini-3.1-pro-preview
gh/grok-code-fast-1
Cursor IDE
控制面板 → 提供商 → 连接 Cursor
→ OAuth 登录
→ 每月订阅
模型:
cu/claude-4.6-opus-max
cu/claude-4.5-sonnet-thinking
cu/gpt-5.3-codex
低价提供商(备份)
GLM-5.1 / GLM-4.7(每日重置,$0.6/1M)
- 注册智谱 AI(Zhipu AI)并获取编程计划的 API key;
- 控制面板 → 添加 API Key:提供商
glm、API Keyyour-key; - 使用:
glm/glm-5.1、glm/glm-5、glm/glm-4.7。
专业提示:编程计划提供 3 倍配额、成本仅为 1/7,每日 10:00 AM 重置。
MiniMax M2.7(5 小时重置,$0.20/1M)
- 注册 MiniMax 并获取 API key;
- 控制面板 → 添加 API Key;
- 使用:
minimax/MiniMax-M2.7、minimax/MiniMax-M2.5。
专业提示:长上下文(1M tokens)的最便宜选项。
Kimi K2.5($9/月固定)
- 订阅 Moonshot AI 并获取 API key;
- 控制面板 → 添加 API Key;
- 使用:
kimi/kimi-k2.5、kimi/kimi-k2.5-thinking。
专业提示:每月 $9 固定费用获得 10M tokens,实际成本约 $0.90/1M。
免费提供商(推荐)
Kiro AI(Claude 4.5 + GLM-5 + MiniMax 免费)
控制面板 → 连接 Kiro
→ AWS Builder ID、AWS IAM Identity Center、Google 或 GitHub
→ 免费使用(约 50 积分/月)
模型:
kr/claude-sonnet-4.5
kr/claude-haiku-4.5
kr/glm-5
kr/MiniMax-M2.5
kr/qwen3-coder-next
kr/deepseek-3.2
专业提示:Claude 的最佳免费选项,无需 API key、无需付款。
OpenCode Free(无需认证,自动获取模型)
控制面板 → 连接 OpenCode Free
→ 无需登录(直连代理)
→ 模型从 opencode.ai/zen/v1/models 自动获取
专业提示:最快的设置,连接后即可开始编码。
Vertex AI(新 GCP 账户 $300 免费额度)
控制面板 → 连接 Vertex AI
→ 上传 Google Cloud 服务账户 JSON
→ 在你的 GCP 项目中启用 Vertex AI API
模型:
vertex/gemini-3.1-pro-preview
vertex/gemini-3-flash-preview
vertex/gemini-2.5-flash
Vertex 合作伙伴(通过 Vertex 提供 Anthropic / DeepSeek / GLM / Qwen):
vertex-partner/glm-5-maas
vertex-partner/deepseek-v3.2-maas
vertex-partner/qwen3-next-80b-a3b-thinking-maas
专业提示:新 Google Cloud 账户 90 天内 $300 免费额度,足够日常编码使用(注意使用 Vertex AI Studio 端点消耗免费额度)。
创建组合
示例 1:充分利用订阅 → 低价备份
控制面板 → 组合 → 创建新组合
名称:premium-coding
模型:
1. cc/claude-opus-4-7 (订阅主用)
2. glm/glm-5.1 (低价备份,$0.6/1M)
3. minimax/MiniMax-M2.7 (最便宜的备选,$0.20/1M)
在 CLI 中使用:premium-coding
月度成本示例(100M tokens):
80M 通过 Claude(订阅):$0 额外费用
15M 通过 GLM:$9
5M 通过 MiniMax:$1
总计:$10 + 你的订阅费用
示例 2:仅免费(零成本)
名称:free-combo
模型:
1. kr/claude-sonnet-4.5 (通过 Kiro 免费使用 Claude 4.5,约 50 积分/月)
2. kr/glm-5 (通过 Kiro 免费使用 GLM-5)
3. vertex/gemini-3.1-pro-preview ($300 免费额度)
成本:通过 RTK 永久 $0(+ 节省 20–40% tokens)!
CLI 集成
Cursor IDE
设置 → 模型 → 高级:
OpenAI API Base URL:http://localhost:20128/v1
OpenAI API Key:[来自 9router 控制面板]
Model:cc/claude-opus-4-7
或直接使用组合:premium-coding
Claude Code
编辑 ~/.claude/config.json:
{
"anthropic_api_base": "http://localhost:20128/v1",
"anthropic_api_key": "your-9router-api-key"
}
Codex CLI
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-9router-api-key"
codex "your prompt"
OpenClaw
选项 1(推荐):控制面板 → CLI 工具 → OpenClaw → 选择模型 → 应用。
选项 2(手动):编辑 ~/.openclaw/openclaw.json:
{
"agents": {
"defaults": {
"model": {
"primary": "9router/kr/claude-sonnet-4.5"
}
}
},
"models": {
"providers": {
"9router": {
"baseUrl": "http://127.0.0.1:20128/v1",
"apiKey": "sk_9router",
"api": "openai-completions",
"models": [
{
"id": "kr/claude-sonnet-4.5",
"name": "Claude Sonnet 4.5 (Kiro Free)"
}
]
}
}
}
}
注意:OpenClaw 仅适用于本地 9Router。使用
127.0.0.1而非localhost以避免 IPv6 解析问题。
Cline / Continue / RooCode
Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
API Key: [from dashboard]
Model: cc/claude-opus-4-7
部署与配置
VPS 部署
# 克隆并安装
git clone https://github.com/decolua/9router.git
cd 9router
npm install
npm run build
# 配置
export JWT_SECRET="your-secure-secret-change-this"
export INITIAL_PASSWORD="your-password"
export DATA_DIR="/var/lib/9router"
export PORT="20128"
export HOSTNAME="0.0.0.0"
export NODE_ENV="production"
export NEXT_PUBLIC_BASE_URL="http://localhost:20128"
export NEXT_PUBLIC_CLOUD_URL="https://9router.com"
export API_KEY_SECRET="endpoint-proxy-api-key-secret"
export MACHINE_ID_SALT="endpoint-proxy-salt"
# 启动
npm run start
# 或用 PM2
npm install -g pm2
pm2 start npm --name 9router -- start
pm2 save
pm2 startup
Docker
官方发布镜像支持多平台(linux/amd64 + linux/arm64),发布在 Docker Hub 与 GHCR 的 decolua/9router 仓库下。
快速启动(使用发布镜像):
docker run -d \
--name 9router \
-p 20128:20128 \
-v "$HOME/.9router:/app/data" \
-e DATA_DIR=/app/data \
decolua/9router:latest
→ 打开 http://localhost:20128
容器默认值: PORT=20128、HOSTNAME=0.0.0.0。
常用命令:
docker logs -f 9router
docker restart 9router
docker stop 9router && docker rm 9router
docker pull decolua/9router:latest # 更新到最新
数据持久化: 宿主机的 $HOME/.9router/db/data.sqlite ↔ 容器内的 /app/data/db/data.sqlite。
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
JWT_SECRET |
自动生成(~/.9router/jwt-secret) |
控制面板认证 Cookie 的 JWT 签名密钥(覆盖以跨实例共享) |
INITIAL_PASSWORD |
123456 |
未保存哈希时的首次登录密码 |
DATA_DIR |
~/.9router |
主应用数据位置(SQLite 位于 $DATA_DIR/db/data.sqlite) |
PORT |
框架默认 | 服务端口(示例中为 20128) |
HOSTNAME |
框架默认 | 绑定主机(Docker 默认为 0.0.0.0) |
NODE_ENV |
运行时默认 | 部署时设为 production |
BASE_URL |
http://localhost:20128 |
云同步任务使用的服务端内部基础 URL |
CLOUD_URL |
https://9router.com |
服务端云同步端点基础 URL |
NEXT_PUBLIC_BASE_URL |
http://localhost:3000 |
向后兼容/公开基础 URL(服务端运行时优先用 BASE_URL) |
NEXT_PUBLIC_CLOUD_URL |
https://9router.com |
向后兼容/公开云 URL(服务端运行时优先用 CLOUD_URL) |
API_KEY_SECRET |
endpoint-proxy-api-key-secret |
生成 API Key 的 HMAC 密钥 |
MACHINE_ID_SALT |
endpoint-proxy-salt |
稳定机器 ID 哈希的盐值 |
ENABLE_REQUEST_LOGS |
false |
在 logs/ 下启用请求/响应日志 |
AUTH_COOKIE_SECURE |
false |
强制 Secure 认证 Cookie(HTTPS 反向代理后设为 true) |
REQUIRE_API_KEY |
false |
对 /v1/* 路由强制 Bearer API Key(互联网暴露部署推荐开启) |
HTTP_PROXY 等 |
空 | 上游提供商调用的可选出站代理(HTTPS_PROXY、ALL_PROXY、NO_PROXY) |
SEARXNG_URL |
http://localhost:8888/search |
内置无认证 SearXNG 网页搜索提供商端点 |
补充说明:小写出站代理变量(http_proxy、https_proxy、all_proxy、no_proxy)同样受支持;.env 不会打包进 Docker 镜像,运行时配置请用 --env-file 或 -e 注入;Windows 上可用 APPDATA 解析本地存储路径;INSTANCE_NAME 在旧文档中出现过,但当前运行时已不使用。
运行时文件与存储
- 主应用状态:
${DATA_DIR}/db/data.sqlite(SQLite——存储提供商、组合、别名、密钥、设置、用量历史),底层由 src/lib/db/ 的数据库模块驱动; - 自动备份:
${DATA_DIR}/db/backups/; - 可选的请求/翻译日志:
ENABLE_REQUEST_LOGS=true时位于<repo>/logs/; - 在 Docker 容器中
${DATA_DIR}与~/.9router解析到同一位置(构建时创建了/root/.9router -> /app/data符号链接)。
可用模型速查
Claude Code(cc/):cc/claude-opus-4-7、cc/claude-opus-4-6、cc/claude-sonnet-4-6、cc/claude-sonnet-4-5-20250929、cc/claude-haiku-4-5-20251001
Codex(cx/):cx/gpt-5.5、cx/gpt-5.4、cx/gpt-5.3-codex、cx/gpt-5.2-codex、cx/gpt-5.1-codex-max
GitHub Copilot(gh/):gh/gpt-5.4、gh/claude-opus-4.7、gh/claude-sonnet-4.6、gh/gemini-3.1-pro-preview、gh/grok-code-fast-1
Cursor(cu/):cu/claude-4.6-opus-max、cu/claude-4.5-sonnet-thinking、cu/gpt-5.3-codex、cu/kimi-k2.5
GLM(glm/,$0.6/1M):glm/glm-5.1、glm/glm-5、glm/glm-4.7
MiniMax(minimax/,$0.2/1M):minimax/MiniMax-M2.7、minimax/MiniMax-M2.5
Kimi(kimi/,$9/月固定):kimi/kimi-k2.5、kimi/kimi-k2.5-thinking
Kiro(kr/,免费,约 50 积分/月):kr/claude-sonnet-4.5、kr/claude-haiku-4.5、kr/glm-5、kr/MiniMax-M2.5、kr/qwen3-coder-next、kr/deepseek-3.2
OpenCode Free(oc/,免费无认证):从 opencode.ai/zen/v1/models 自动获取
Vertex AI(vertex/,$300 免费额度):vertex/gemini-3.1-pro-preview、vertex/gemini-3-flash-preview、vertex/gemini-2.5-flash、vertex-partner/glm-5-maas、vertex-partner/deepseek-v3.2-maas、vertex-partner/qwen3-next-80b-a3b-thinking-maas
故障排查
"Language model did not provide messages"
- 提供商配额耗尽 → 检查控制面板配额追踪器;
- 解决:使用组合切换或切换到更低价格等级。
速率限制
- 订阅配额用完 → 切换到 GLM/MiniMax;
- 添加组合:
cc/claude-opus-4-7 → glm/glm-5.1 → kr/claude-sonnet-4.5。
OAuth Token 过期
- 9Router 会自动刷新;
- 若问题持续:控制面板 → 提供商 → 重新连接。
高成本
- 在控制面板 → 端点设置中启用 RTK(默认开启,节省 20–40% tokens);
- 检查控制面板的使用统计;
- 将主模型切换为 GLM/MiniMax;
- 非关键任务使用免费等级(Kiro、OpenCode Free、Vertex)。
控制面板端口错误
- 设置
PORT=20128和NEXT_PUBLIC_BASE_URL=http://localhost:20128。
首次登录不工作
- 检查
.env中的INITIAL_PASSWORD; - 若未设置,回退密码为
123456。
logs/ 下没有请求日志
- 设置
ENABLE_REQUEST_LOGS=true。
API 参考
Chat Completions
POST http://localhost:20128/v1/chat/completions
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "cc/claude-opus-4-6",
"messages": [
{"role": "user", "content": "Write a function to..."}
],
"stream": true
}
List Models
GET http://localhost:20128/v1/models
Authorization: Bearer your-api-key
→ 以 OpenAI 格式返回所有模型和组合
技术栈与延伸阅读
9Router 的运行时技术栈(见 package.json):Node.js 20+、Next.js 16、React 19 + Tailwind CSS 4、SQLite(better-sqlite3 / node:sqlite / sql.js 回退)、SSE 流式传输、OAuth 2.0 (PKCE) + JWT + API Keys。Token 节省管线中 Caveman 与 Ponytail 的提示词分别位于 open-sse/rtk/cavemanPrompts.js 与 open-sse/rtk/ponytailPrompt.js,系统提示注入入口为 open-sse/rtk/systemInject.js。
如需查阅多语言版本,可参考 i18n/ 目录下的 README 翻译;仓库根目录的 CHANGELOG.md 记录了版本演进,DOCKER.md 提供了更详细的容器化部署说明。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust4.21 K638- DDeepSeek-V4.1-FlashDeepSeek-V4.1-Flash 是一个多模态混合专家(MoE)模型,拥有 5520 亿骨干参数,并支持最多一百万 token 的上下文长度。该模型原生支持图像和文本输入,并以自回归方式生成文本Python380
cherry-studio🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端TypeScript2 K146
hello-agents📚 《从零开始构建智能体》——从零开始的智能体原理与实践教程Python48167
new-apiAI模型聚合管理中转分发系统,一个应用管理您的所有AI模型,支持将多种大模型转为统一格式调用,支持OpenAI、Claude、Gemini等格式,可供个人或者企业内部管理与分发渠道使用。🍥 A Unified AI Model Management & Distribution System. Aggregate all your LLMs into one app and access them via an OpenAI-compatible API, with native support for Claude (Messages) and Gemini formats.Go20743
JeecgBoot🔥企业级低代码平台集成了AI应用平台,帮助企业快速实现低代码开发和构建AI应用!前后端分离架构 SpringBoot,SpringCloud、Mybatis,Ant Design4、 Vue3.0、TS+vite!强大的代码生成器让前后端代码一键生成,无需写任何代码! 引领AI低代码开发模式: AI生成->OnlineCoding-> 代码生成-> 手工MERGE,显著的提高效率,又不失灵活~Java34251
