这是一次个人修复记录,用来记录我在 Windows 上配置 Codex 代理时遇到的问题、排查过程和最终解决方法。 本文不是官方教程,而是一个适合以后复盘、迁移到新电脑、或者发给 Codex 作为参考的学习笔记。
我在使用 Codex 时遇到了网络连接异常,典型表现是:
Reconnecting 1/5
Reconnecting 2/5
Reconnecting 3/5
Reconnecting 4/5
Reconnecting 5/5
一开始我以为是 Codex 本身坏了,后来发现更可能是:
- Codex 没有正确读取代理配置;
- 本地代理端口没有写对;
.env文件里的代理配置被注释掉了;- 修改配置后没有彻底重启 Codex / VS Code;
- Codex 桌面端、VS Code 插件、CLI 对代理配置的读取方式可能不完全一样。
这次修复的核心目标是: 让 Codex 通过本机代理端口访问网络。
我的本机代理软件使用的端口是:
127.0.0.1:7897
其中:
127.0.0.1表示本机地址;7897是本机代理端口;HTTP_PROXY、HTTPS_PROXY、ALL_PROXY都指向这个端口;NO_PROXY用来指定哪些本地地址不走代理。
我用 PowerShell 测试过代理端口是否可用:
curl.exe -I --proxy http://127.0.0.1:7897 https://api.openai.com/v1/models如果返回类似:
HTTP/1.1 401 Unauthorized
这并不代表网络失败。
因为 OpenAI API 需要身份验证,没有 API Key 时返回 401 是正常的。它反而说明请求已经成功到达了 OpenAI 服务端。
我也测试过:
curl.exe -I --proxy http://127.0.0.1:7897 https://chatgpt.com如果返回 403 Forbidden,可能是 Cloudflare 对命令行请求做了挑战,不一定说明代理不可用。
Codex 的代理环境变量文件位于:
C:\Users\Lenovo\.codex\.env
也可以用 PowerShell 表示为:
$HOME\.codex\.env其中:
$HOME表示当前 Windows 用户目录。
最终我写入的配置如下:
HTTP_PROXY=http://127.0.0.1:7897
HTTPS_PROXY=http://127.0.0.1:7897
ALL_PROXY=http://127.0.0.1:7897
NO_PROXY=localhost,127.0.0.1,::1
http_proxy=http://127.0.0.1:7897
https_proxy=http://127.0.0.1:7897
all_proxy=http://127.0.0.1:7897
no_proxy=localhost,127.0.0.1,::1这里我同时写了大写和小写两组变量,是为了提高兼容性。 有些程序读取大写变量,有些程序读取小写变量,都写上更稳妥。
我后来发现 .env 文件里曾经出现过这样的内容:
# HTTP_PROXY="http://127.0.0.1:7897"
# HTTPS_PROXY="http://127.0.0.1:7897"
# ALL_PROXY="http://127.0.0.1:7897"
# NO_PROXY="localhost,127.0.0.1,::1"这些配置前面都有 #。
在 .env 文件里,# 表示注释。
也就是说,这几行虽然看起来写了代理,但实际上不会生效。
正确做法是去掉 #,并改成无引号版本:
HTTP_PROXY=http://127.0.0.1:7897
HTTPS_PROXY=http://127.0.0.1:7897
ALL_PROXY=http://127.0.0.1:7897
NO_PROXY=localhost,127.0.0.1,::1一开始我写的是:
HTTP_PROXY="http://127.0.0.1:7897"这种写法在很多情况下也可以用。
但为了避免某些程序读取 .env 时把引号也当作内容的一部分,我最终改成了:
HTTP_PROXY=http://127.0.0.1:7897这是一种更简单、兼容性更好的写法。
修改 .env 文件后,不能只关闭当前窗口。
需要彻底重启相关程序:
- 保存
.env文件; - 退出 Codex;
- 退出 VS Code;
- 检查 Windows 右下角托盘,确认相关程序也已经退出;
- 确认本机代理软件正在运行;
- 重新打开 Codex / VS Code。
如果不重启,Codex 可能仍然使用旧配置。
这次问题表面上是“Codex 连不上”,但本质上是一次关于网络代理、环境变量和工具链配置的排查。
我的收获主要有:
-
不要只看配置有没有写,要看它有没有真正生效。 比如前面加了
#的配置,其实完全不会生效。 -
命令行测试很重要。
curl.exe --proxy可以帮助判断代理端口是否真的可用,而不是单纯靠感觉判断。 -
401 Unauthorized不一定是坏结果。 访问 OpenAI API 时,如果没有身份验证,返回401是正常的。它说明网络已经通了,只是没有授权。 -
修改配置后一定要重启相关程序。 很多软件启动时才读取环境变量,中途改文件可能不会立即生效。
-
纯文本配置文件也值得认真管理。
.env、.toml、.json这类文件看起来简单,但一个符号、一个端口、一个注释都可能影响整个程序是否正常运行。
本次修复的关键点是:
- 确认本机代理端口是
7897; - 将代理信息写入
C:\Users\Lenovo\.codex\.env; - 去掉无效注释;
- 使用无引号版本;
- 同时写入大写和小写环境变量;
- 修改后彻底重启 Codex / VS Code。
最终有效配置如下:
HTTP_PROXY=http://127.0.0.1:7897
HTTPS_PROXY=http://127.0.0.1:7897
ALL_PROXY=http://127.0.0.1:7897
NO_PROXY=localhost,127.0.0.1,::1
http_proxy=http://127.0.0.1:7897
https_proxy=http://127.0.0.1:7897
all_proxy=http://127.0.0.1:7897
no_proxy=localhost,127.0.0.1,::1这篇记录只是我的个人修复过程。 不同电脑、不同代理软件、不同 Codex 版本,端口和配置方式可能不同。
如果以后换电脑或换代理软件,最重要的是先确认当前本机代理端口,再修改 .env 中的端口号。