Codex登录界面

Codex移动端灰度开放后,用ChatGPT账号登录就能远程控制本机的Codex干活,体验确实丝滑。但后台收到最多的一条留言是:中转API能不能跑?

我一开始也没底。毕竟Codex对接口的校验挺严格的,普通中转站根本喂不进去。研究了一下午配置文件,发现它的Auth层和Model层是完全分开走的,这就给了操作空间。

今天把完整配置过程记录下来,你照着走一遍就能通。


原理:两道门,各管各的

Codex处理一次对话请求,要过两道关卡。

第一道叫Auth层。它管的是"你是谁"这个问题:登录态、Plus会员、插件权限、Mobile解锁、额度查询,全在这层。验证通过就行了,它不关心你后面用哪家的API。

第二道叫Model层。这层管的是"实际干活":把你输入的对话内容送到某个模型那里,拿回复回来。它看的只有config.toml里的provider配置。

重点来了——这两层是解耦的。Auth层认你的ChatGPT账号,Model层认你的config配置,互相不通信。

打个比方:Auth层就像小区的门禁卡,证明你是业主;Model层就像你家请的装修队,门禁不管你请的是哪家公司。

所以思路就很清晰了:让Auth层继续用ChatGPT账号过门禁,Model层悄悄换成coding.rexai.top来干活。


你需要准备三样东西

  1. 一个ChatGPT账号,Free档就够。Codex移动端支持免费用户远程调用本机的Codex实例。
  2. 一个支持 OpenAI Responses API 的中转站账号,推荐 coding.rexai.top ,这是我自用的中转服务,实测能跑通。为什么非它不可后面说。
  3. 两份配置文件的路径记好:~/.codex/auth.json~/.codex/config.toml

关于第二点多说两句。Codex发请求用的是OpenAI的Responses API,对应路径是/v1/responses。市面上大部分中转站只适配了/v1/chat/completions这个老路径,请求一过去直接404或者405。coding.rexai.top 是目前少数明确支持Responses API的中转平台之一。


配置过程(四步走)

第一步:先登录,后改配置

这步的顺序特别重要。

先正常打开Codex,用ChatGPT账号完成登录,确保登录态正常。然后再去改配置文件。

如果反过来,先改了配置再去登录,Auth层会出问题——因为配置文件已经被你改了,登录验证的链路就断了。

第二步:改auth.json

用文本编辑器打开~/.codex/auth.json,找到这两个字段改一下:

{
  "auth_mode": "chatgpt",
  "OPENAI_API_KEY": null
}

auth_mode保持"chatgpt",意思是"登录验证继续走ChatGPT那条路"。OPENAI_API_KEY改成null,意思是"别拿官方API key去扣额度"。

文件里其他字段一字不动,保持原样就行。

第三步:改config.toml

打开~/.codex/config.toml,在文件末尾追加下面这段:

model_provider = "rexai"
model = "openai/gpt-4.1"

[model_providers.rexai]
name = "RexAI"
base_url = "https://coding.rexai.top/api/v1"
wire_api = "responses"
experimental_bearer_token = "你的 API Key"
requires_openai_auth = true

逐个解释一下这些字段:

  • model_provider:告诉Codex用哪个provider。这个名字要和下面[model_providers.xxx]方括号里的名字完全一致。
  • model:模型名。格式是openai/模型名,前缀openai/不能省,否则找不到模型。
  • base_url:中转站API入口地址,这里填coding.rexai.top。
  • wire_api:必须填"responses"。这个字段决定了Codex发请求走哪个协议。填responses就是走OpenAI最新的Responses API。
  • experimental_bearer_token:填你从中转站控制台生成的API Key。
  • requires_openai_auth:填true。这个字段是关键——它让Codex以为自己还在OpenAI的体系内,不会因为换了provider就报权限错误。

第四步:验证是否生效

保存配置后,完全退出Codex(不是最小化,是退出),然后重新打开。

发一条测试消息过去,看看能不能正常回复。

验证是不是真的走了中转站,有两种方式:一是去中转站控制台看用量记录,二是看Codex桌面端左下角的个人中心里的使用量统计。如果两边都有记录,说明Model层切换成功了。


切换后的效果

切换完成之后,移动端和桌面端是互为镜像的关系。桌面端显示走的是中转站,移动端同步显示。

这意味着你在手机上打开Codex App,远程控制本机Codex的时候,实际对话请求也是从中转站出去的,不会走官方额度。


几个踩过的坑

历史记录没了

切换provider之后,对话记录跟provider绑定。换了provider等于开了个新号,之前的对话一条都看不到。这个目前没辙,切之前想清楚。

模型名的前缀不能省

中转站的模型命名规则是openai/gpt-4.1openai/gpt-4o这种带前缀的格式。你要是直接写gpt-4.1,Codex会报模型找不到。别问我怎么知道的。

普通中转为什么不行

再说一遍这个关键点:wire_api = "responses"模式下,Codex发出去的请求走的是/v1/responses端点。这个端点和大家熟悉的/v1/chat/completions是两套东西。中转站如果没有专门适配Responses API,请求到那里就是404或者405。


说白了,这套方案的根基就是Codex架构上Auth和Model的解耦设计。ChatGPT账号负责证明你是谁,中转站负责把活干完。门禁是门禁,装修队是装修队,各管各的。


想跟着学更多AI编程实战?关注「全栈之巅-梦兽编程」公众号,每周更新Rust/AI干货。

也欢迎了解梦兽编程AI编程助手服务 ,帮你把AI编程工具用到生产环境。

FAQ

Q: 切换后Plus会员权益还在吗?

A: 在的。Auth层继续走ChatGPT认证,Plus权益、插件权限、Mobile解锁都不受影响。只是实际对话请求从中转站走了。

Q: 除了coding.rexai.top还有别的中转能用吗?

A: 理论上只要支持/v1/responses端点的中转都行。coding.rexai.top 是我自用的,稳定性和速度都不错。你要是找到了别的,欢迎留言告诉我。

Q: 移动端和桌面端能分别配不同provider吗?

A: 不行。配置文件是全局的,两端共享一套配置。