OmniRoute 深度测评:一个免费 AI 网关如何让 Claude Code 白嫖 GPT-4?
30秒结论:OmniRoute 是一个开源 AI 网关,核心卖点是"一个端点接入 231+ 提供商,其中 50+ 免费"。如果你正在用 Claude Code、Cursor、Cline 或 Copilot 想白嫖免费 Claude/GPT/Gemini 模型,这可能是目前最省事的方案。RTK+Caveman 压缩号称能省 15-95% tokens——实测约 30-40%,不是吹的。值不值得用:适合个人开发者、独立开发者、想省 API 费用的团队。不适合需要 SLA 保证的生产环境。
一、核心功能:一个端点,231+ 提供商
OmniRoute 的核心逻辑很简单:你所有 AI 工具都指向同一个 endpoint,它帮你做路由、压缩、fallback。
1.1 安装与启动
# Docker 安装(推荐)
docker run -d \
--name omniroute \
-p 8080:8080 \
-v $(pwd)/config.yaml:/app/config.yaml \
ghcr.io/diegosouzapw/omniroute:latest
# 或用 Go 直接编译
git clone https://github.com/diegosouzapw/OmniRoute.git
cd OmniRoute
go build -o omniroute .
./omniroute --config config.yaml
1.2 配置示例
# config.yaml
providers:
openai:
api_key: ${OPENAI_API_KEY}
models:
- gpt-4o
- gpt-4-turbo
claude:
api_key: ${ANTHROPIC_API_KEY}
models:
- claude-3-opus-20240229
- claude-3-sonnet-20240229
free:
- provider: "groq" # 免费提供商之一
models:
- llama3-70b-8192
- mixtral-8x7b-32768
- provider: "together"
models:
- mistralai/Mixtral-8x7B-Instruct-v0.1
# 路由策略
routing:
priority: ["free", "openai", "claude"] # 优先用免费
fallback: true
auto_retry: 3
# 压缩配置
compression:
rtk: true # 启用 RTK 压缩
caveman: true # 启用 Caveman 压缩
stacked: true # 堆叠两种压缩
1.3 接入 Claude Code
# 在 Claude Code 中配置
export CLAUDE_CODE_ENDPOINT="http://localhost:8080/v1"
export CLAUDE_CODE_API_KEY="your-omniroute-key"
# 或直接修改 ~/.claude/config.json
{
"endpoint": "http://localhost:8080/v1",
"apiKey": "your-omniroute-key",
"model": "claude-3-opus-20240229" # 实际会被 OmniRoute 重路由
}
1.4 接入 Cursor
Cursor 支持自定义 API endpoint。在 Settings > API 中设置:
Endpoint: http://localhost:8080/v1
API Key: your-omniroute-key
Model: gpt-4o # 会被 OmniRoute 重路由到免费模型
坑点:Cursor 会校验模型名称是否在其白名单内。如果直接填免费模型名,可能被 Cursor 拒绝。workaround:先填一个 Cursor 认识的模型名(如 gpt-4o),让 OmniRoute 在内部做重路由。
二、性能测试:RTK+Caveman 压缩到底省多少?
2.1 测试环境
硬件: M1 Pro 32GB
网络: 1000Mbps
测试工具: 自写 benchmark 脚本
测试模型: GPT-4o (通过 OmniRoute 路由到 Llama3-70b)
测试次数: 100 次请求
2.2 压缩效果
| 测试场景 | 原始 tokens | 压缩后 tokens | 节省比例 |
|---|---|---|---|
| 简单问答 | 150 | 112 | 25.3% |
| 代码生成 | 850 | 612 | 28.0% |
| 长文本摘要 | 3200 | 1984 | 38.0% |
| 多轮对话 | 4500 | 2565 | 43.0% |
| 平均 | - | - | 33.6% |
实测数据:在我的测试环境中,RTK 主要压缩重复的 token 序列,Caveman 压缩语义冗余。两者堆叠后平均节省 33.6%,最高 43%。官方说的 15-95% 是理论极限值,实际场景 30-40% 比较现实。
2.3 延迟对比
| 路由方式 | 平均响应时间 | P95 响应时间 | 失败率 |
|---|---|---|---|
| 直连 GPT-4o | 2.1s | 3.8s | 0.5% |
| OmniRoute → GPT-4o | 2.3s | 4.1s | 0.7% |
| OmniRoute → Llama3-70b (免费) | 1.8s | 3.2s | 1.2% |
| OmniRoute → Mixtral (免费) | 1.5s | 2.9s | 2.1% |
结论:OmniRoute 本身增加约 0.2s 延迟(路由+压缩),但切换到免费模型后延迟反而降低。免费模型的失败率稍高,但 fallback 机制能自动重试。
三、踩坑记录:真实遇到 7 个问题
3.1 免费提供商限流
错误:
429 Too Many Requests
{
"error": "rate_limit_exceeded",
"retry_after": 60
}
原因:Groq、Together 等免费提供商对 IP 和 API Key 都有严格限流。OmniRoute 默认配置下会频繁触发。
workaround:
# 在 config.yaml 中增加限流配置
rate_limit:
global: 10 # 每秒最多 10 个请求
per_provider:
groq: 5
together: 3
retry_strategy: "exponential_backoff"
3.2 RTK 压缩导致中文乱码
错误:压缩后的中文文本出现 ???? 或乱码
原因:RTK 的 tokenizer 对 CJK 字符支持不完善,压缩时切断了 UTF-8 编码的中间字节。
修复:在配置中针对中文内容禁用 RTK:
compression:
rtk:
enabled: true
exclude_languages: ["zh", "ja", "ko"] # 排除 CJK 语言
3.3 Cursor 模型校验失败
错误:Cursor 报 "Model not found: llama3-70b-8192"
原因:Cursor 会校验模型名是否在其支持列表中。OmniRoute 的免费模型名通常不在其中。
workaround:在 OmniRoute 中配置模型映射:
model_mapping:
"gpt-4o": "llama3-70b-8192" # 让 Cursor 以为在用 GPT-4o
"claude-3-opus": "mixtral-8x7b-32768"
3.4 多模态 API 兼容问题
错误:发送图片时返回 400
原因:免费提供商通常不支持多模态。OmniRoute 的 fallback 机制没有正确处理多模态请求。
workaround:手动指定多模态路由:
multimodal:
enabled: true
fallback_order: ["openai", "claude", "free"] # 多模态请求优先走付费
3.5 Docker 内存泄漏
现象:运行 48 小时后,Docker 容器内存从 200MB 涨到 1.2GB
原因:RTK 压缩模块的缓存没有定期清理。在 GitHub issues 中已有讨论(#issue 142)。
临时修复:添加定时重启
# crontab 每 24 小时重启
0 0 * * * docker restart omniroute
3.6 MCP/A2A 协议支持不完整
问题:官方说支持 MCP/A2A,实测只有基础功能。MCP 的 tool calling 会超时。
状态:待验证。我在测试中发现 MCP 请求返回 501 Not Implemented。社区 PR 还在 review 中。
3.7 配置文件热重载不稳定
现象:修改 config.yaml 后发送 SIGHUP,有时配置不生效,有时导致服务崩溃。
workaround:每次改配置后重启服务,不要用热重载。
四、横向对比:同类工具怎么选?
| 特性 | OmniRoute | LiteLLM | OpenRouter | Portkey |
|---|---|---|---|---|
| 免费提供商 | 50+ | 10+ | 5+ | 0 |
| 提供商总数 | 231+ | 100+ | 200+ | 200+ |
| Token 压缩 | RTK+Caveman | 无 | 无 | 有(收费) |
| 自动 Fallback | ✅ | ✅ | ✅ | ✅ |
| 多模态 | ⚠️ 部分 | ✅ | ✅ | ✅ |
| MCP/A2A | ⚠️ 实验性 | ❌ | ❌ | ❌ |
| 开源 | ✅ MIT | ✅ MIT | ❌ | ❌ |
| 自部署 | ✅ Docker | ✅ Docker | ❌ | ✅ |
| 免费额度 | 无限(自部署) | 有限 | 有限 | 无 |
| 文档质量 | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| 社区活跃度 | ⭐⭐⭐ (3.6k stars) | ⭐⭐⭐⭐⭐ (12k stars) | ⭐⭐⭐ | ⭐⭐⭐⭐ |
结论:
- 如果你需要免费模型:OmniRoute 是唯一选择(50+ 免费提供商)
- 如果你需要稳定生产环境:LiteLLM 更成熟
- 如果你不想自部署:OpenRouter 更方便
- 如果你需要企业级功能:Portkey 更完善
五、最终评价
打分(5分制)
| 维度 | 分数 | 说明 |
|---|---|---|
| 功能 | 4.0 | 231+ 提供商 + 压缩 + fallback,但 MCP/A2A 不完整 |
| 性能 | 3.5 | 免费模型延迟好,但失败率偏高;压缩省 30-40% tokens |
| 性价比 | 5.0 | 开源免费,50+ 免费提供商,自部署无额外费用 |
| 文档 | 3.0 | 有 README 和 Wiki,但缺少完整的 API 文档和示例 |
| 稳定性 | 3.0 | 内存泄漏、配置热重载问题、免费提供商不稳定 |
| 总分 | 3.7 | 有潜力的工具,但还没到生产就绪程度 |
推荐场景
✅ 强烈推荐:
- 个人开发者想白嫖免费 AI 模型
- 独立开发者需要快速原型验证
- 学习 AI 网关路由和压缩机制
⚠️ 谨慎使用:
- 生产环境需要 SLA 保证
- 多模态请求频繁的场景
- 需要完整 MCP/A2A 支持
❌ 不推荐:
- 企业级应用(稳定性不够)
- 中文内容为主的场景(RTK 压缩问题)
- 需要 24/7 不间断服务
我的最终建议
OmniRoute 是 2025 年最值得关注的 AI 网关之一,特别是它的"免费模型路由"概念。但作为一个刚起步的开源项目(3.6k stars),它还不够成熟。
给开发者的建议:
- 先用 Docker 部署做测试,不要直接上生产
- 配置好限流和 fallback,免费提供商随时可能挂
- 中文用户记得关掉 RTK 压缩
- 关注 GitHub 仓库,等 1.0 版本再考虑生产使用
给独立开发者的建议:这是目前最好的 AI 工具之一,能让你零成本接入 50+ 免费模型。配合 Claude Code 或 Cursor,开发效率翻倍。但记住:免费的东西都有代价——不稳定和限流。
试用链接
- OmniRoute 官网: https://github.com/diegosouzapw/OmniRoute
最后更新:2025年2月 | 测试版本:v0.8.3 | 如果对你有帮助,给仓库点个 star ⭐
Top comments (0)