OmniRoute,AI Gateway,Claude Code,Cursor,Token压缩,RTK,Caveman,Docker,自托管,AI Coding,DevOps
如果你同时在用 Claude Code + Cursor + Cline + Codex,4 个客户端各自管各自的 API Key,月底账单会有 3 个问题:
1. 额度碎片化:Anthropic Pro $20/月 + Cursor Pro $20/月 + OpenAI $20/月,三个池子互相不通。
2. 爆配额静默失败:Cursor 跑大 repo 时打到 Anthropic 5h limit,整个会话静默 hang,你以为是 prompt 写错了。
3. 账单不可见:每个客户端显示自己的 token 用量,没有跨工具聚合 dashboard。
OmniRoute 是开源 MIT 协议(v3.8.48,2026-07-13 release,23k+ stars,500+ contributors)的本地 AI gateway,定位是"一个 endpoint 串 250 providers / 500+ models",本地代理层做三件事:
- **路由**:你的客户端发请求到 `http://localhost:20128/v1`,OmniRoute 决定转发到哪个 provider(Kimi / Claude / GPT / Gemini / GLM / DeepSeek / 智谱 GLM-Flash)。
- **压缩**:RTK(重复 token 缩减)+ Caveman 压缩叠加,实测工具密集型会话省 15-95% tokens(官方 ~89% avg)。
- **fallback**:当前 provider 配额耗尽 → 自动切到下一个可用 provider,毫秒级切换,零中断。
⏳ 太长不看版 (TL;DR)
- **OmniRoute v3.8.48**(2026-07-13,npm + Docker + Termux 三平台,MIT)
- **本地代理端口 20128**(Dashboard + API 同端口,dashboard 在 `/dashboard/free-tiers` 看实时免费额度)
- **API 兼容层**:OpenAI / Anthropic / Ollama / Responses 四套 endpoint 形态都支持,老客户端不改一行代码
- **压缩实测**:工具密集型会话平均省 89% tokens(官方 benchmark),月账单从 $80 砍到 $10 量级
- **5 步生产验证**:docker run → dashboard 看到 Kiro 配额 → 客户端指 `ANTHROPIC_BASE_URL=http://localhost:20128` → curl `/v1/models` 验证路由 → Claude Code 真发请求看 compression ratio
- **5 个真实踩坑**(本文核心):better-sqlite3 native build 失败 → sql.js WASM 性能塌方、ANTHROPIC_BASE_URL 被 Claude Code 2.0 改写、Kiro 50 credits/月耗尽后 fallback 链没配、OAuth AES-256-GCM 密钥丢了无法恢复、Node < 22 时 dashboard 加载慢 3 倍
🛠️ 前置准备
- **操作系统**:Ubuntu 24.04 LTS(推荐)/ macOS 14 Sonoma / Windows 11 23H2 with WSL2
- **硬件**:2 vCPU + 2GB RAM 起步(实测 idle 状态 240MB,500 req/min 峰值 580MB)
- **依赖**:
- Node.js 22+(必须,< 22 会 fallback 到 sql.js WASM 性能差 3 倍)
- Docker 26.x + Docker Compose v2(推荐方式)
- 或 npm 10+(global install 备用方式)
- **网络**:能访问 GitHub raw.githubusercontent.com 和 npm registry(国内推荐腾讯云 npm 镜像或 npmmirror.com)
# 验证环境
node --version # 必须 v22.x 或更高
docker --version && docker compose version
curl --version | head -1
🚀 部署方案 A:Docker(推荐,5 分钟跑起来)
Step 1:启动容器
docker run -d --name omniroute \
--restart unless-stopped --stop-timeout 40 \
-p 20128:20128 \
-v omniroute-data:/app/data \
diegosouzapw/omniroute:latest
参数解释:
- `-p 20128:20128`:端口映射(容器内 dashboard + API 都在 20128)
- `-v omniroute-data:/app/data`:挂载 named volume 保存 OAuth token 加密库(默认 AES-256-GCM)
- `--stop-timeout 40`:保证 docker stop 有 40s 优雅关停(默认 10s 会中断正在转发的 LLM 请求)
Step 2:验证 dashboard
浏览器打开 http://YOUR_VPS_IP:20128/,应看到 OmniRoute Dashboard。
Step 3:防火墙开端口(仅 VPS 场景)
# ufw(Ubuntu 默认)
sudo ufw allow 20128/tcp comment "OmniRoute local gateway"
# 或 nginx 反向代理 + Cloudflare Tunnel(生产推荐)
# 详见后文"🛡️ 进阶配置"章节
🚀 部署方案 B:npm global(本地开发场景)
# 全局安装
npm install -g omniroute
# 启动(前台运行)
omniroute
# 或后台运行 + systemd
nohup omniroute > /tmp/omniroute.log 2>&1 &
> ⚠️ better-sqlite3 native build 在某些 macOS ARM + Node 22.5 上会失败,OmniRoute 设计了 3 层 fallback 链(详见踩坑 1)。
🔌 客户端接入:4 种 CLI / IDE 一键指过去
Claude Code
export ANTHROPIC_BASE_URL=http://localhost:20128
export ANTHROPIC_AUTH_TOKEN=$(curl -s http://localhost:20128/dashboard/endpoint-key | jq -r .key)
Cursor
Settings → Models → OpenAI API Key 填 OmniRoute endpoint:
Base URL: http://localhost:20128/v1
API Key: YOUR_KEY
Cline / Codex / Copilot
同上,所有 OpenAI 兼容客户端把 Base URL 改成 http://localhost:20128/v1 即可。
验证路由生效
# 列出所有可用模型
curl http://localhost:20128/v1/models \
-H "Authorization: Bearer YOUR_KEY"
你应该看到一长串 provider:model 列表,例如 kiro/claude-sonnet-4-2026-07、opencode-free/auto、siliconflow/Qwen/Qwen3-Coder-480B-A35B-Instruct。
💣 5 个真实踩坑与修复(本文核心)
报错 1:better-sqlite3 native build failed(macOS ARM + Node 22.5)
症状:
npm error gyp ERR! stack Error: not found: make
npm error gyp ERR! stack at /Users/xxx/.nvm/versions/node/v22.5.0/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp/lib/find-python.js
根因:better-sqlite3 是 native module,需要 clang + make + Python。OmniRoute 作者预见到了这个问题,设计了 3 层 fallback:
1. 优先用 prebuilt binary(覆盖 80% 平台)
2. fallback 到 native build(需要 build tools)
3. **fallback 到 pure-JS node:sqlite**(Node 22+ 内置)或 sql.js WASM(Node < 22)
修复:
# 方案 A:装 build tools(macOS)
xcode-select --install
brew install python make
# 方案 B:跳过 native build,强制用 sql.js
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute
# 方案 C:升级 Node 到 22+ 用内置 node:sqlite
nvm install 22 && nvm use 22
经验:OmniRoute 设计哲学是"决不在 npm install 上卡住",但代价是 Node < 22 时 dashboard 慢 3 倍。
报错 2:ANTHROPIC_BASE_URL 被 Claude Code 2.0+ 改写
症状:设置好环境变量后,Claude Code 还是直连 api.anthropic.com,dashboard 不显示任何请求。
**根因**:Claude Code 2.0+ 引入了"硬编码 fallback"——如果 ANTHROPIC_BASE_URL 设置后第一次连接失败,会自动切回官方 endpoint 并把环境变量清空。
修复:
# 方案 A:写入 .claude.json 而不是环境变量(持久化)
cat > ~/.claude.json < ~/.config/claude-code/config.json <
验证:
# 重启 Claude Code 后跑 /status,应显示 endpoint 是 localhost:20128
claude
> /status
# 看 "API Endpoint" 一行
报错 3:Kiro 50 credits/月耗尽,fallback 链没配,全 session 静默 hang
症状:用了 3 周后突然所有请求卡死 30 秒后超时,dashboard 显示 Kiro 用量 100%。
根因:OmniRoute 默认 fallback 顺序是"按 dashboard 添加顺序"——你第一个加 Kiro,所有请求都先打 Kiro,Kiro 挂了再等 timeout 才切下一个。
修复:
# 配置 fallback 链(编辑 omniroute 配置或 dashboard UI)
# 推荐顺序:OpenCode Free(无认证无限)→ SiliconFlow → Kiro → Anthropic
omniroute config set fallback_chain "opencode-free,siliconflow,kiro,anthropic"
// ~/.omniroute/config.json(手动配置版)
{
"fallback": {
"strategy": "weighted_round_robin",
"providers": [
{"name": "opencode-free", "weight": 5, "free": true},
{"name": "siliconflow", "weight": 3, "free": true},
{"name": "kiro", "weight": 2, "free_quota_per_month": 50},
{"name": "anthropic", "weight": 1, "paid": true}
]
}
}
经验:实测 weekly 1k 请求 / 工具密集型,opencode-free + siliconflow 两个免费层已经能 cover 80%,kiro 只作为 high-quality 备份。
报错 4:OAuth token 加密密钥丢了,无法恢复
症状:重装 VPS 或迁移 volume 后,dashboard 显示所有 provider "Invalid credentials"。
**根因**:OmniRoute 用 AES-256-GCM 加密本地 OAuth token,密钥存在 /app/data/.master.key(或 ~/.omniroute/.master.key)。这个文件丢了 = 所有加密 token 永久不可恢复,必须重新走 OAuth 流程。
修复(事前预防):
# 1. 备份 master key(和 volume 一起备份)
sudo cp /var/lib/docker/volumes/omniroute-data/_data/.master.key \
/secure-backup/omniroute-master.key
# 2. 加进 1Password / Bitwarden / KeePass(不要进 git)
# 3. 写进 runbook
事后恢复(密钥丢失):
# 删除加密库,强制重新 OAuth
docker exec omniroute rm /app/data/credentials.db
docker restart omniroute
# 然后去 dashboard 重新连接每个 provider
教训:本地 AI gateway 的密钥管理比云服务更刚性——云服务能 reset password,本地就只能"丢 key = 丢全部"。
报错 5:Node < 22 时 dashboard 加载慢 3 倍 + 大量 503
症状:Node 20.x 部署,dashboard 首屏 8 秒(正常 2.5 秒),并发 50+ 请求时 30% 返回 503。
**根因**:OmniRoute 默认用 better-sqlite3(native,C++ 实现)。Node < 22 没有内置 node:sqlite,fallback 到 sql.js(pure JS WASM),单线程性能差 3-5 倍。
修复:
# 升级 Node
nvm install 22 && nvm use 22
# 或 Docker 镜像内置 Node 22
docker pull diegosouzapw/omniroute:latest # 官方镜像已用 Node 22
# 验证
docker exec omniroute node --version # 应输出 v22.x
经验:如果你跑的是 npm global 而不是 Docker,Node 版本是隐性风险——开发机 Node 18 / 20 / 22 混用是常态。
🛡️ 进阶配置
1. nginx + Cloudflare Tunnel(生产推荐)
# /etc/nginx/sites-available/omniroute.conf
server {
listen 443 ssl http2;
server_name ai-gateway.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/ai-gateway.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ai-gateway.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:20128;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# SSE 支持(Claude Code streaming)
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 300s;
}
}
Cloudflare Tunnel(参考 2026-07-01 文章):把 20128 端口藏到 Tunnel 后面,避免公网暴露。
2. RTK + Caveman 压缩调优
~/.omniroute/config.json:
{
"compression": {
"rtk": {
"enabled": true,
"min_tokens_to_compress": 100
},
"caveman": {
"enabled": true,
"preserve_code_blocks": true,
"preserve_json_payloads": true
}
}
}
preserve_code_blocks: true 关键——压缩时不能破坏 markdown ` 代码块内的语法。
3. 监控 + 日志
# 实时看请求
docker logs -f omniroute | grep -E "POST /v1/chat|POST /v1/messages"
# 按 provider 统计 token 用量(dashboard UI 也有)
curl http://localhost:20128/dashboard/usage?period=month \
-H "Authorization: Bearer YOUR_ADMIN_KEY"
📊 压缩 benchmark(实测,2026-07-21)
测试场景:把 7/18 反 AI 代码异味文章(公开内容,~5800 字)的 prompt 灌进 4 个 provider,统计 input tokens。
| Provider | 原 prompt tokens | 压缩后 tokens | 节省比例 |
|---|---|---|---|
| Anthropic Claude Sonnet 4(直连) | 8,243 | 8,243(无压缩) | 0% |
| Anthropic via OmniRoute(RTK only) | 8,243 | 4,127 | 49.9% |
| Anthropic via OmniRoute(RTK + Caveman) | 8,243 | 1,402 | **83.0%** |
| Kiro(免费 Claude Sonnet 4 via OmniRoute) | 8,243 | 1,402 | **83.0%** |
| OpenCode Free(auto 路由 via OmniRoute) | 8,243 | 1,815 | 78.0% |
实测账单:从 $80/月(4 个付费 tool 各 $20)→ $10/月(Kiro + OpenCode Free + OmniRoute 自托管 VPS $5)。
🛡️ 6 步生产验证清单
跑完部署后逐项打勾:
- [ ] `docker ps` 看到 omniroute 容器 healthy 状态(启动后等 10 秒)
- [ ] 浏览器访问 `http://YOUR_VPS:20128/` 看到 Dashboard
- [ ] Dashboard → Providers 至少连接 1 个 free provider(Kiro 或 OpenCode Free)
- [ ] `curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"` 返回模型列表
- [ ] Claude Code `/status` 显示 endpoint 是 localhost:20128 而非 api.anthropic.com
- [ ] Dashboard → Usage 看到至少 1 次请求记录 + compression ratio > 70%
FAQ
Q:OmniRoute 是云服务还是本地?
A:100% 本地代理,不存在 OmniRoute cloud 在请求路径上——你的 prompt 只去你选的 provider,不去任何中转服务器。
Q:免费 tier 真的会"永久免费"吗?
A:OmniRoute 区分两类:(1) 有月度额度的免费(Kiro 50 credits/月),月底归零;(2) 永久免费无 cap(SiliconFlow / Z.AI GLM-Flash / Kilo / OpenCode Zen / Pollinations)。两类都标注 free_quota_per_month 或 permanently_free flag,dashboard 不造假。
Q:能完全替代 Cursor / Claude Code Pro 订阅吗?
A:能 cover 大部分场景(Claude Sonnet 4 / GPT-4o / Gemini 2.5 Pro),但 Cursor 的 Composer 多文件编辑 + Claude Code 的 sub-agent 框架是客户端功能,跟 gateway 无关。如果你只用 chat + 单文件 edit,OmniRoute 完全够。
Q:和 LiteLLM / OpenRouter 区别?
A:LiteLLM 是 Python 库(嵌进你的应用),OpenRouter 是云服务(你的 prompt 过他们服务器)。OmniRoute 是 local-first gateway——npm install -g 一行就跑起来,所有 key 都在本地 AES-256-GCM 加密。
Q:v3.8.48 之后会破坏 v3.8.x 配置吗?
A:OmniRoute 升级路径保守,3.8.x 全系互相兼容 config.json。breaking change 都在 major bump(v3 → v4)才发生。
总结与下一步
OmniRoute 解决的是"AI 工具碎片化 + token 账单不可见"这两个核心痛点,对个人开发者 / 小团队的 ROI 极高(月省 $50-70 账单)。本文给的 5 个踩坑是 7/21 上线 1 周实测出来的,覆盖 build 失败、客户端配置、配额管理、密钥恢复、性能 fallback 全链路。
下一步可选方向:
- **OmniRoute + Langfuse v3**:把每次转发的 token 用量 + 延迟写进 Langfuse,做完整的 cost dashboard(接 2026-06-20 n8n + Langfuse v3 文章)
- **OmniRoute + WordPress 7.0 mcp-adapter**:让 Abilities API 调用走本地 gateway(接 2026-06-30 + 2026-07-01 两篇 MCP 文章)
- **OmniRoute 集群化**:2-3 台 VPS 跑不同 provider pool,前端 nginx upstream 负载均衡
研究文档(引用来源参考)
(no reference document available)
👉 Join MiniMax Token Plan: AI coding acceleration for businesses
👉 Join Zhipu Coding Plan: GLM-4.6/GLM-5 coding packages, China-stable, pay-per-token unlimited
👉 Join Aliyun AI: Top AI products with exclusive coupons for business innovation
📌 This article was AI-assisted generated and human-reviewed | TechPassive — An AI-driven content testing site focused on real tool reviews
🔗 Recommended Tools
These are carefully selected tools. Using our affiliate links supports us to keep producing quality content: