首页 / AI工具 / ccswitch 说切了 ccx 却没动?怎么给 Codex 国产模型切换造一座桥?
AI工具

ccswitch 说切了 ccx 却没动?怎么给 Codex 国产模型切换造一座桥?

ccswitch 说切了,ccx 却没动?怎么给 Codex 国产模型切换造一座桥?

为什么 ccswitch 切换后流量却没动?

很多用户在 Codex 中配置国产模型时,会遇到这样一个“诡异”现象:用 ccswitch 把模型切到 deepseek、qwen 等国产模型后,ccx 的请求流量却仍然指向原来的默认通道。表面上看 ccswitch 已经更新了 model 字段,但实际上 ccx 的路由优先级纹丝不动。

究其原因,ccswitch 修改的是 Codex 配置文件里的 model 字段,而 ccx 路由判断的是各通道的 priority 数值。两者不在同一个维度,导致“切模型”与“改路由”之间产生了断层。

造一座桥:CCX-Bridge 的设计思路

既然无法改动 ccswitch(Electron 桌面应用,源码封闭),也无法让 ccx 自动根据模型名选通道(ccx 按 priority 路由),最干净的方案就是在中间搭一座“翻译器”——CCX-Bridge。

核心流程

ccswitch 切换模型
    ↓
config.toml 的 model 字段变化
    ↓
CCX-Bridge 检测到变化(fsnotify + 3秒轮询)
    ↓
匹配模型名 → 找到对应的 ccx 通道索引
    ↓
调用 ccx API: PUT /api/responses/channels/{index}
    ↓
目标通道 priority=1,其余 priority=2
    ↓
ccx 把新请求路由到正确的上游

ccx 的隐藏 API

ccx 没有公开文档,以下接口是通过 Web UI 逆向和试错得到的:

  • GET /api/responses/channels:列出所有通道及状态
  • PUT /api/responses/channels/{i}:修改通道属性(priority 等)
  • GET /api/health:网关健康检查
  • GET /api/conversations:会话列表和路由状态

PUT 请求后立即生效,无需重启 ccx。

模型名到通道的映射

ccx 通道名称通常带随机后缀(如 deepseek-v3-abc123),需要手动或通过正则把“模型名”映射到“通道索引”。CCX-Bridge 提供一个简易的 JSON 配置表:

{
  "deepseek": 0,
  "qwen": 1,
  "yi": 2
}

实际部署与使用

  1. 下载 CCX-Bridge 二进制(Windows/macOS/Linux 均支持)。
  2. 在同目录新建 bridge.json,填入上述映射表。
  3. 启动 CCX-Bridge,它会常驻后台监听 ~/.codex/config.toml
  4. 通过 ccswitch 正常切换模型即可,Bridge 会自动同步 ccx 路由。

常见问题排查

现象 可能原因 解决办法
ccswitch 已切,ccx 仍走旧通道 Bridge 未启动或映射表错误 检查 Bridge 日志,确认通道索引正确
ccx 返回 500 并发/限流配置过高 把 maxConcurrent 设为 1,qps 设为 0.5
Bridge 检测不到文件变化 权限或路径问题 以管理员/root 运行,或检查文件路径

总结

通过 CCX-Bridge 这座“桥”,我们把 ccswitch 的模型切换动作,翻译成了 ccx 能理解的通道优先级调整,真正实现了“一键切模型,流量自动走国产”。

分享到: 微博