原创 白志雄 小白Ongoing
零、说在前面
Codex 默认支持使用ChatGPT账号或者GPT API登入,前提是你能订阅ChatGPT会员。
可实际情况在国内,我们很难走官方途径完成订阅,于是我们可以采取两个办法接第三方大模型。
⚠️此次教程基于Windows操作系统进行演示
中转站接国外大模型
既然受限于网络,我们无法直接与官方GPT大模型进行链接,那就找个“中间人”牵个线,中转站就是这个中间人。
一般中转站都会提供对接操作指引帮助你完成配置,所以本教程只是提供示例。

✅配置文件接国内大模型
配置国内大模型的动作会比「中转站」多一步,除了在配置文件中写入API相关信息外,需要额外安装一个「代理」将请求协议做转换。
否则配置好后,就会出现如下图所示的错误提示:

原因是最新版的Codex仅支持Responses协议,而大模型支持的Chat协议,导致双方对接失败,于是就需要一个中间件进行协议转换。
codex-relay:此篇教程所使用的转发中间件,依赖Python
具体操作接着往下看即可

一、安装Codex APP
下载“安装程序”
访问下载地址:https://openai.com/zh-Hans-CN/codex/get-started/,点击“下载Windows版本”
如果打不开页面,直接看第2步

运行“安装程序”
在Windows中,目前Codex并没有安装程序,而是通过在微软应用商店中进行安装。所以你可以直接打开电脑中的Microsoft Store,并在其中搜索Codex点击获取。

如果你的Microsoft Store初始化失败打不开,那么可以直接将如下文件下载到你本地电脑然后运行。

❌微软商店打不开/闪退
直接访问https://codexapp.agentsmirror.com/latest/win
浏览器会自动开启下载,570M左右,下载成功后直接双击运行Codex-Windows-x64.msix安装即可

这个安装包是Githun上的一项目,直接把官方来源里的Codex安装包拉取后做了发布方便大家绕过微软商店进行安装,详情请见https://github.com/Wangnov/codex-app-mirror
先不要登录
安装成功后,先不要打开。如果你此前已经打开,关闭该应用,注意一定要退出后台,而非单一的关闭窗口。
二、DeepSeek接入
安装Python(如果已安装,跳过即可)
<callout emoji="🎉">
如果你的电脑正好也是64位操作系统,可以直接下载上述安装包,跳到第5步继续;
不知道自己电脑架构/操作系统是64/32的,直接看第4步
以下是从官网下载的操作步骤,供参考
</callout>
访问官网 https://www.python.org/、点击Downloads

根据自己的电脑类型,选择对应的稳定版本进行下载(如果不知道电脑类型,看下一步)
- Download Windows installer (64-bit):64 位 Windows 系统的安装程序。
- Download Windows installer (32-bit):32 位 Windows 系统的安装程序。
- Download Windows installer (ARM64):适用于 ARM64 架构的 Windows 设备的安装程序。

电脑架构、操作系统类型查看,以Windows电脑为例:
- 按 Win + R 打开“运行”对话框
- 输入 msinfo32 并回车
- 在弹出的“系统信息”窗口中,找到 系统类型: 显示啥就是啥

运行下载好的安装程序exe,
按引导点下一步即可,记得勾选 Add Python 3.6 to PATH

