DEV Community

Kang Jian
Kang Jian

Posted on

OmniRoute 深度测评:一个免费 AI 网关如何让 Claude Code 白嫖 GPT-4?

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
Enter fullscreen mode Exit fullscreen mode

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   # 堆叠两种压缩
Enter fullscreen mode Exit fullscreen mode

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 重路由
}
Enter fullscreen mode Exit fullscreen mode

1.4 接入 Cursor

Cursor 支持自定义 API endpoint。在 Settings > API 中设置:

Endpoint: http://localhost:8080/v1
API Key: your-omniroute-key
Model: gpt-4o  # 会被 OmniRoute 重路由到免费模型
Enter fullscreen mode Exit fullscreen mode

坑点:Cursor 会校验模型名称是否在其白名单内。如果直接填免费模型名,可能被 Cursor 拒绝。workaround:先填一个 Cursor 认识的模型名(如 gpt-4o),让 OmniRoute 在内部做重路由。


二、性能测试:RTK+Caveman 压缩到底省多少?

2.1 测试环境

硬件: M1 Pro 32GB
网络: 1000Mbps
测试工具: 自写 benchmark 脚本
测试模型: GPT-4o (通过 OmniRoute 路由到 Llama3-70b)
测试次数: 100 次请求
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

原因:Groq、Together 等免费提供商对 IP 和 API Key 都有严格限流。OmniRoute 默认配置下会频繁触发。

workaround

# 在 config.yaml 中增加限流配置
rate_limit:
  global: 10  # 每秒最多 10 个请求
  per_provider:
    groq: 5
    together: 3
  retry_strategy: "exponential_backoff"
Enter fullscreen mode Exit fullscreen mode

3.2 RTK 压缩导致中文乱码

错误:压缩后的中文文本出现 ???? 或乱码

原因:RTK 的 tokenizer 对 CJK 字符支持不完善,压缩时切断了 UTF-8 编码的中间字节。

修复:在配置中针对中文内容禁用 RTK:

compression:
  rtk:
    enabled: true
    exclude_languages: ["zh", "ja", "ko"]  # 排除 CJK 语言
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

3.4 多模态 API 兼容问题

错误:发送图片时返回 400

原因:免费提供商通常不支持多模态。OmniRoute 的 fallback 机制没有正确处理多模态请求。

workaround:手动指定多模态路由:

multimodal:
  enabled: true
  fallback_order: ["openai", "claude", "free"]  # 多模态请求优先走付费
Enter fullscreen mode Exit fullscreen mode

3.5 Docker 内存泄漏

现象:运行 48 小时后,Docker 容器内存从 200MB 涨到 1.2GB

原因:RTK 压缩模块的缓存没有定期清理。在 GitHub issues 中已有讨论(#issue 142)。

临时修复:添加定时重启

# crontab 每 24 小时重启
0 0 * * * docker restart omniroute
Enter fullscreen mode Exit fullscreen mode

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),它还不够成熟。

给开发者的建议

  1. 先用 Docker 部署做测试,不要直接上生产
  2. 配置好限流和 fallback,免费提供商随时可能挂
  3. 中文用户记得关掉 RTK 压缩
  4. 关注 GitHub 仓库,等 1.0 版本再考虑生产使用

给独立开发者的建议:这是目前最好的 AI 工具之一,能让你零成本接入 50+ 免费模型。配合 Claude Code 或 Cursor,开发效率翻倍。但记住:免费的东西都有代价——不稳定和限流。


试用链接


最后更新:2025年2月 | 测试版本:v0.8.3 | 如果对你有帮助,给仓库点个 star ⭐

Top comments (0)