首页
/ 9Router:免费 AI 路由与 Token 节省器——将 Claude Code、Codex、Cursor 等接入 40+ 提供商的实战指南

9Router:免费 AI 路由与 Token 节省器——将 Claude Code、Codex、Cursor 等接入 40+ 提供商的实战指南

2026-09-10 23:54:12作者:邵娇湘

本指南以 9Router 项目官方 README 为核心,完整讲解这套免费开源 AI 路由器/Token 节省器的架构原理、安装启动、三层智能切换、RTK 压缩、配额追踪与多工具集成方法。读完本文,你将掌握如何用 http://localhost:20128/v1 一个端点把 Claude Code、Codex、Cursor、Cline 等任意支持自定义 OpenAI 端点的编程工具接入订阅、低价与免费三层模型池,并通过组合(Combo)实现零停机自动降级与 20–40% 的 Token 节省。

9Router(Endpoint Proxy)控制面板 Providers 管理界面,展示 OAuth、Free 与 API Key 提供商分类及连接状态

为什么需要 9Router

在纯订阅或纯按量付费的 AI 编程模式下,开发者普遍会遇到五类问题:

  • 订阅配额每月到期却用不完:Claude Code、Codex 等订阅套餐按 5 小时 + 每周重置,忙时不够用、闲时被浪费;
  • 速率限制打断编程节奏:高峰期请求被限流,工作被迫中断;
  • 工具输出烧 Tokengit diffgrepls 等命令输出往往占去 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 diffgreplstree...)后再发送给 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 diffgrepfindlstree、日志转储...)通常占用 30–50% 的提示词预算。RTK 在请求到达 LLM 之前检测并应用智能、无损压缩,具备以下特性:

  • 过滤器git-diffgit-statusgit-logbuild-outputgrepfindlstreededup-logsmart-truncateread-numberedsearch-list,共 12 个,完整注册在 open-sse/rtk/registry.js
  • 自动检测:无需配置——RTK 检查每个 tool_result 的前 1KB(DETECT_WINDOW = 1024,定义于 open-sse/rtk/constants.js),按固定顺序匹配特征后挑选合适过滤器;
  • 安全设计:如果过滤器失败、抛出异常或使输出变大,RTK 会静默保留原始文本,错误永远不会中断请求(见 open-sse/rtk/applyFilter.jssafeApply,注释明确对应 Rust 版 catch_unwind 语义);
  • 通用兼容:适用于所有格式(OpenAI、Claude、Gemini、Cursor、Kiro、OpenAI Responses),因为它在任何格式转换之前运行;
  • 默认开启:可随时在控制面板 → 端点设置中切换。

自动检测的实际逻辑在 open-sse/rtk/autodetect.js,检测顺序为:git-loggit-diffgit-statusbuild-outputgrepfindtreelssearch-listread-numbereddedup-logsmart-truncate → null。例如通过正则 ^diff --git 识别 git diff、^On branch |^nothing to commit 识别 git status、[├└]── 盒式绘图字符识别 tree 输出、"file:number:content" 三字段结构识别 grep 结果。

压缩入口 open-sse/rtk/index.jscompressMessages 同时兼容多种消息形态:

  • 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.jstests/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.jsopen-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 小时、每日、每周)
  • 付费等级的成本估算
  • 月度支出报告

格式转换

格式间无缝转换:OpenAIClaudeGeminiCursorKiroVertexAntigravityOllamaOpenAI 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_URLNEXT_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)

  1. 注册智谱 AI(Zhipu AI)并获取编程计划的 API key;
  2. 控制面板 → 添加 API Key:提供商 glm、API Key your-key
  3. 使用:glm/glm-5.1glm/glm-5glm/glm-4.7

专业提示:编程计划提供 3 倍配额、成本仅为 1/7,每日 10:00 AM 重置。

MiniMax M2.7(5 小时重置,$0.20/1M)

  1. 注册 MiniMax 并获取 API key;
  2. 控制面板 → 添加 API Key;
  3. 使用:minimax/MiniMax-M2.7minimax/MiniMax-M2.5

专业提示:长上下文(1M tokens)的最便宜选项。

Kimi K2.5($9/月固定)

  1. 订阅 Moonshot AI 并获取 API key;
  2. 控制面板 → 添加 API Key;
  3. 使用:kimi/kimi-k2.5kimi/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=20128HOSTNAME=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_PROXYALL_PROXYNO_PROXY
SEARXNG_URL http://localhost:8888/search 内置无认证 SearXNG 网页搜索提供商端点

补充说明:小写出站代理变量(http_proxyhttps_proxyall_proxyno_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-7cc/claude-opus-4-6cc/claude-sonnet-4-6cc/claude-sonnet-4-5-20250929cc/claude-haiku-4-5-20251001

Codex(cx/cx/gpt-5.5cx/gpt-5.4cx/gpt-5.3-codexcx/gpt-5.2-codexcx/gpt-5.1-codex-max

GitHub Copilot(gh/gh/gpt-5.4gh/claude-opus-4.7gh/claude-sonnet-4.6gh/gemini-3.1-pro-previewgh/grok-code-fast-1

Cursor(cu/cu/claude-4.6-opus-maxcu/claude-4.5-sonnet-thinkingcu/gpt-5.3-codexcu/kimi-k2.5

GLM(glm/,$0.6/1M)glm/glm-5.1glm/glm-5glm/glm-4.7

MiniMax(minimax/,$0.2/1M)minimax/MiniMax-M2.7minimax/MiniMax-M2.5

Kimi(kimi/,$9/月固定)kimi/kimi-k2.5kimi/kimi-k2.5-thinking

Kiro(kr/,免费,约 50 积分/月)kr/claude-sonnet-4.5kr/claude-haiku-4.5kr/glm-5kr/MiniMax-M2.5kr/qwen3-coder-nextkr/deepseek-3.2

OpenCode Free(oc/,免费无认证):从 opencode.ai/zen/v1/models 自动获取

Vertex AI(vertex/,$300 免费额度)vertex/gemini-3.1-pro-previewvertex/gemini-3-flash-previewvertex/gemini-2.5-flashvertex-partner/glm-5-maasvertex-partner/deepseek-v3.2-maasvertex-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=20128NEXT_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.jsopen-sse/rtk/ponytailPrompt.js,系统提示注入入口为 open-sse/rtk/systemInject.js

如需查阅多语言版本,可参考 i18n/ 目录下的 README 翻译;仓库根目录的 CHANGELOG.md 记录了版本演进,DOCKER.md 提供了更详细的容器化部署说明。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
34
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.16 K
2.78 K
docsdocs
暂无描述
Markdown
904
5.83 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
934
1.86 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
862
1.36 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
535
606
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.38 K
1.47 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
4.02 K
1.03 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
549
399
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.07 K
537