安装完成后,检查安装是否成功
- 按 Win + R 打开“运行”对话框
- 输入 cmd 并回车
- 在弹出命令行窗口中,输入如下命令并回车,如果能正常显示Python版本号即为成功
python --version![图片展示了在Windows系统中检查Python安装是否成功的命令行界面。界面显示“Microsoft Windows \[版本 10.0.19045.6466\]”等信息,输入“python --version””命令后,返回“Python 3.13.2”版本号,表明Python已成功安装。该图片与文档中“安装完成后,检查安装是否成功”部分对应,通过此操作可验证Python安装是否正确。](https://oss.fange-kb.cn/uploads/34d63ab5-96a7-4e85-a802-084115622c28/original.png)
获取DeepSeek API
注册DeepSeek
访问开放平台https://platform.deepseek.com/
然后注册一个账号,并充值(可以先充个10块钱就行)
创建API KEY
进入到API Keys 页面,点击创建API key,输入名称后点击创建。
创建后复制key先粘贴到其它地方临时保存一下,因为deepseek仅在创建时允许你复制key,后续就不可再次查看了。如果遗忘了,删掉再重建一个即可。

安装codex-relay(需 Python 环境):
在PowerShell中运行如下命令
pip install codex-relay
编辑启动命令
将上述启动命令下载到本地,将其中的CODX_RELAY_API_KEY设置为你在DeepSeek获取的API KEY,然后保存
如果无法下载,则直接使用如下文本复制粘贴到txt文件中,然后将后缀名改为ps1
Remove-Item Env:CODEX_RELAY_UPSTREAM -ErrorAction SilentlyContinue
Remove-Item Env:CODEX_RELAY_API_KEY -ErrorAction SilentlyContinue
Remove-Item Env:CODEX_RELAY_PORT -ErrorAction SilentlyContinue
# ===== start_deepseek.ps1 =====
# DeepSeek 专用启动脚本
# 最后确认清理
Stop-Process -Name "codex-relay" -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 1
# 设置 DeepSeek 环境变量
$env:CODEX_RELAY_UPSTREAM = "https://api.deepseek.com/v1"
$env:CODEX_RELAY_API_KEY = "sk-75293e85b70b4ccf9c32a7d8d5263376" # ⚠️ 这里务必替换成真实的
$env:CODEX_RELAY_PORT = "4446"
$env:RUST_LOG = "info"
# 打印确认信息(必须看到这三行)
Write-Host "✅ 启动参数确认: Upstream = $env:CODEX_RELAY_UPSTREAM"
Write-Host "✅ API Key 已设置(长度: $($env:CODEX_RELAY_API_KEY.Length))"
Write-Host "✅ 端口: $env:CODEX_RELAY_PORT"
# 检查 codex-relay 是否存在
if (-not (Get-Command codex-relay -ErrorAction SilentlyContinue)) {
Write-Error "找不到 codex-relay 命令,请确认它在 PATH 中或使用绝对路径"
exit 1
}
# 启动
codex-relay
鼠标右键,选择使用PowerSheell运行
此时我们能看到控制台输出的结果显示“codex-relay正在监听127.0.0.1:4446这个地址,并将其转发给https://api.deepseek.com/v1”

这就说明咱们的codex-relay配置好了。
⚠️如果关闭这个窗口,就意味着关闭了转发服务,Codex就无法正常使用。所以要保持打开处于运行状态

打开 `config.toml`:
在资源管理器的地址栏中输入“%USERPROFILE%\\.codex”按回车,此时你会看到一个名为config.toml的文件。
这就是Codex的配置文件,在安装好Codex时会自动创建(如果没有,你就手动创建个文本文件,然后重命名,将名称和文件后缀改为config.toml)
选中后点击右键,使用记事本打开。


修改 config.toml
将如下文本复制,粘贴到config.toml的顶部即可。
也就是说如果该文件里面原本有文本内容也是没关系的,只要保证下面这段配置文本在顶部即可。
# =========================================================
# 全局默认配置(强制指向 DeepSeek Relay)
# =========================================================
model = "deepseek-v4-flash"
model_provider = "deepseek_relay"
approval_policy = "never"
sandbox_mode = "danger-full-access"
suppress_unstable_features_warning = true
# =========================================================
# 模型提供商定义(DeepSeek via Relay)
# =========================================================
[model_providers.deepseek_relay]
name = "DeepSeek via Relay"
# 指向本地运行的 codex-relay
base_url = "http://127.0.0.1:4446/v1"
# 关键:Relay 对外伪装成 Responses,对内转成 Chat
wire_api = "responses"
# 关键:Relay 负责鉴权,Codex 不要插手
requires_openai_auth = false
# 关键:DeepSeek 不支持 WebSocket,必须关闭
supports_websockets = false
# 关键:彻底关闭重试,防止“回复 N 次”
request_max_retries = 0
stream_max_retries = 0
# 拉长超时,给 DeepSeek 思考时间
stream_idle_timeout_ms = 300000
# =========================================================
# Profile 配置(可选)
# =========================================================
[profiles.deepseek_chat]
model = "deepseek-chat"
model_provider = "deepseek_relay"
approval_policy = "never"
sandbox_mode = "danger-full-access"
# =========================================================
# 功能与 Agent 设置
# =========================================================
[features]
# 必须关闭,DeepSeek 不支持
responses_websockets_v2 = false
multi_agent = true
remote_connections = true
[agents]
max_threads = 4
max_depth = 1
job_max_runtime_seconds = 1800
[windows]
sandbox = "elevated"
细心的小伙伴可以发现其中base_url = "http://127.0.0.1:4446/v1",意思就是Codex的所有请求都会发送到这个地址。
正好codex-relay启动脚本中,我们设置的监听地址也是它,至此形成闭环Codex -> codex-relay -> deepseek
三、启动Codex
此时所有配置已完成,可以打开Codex 客户端,你会发现无需登入就会进入到如下界面。
其中文本框的左下角会显示Custom (Config.toml) 意思就是当前Codex使用的是自定义配置。
至此,就可以正常使用了。

可能的问题
未显示“Custom (Config.toml)”
说明配置文件格式有误,可以全量复制配置文件的文本发送给任意AI工具,让其帮你修复。
链接失败/超时
大概率是环境变量配置未生效,可以按如下操作手动检查并配置一遍。
右键点击“此电脑”或“我的电脑”,选择“属性”。 点击“高级系统设置”,然后选择“环境变量”按钮。 在弹出的窗口中,可以查看用户变量中是否有你在上述步骤中创建的环境变量,以及对应的值是否正确。
如果修改后还是失效,大概率是缓存机制或者后台的服务仍在运行依旧读取的是旧环境变量信息,可以重启一下电脑强制结束/刷新。



主要就是检查codex-relay启动脚本中的环境变量是否真的设置成功了
如果在环境变量页面都没有看到截图中三个CODEX开头的变量,那就说明没有设置成功,可以手动点击“新建”,然后再重启Codex。
🌟🌟🌟更好的体验
为了维持codex的运行,需要一直运行codex-relay,那么屏幕上一直会有一个黑框框,让人很难受。再加之每次电脑重启都要手动运行,颇为麻烦。
于是我们可以把启动脚本放置在一个固定的目录(不要放桌面,避免误删),让后将目录地址发给Codex,在确保其能正确读取到脚本内容后,让其设置一个计划任务,以便每次电脑启动后都会运行这个脚本

更多接入
按照这个方法,理论上其它国内大模型或者Token plan也可以接入。我还尝试了minimax,也成功接入了。但是有一个新的问题,那就是每次发送消息,Codex都会回复5次。
经排查得到的信息是说minimax每次的请求没有完整的发送结束标签,导致被认为为断开链接所以触发了重试,而最多重试5次,所以会得到5次回复。
这个问题我暂且还没解决,有兴趣的朋友可以试一下,配置文件如下供参考。
