【开源】ccg-gateway:多功能代理网关,优雅流转于多服务商 | 支持 Claude + Codex + Gemini
一个纯主观的,从我个人需求出发的一个新的轮子,缝合了站内各位开源佬们的一大堆功能。
这个项目的立项来自于我的上一个帖子:https://linux.do/t/topic/1380214 ,然后现有的各个项目要么功能不足,要么有一些 BUG。
所以这个项目我进行了大量测试,且已经高频使用大概有一周了,才敢端上来。
致谢列表
放在最前面,由衷感谢,提供了很多功能思路,并且节省了开发和验证的成本
- cc-switch
是我使用频率最高的工具,快速切 CLI 全局配置、MCP 配置、全局提示词配置非常爽。
本项目上述功能参考了 cc-switch - coding-tool
会话管理,好用爱用。连 UI 都抄过来了 - code-switch 和 code-switch-R
cc-switch 最初没网关,为了解决服务商额度没到刷新时间,需要手动切的问题
本项目网关功能参考了 code-switch - ccg-workflow
取名灵感
功能预览
- 智能路由 - 基于优先级和可用性的自动服务商选择
- 故障转移 - 服务商状态异常,自动切换备用服务商
- 模型映射 - 灵活的模型名称映射
- 实时监控 - 完整的请求日志和统计分析
- 预设配置 - 一键注入全局配置、MCP、全局提示词等内容
简单的使用场景
1. 网关转发
转发 CLI 的请求到服务商
- 支持拖拽调整服务商优先级
- 当前服务商不可用时自动切换到下一个服务商
- 自动拉黑连续失败 N 次的服务商 M 分钟
使用场景:
小帅订阅了三个服务商:服务商 A 每 4 小时重置额度,服务商 B 每 9 小时重置额度,服务商 C 按量计费。
小帅为了保证可用性和性价比,为服务商 A 配置拉黑时长为 4 小时,为服务商 B 配置拉黑时长为 9 小时,将服务商 C 的拖拽到最后作为兜底。
网关会优先转发请求到服务商 A,服务商 A 不可用再转发到服务商 B,服务商 B 不可用再转发到服务商 C,当服务商 A 恢复后继续使用服务商 A。
2. 模型映射
根据映射规则重命名模型名称,解决服务商模型名称与 CLI 默认模型不一致的问题
- 支持的通配符:
*- 匹配任意数量字符;?- 匹配单个字符
使用场景:
服务商 A 的模型命名是 cc-opus-4.5 ,而其他服务商的模型命名都遵循官方是 claude-opus-4-5-20251101 ,小帅就为服务商 A 配置了模型映射
*opus* -> cc-opus-4.5
*haiku* -> cc-haiku-4.5
这样 CLI 无需任何额外配置,所有请求都能正确转发到服务商。
3. 配置管理
- CLI 全局配置:为各 CLI 预设全局配置,启用网关时自动注入
- MCP 配置:支持配置 MCP ,一键应用到各个 CLI
- 提示词预设:支持配置常用提示词,一键应用到各个 CLI
- 超时设置:可配置流式和非流式请求的超时时间
- 备份恢复:支持配置的导出和导入,支持 webdav 备份
4. 请求日志与统计
- 请求日志:详细记录每个请求的完整信息(请求内容、响应内容、耗时、token 用量等)
- 系统日志:记录服务商切换、故障、拉黑等系统事件
使用场景:
小帅求知欲强,想知道 CLI 工作时会发送哪些请求,请求的内容是什么。
5. 会话管理
可查看各个 CLI 的所有会话。
使用场景:
小帅求知欲强,想看每个会话 AI 思考了什么内容,调用了什么工具,工具的返回结果是什么。
一些巧思
1. 复制服务商
可能服务商为多个 CLI 都提供了服务,那么重复填也太麻烦了,单独开发复制功能意义也不大。
于是产生了一个可以作为机制的 bug :小帅先添加任意一个 CLI 的服务商,然后点击编辑,再将弹窗关闭。切换到另外一个 CLI 的配置 Tab ,点击添加服务商。发现原本的内容居然还在,直接保存就好啦。
TODO
- 负载均衡:设计是每个会话使用同一个服务商,每个新会话切换一次服务商。但是目前看来各个 CLI 的请求都没有给定当前会话的 ID,还在思考。
- 服务商支持官方:比如 codex 走 team 登录的话,转发好像不太能完美适配诶,其他两个没官号,没条件测试。
- SKILL 管理:有需求吗。







