📌 项目地址:BenedictKing/ccx | ⭐ 2,557 颗星 | 🔧 Go | 📜 未标注
一句话说清楚
CCX是一个Go语言写的AI API代理和协议翻译网关。它把你的应用和多个AI供应商(Claude、OpenAI、Gemini)之间的协议差异藏起来,统一成几个标准端点。同时内置了渠道管理、Key轮转、故障转移、熔断恢复这些生产环境必备的功能。
项目有2557个star,一个二进制文件部署,自带Web管理界面。
你实际面对的问题
同时用几家AI供应商,你得处理这些事:
- 不同供应商的认证方式、请求体格式、响应结构都不一样。Claude Messages API和OpenAI Chat Completions API的数据格式完全不同。
- 单个API Key有速率限制。OpenAI和Claude都限频,高并发下单Key撑不住。
- 供应商可能宕机。需要健康检查+自动切换到备用的能力。
- Key轮转、请求头注入、模型白名单限制。这些都要在代码里写if-else,改起来麻烦。
CCX直接把这些移到网关层。你的应用只认几个标准路径,背后连谁、怎么连,全在管理后台配置。
架构一瞥
CCX暴露一个后端入口(默认端口3000),按URL路径分发到不同上游:
Client -> backend :3000 ->
|- / -> Web UI
|- /api/* -> Admin API
|- /v1/messages -> Claude Messages proxy
|- /v1/chat/completions -> OpenAI Chat proxy
|- /v1/responses -> Codex Responses proxy
|- /v1/images/{...} -> OpenAI Images proxy
|- /v1/models -> Models API
`- /v1beta/models/* -> Gemini proxy
图片接口目前支持三个:POST /v1/images/generations、POST /v1/images/edits、POST /v1/images/variations,用于生成、编辑和变体。你没有看错,路径上能看出它同时适配了Claude、OpenAI、Gemini三种协议。请求进来,CCX会做协议翻译和渠道调度。
快速开始
二进制部署
从Releases页面下载对应平台的二进制文件。启动时需要两个环境变量:
PROXY_ACCESS_KEY– 客户端请求代理时的认证密钥,必填。ADMIN_ACCESS_KEY– 登录Web管理后台的密钥,可选。只做代理不改配置的话,可以不设置。
运行:
export PROXY_ACCESS_KEY=your-proxy-key
export ADMIN_ACCESS_KEY=your-admin-key # 可选
./ccx
浏览器访问http://你服务器的IP:3000。用ADMIN_ACCESS_KEY登录,然后添加渠道。
桌面版
README里有单独文档链接(CCX Desktop),给了桌面端的安装步骤。适合个人或开发环境,直接双击运行。
唯一的注意事项:Go二进制不带任何外部依赖,前后端界面都编译进去了。一个文件搞定,不需要Nginx或Node.js环境。
核心功能:渠道管理
CCX把每个上游服务称为“渠道”。渠道是调度的最小单位。每个渠道可以独立配置:
优先级和故障转移。高优先级渠道优先被选。CCX定期做健康检查,高优先级挂了,流量自动切到备用。你不用在代码里写条件判断。
API Key轮转。一个渠道可以配多个Key,自动轮替。应对OpenAI和Claude的速率限制场景。单Key跑满配速时,轮转机制自然分散压力。
HTTP代理。每个渠道单独指定HTTP代理。不同供应商走的网络出口不同:国内模型直连,海外模型经第三方代理。可以分别设置,互不干扰。
自定义请求头。转发时添加额外HTTP头。某些供应商需要在请求头里送用户ID、组织ID或认证token。
模型白名单。限制该渠道只能调用某些模型。防止测试环境误用GPT-4这类贵模型。这个特性在实际中很有用——开发人员写代码时容易忘掉限制,网关层兜底。
路由前缀。按路径前缀匹配复杂路由规则。比如让渠道A只处理/v1/messages开头的请求。
晋升窗口。设定一个时间段,临时提高该渠道优先级。适合灰度测试或A/B实验,让新渠道在特定时间内优先接收流量。
熔断恢复。连续错误率高,渠道会被自动熔断,过一段时间再尝试恢复。比简单失败重试更安全,保护上游服务不被过量请求打垮。
响应会话跟踪。支持多轮对话工作流。README只提了名字,内部实现细节没有展开。从命名推测,它能在网关层记录请求-响应的关联,方便调试。
管理后台
Web界面直接编译进Go二进制。启动后访问/路径就能看到。
后台几个关键页面:
- 渠道编排:拖拽调整渠道优先级,实时看健康状态。
- 添加渠道:配置上游服务类型、API Key、模型映射、请求参数。
- 流量统计:展示每个渠道的请求数量、成功率、响应延迟。
README里附了截图,界面简洁,功能指向明确。没有花哨的图表,就是几个数据表格。
我的看法
这个项目解决的是实际问题。多模型接入时的适配和运维负担,它用网关层的方式处理,不侵入应用代码。
Go单二进制加内置UI,部署成本很低。对于不想折腾基础设施的团队来说,这是个直接优势。不需要装数据库,不需要配反向代理,一个文件启动。
渠道级的控制粒度对应生产环境的真实需求。Key轮转、熔断、模型白名单,这些不是理论功能,是从实际运维痛点中长出来的。
缺点方面:README没有提供性能测试数据。如果我有百万QPS级别的并发需求,我会自己压测一下。文档以英文为主,但有中文版(README.zh-CN.md),细节还算清楚。
如果你团队手里有多个AI平台的API Key,想把接入逻辑统一、出错时自动切换,CCX值得试。花10分钟部署,看看能不能满足你的场景。