Appearance
最近用 Codex App 的时候,遇到一个很烦的问题:每次新开一个对话,它都会先显示 "Reconnecting..." 重试 5 次才恢复正常。
问题表现
每次新开对话,Codex 都会这样:
Reconnecting... 2/5
Reconnecting... 3/5
Reconnecting... 4/5
Reconnecting... 5/5
timeout waiting for child process to exit奇怪的是,它并不是完全不能用。每次重连几次以后,最后又能正常开始回复。
所以这个问题就很折磨人:它不像是网络完全不通,更像是一开始没走对线路,失败几次以后才绕回了正确路线。
问题根因
后来发现,这个问题大概率不是:
- ❌ Clash 不通
- ❌ VPS 不通
- ❌ 节点不能访问 OpenAI
- ❌ 账号权限有问题
真正的原因更像是:Codex App 在新建对话的启动阶段,可能会先尝试直连 OpenAI,而不是一开始就走系统代理。
也就是说,虽然电脑上已经开了 Clash,网页、终端、其他工具也都可以正常访问 OpenAI,但 Codex App 启动时的某些请求或子进程,可能没有马上继承系统代理。
于是就出现了这种情况:
先尝试直连 OpenAI
↓
直连失败
↓
开始 Reconnecting
↓
重试几次后才走到代理
↓
最后又能正常使用解决思路
直接告诉 Codex App:从启动第一秒开始,就走这个代理。
Mac 上可以通过 launchctl setenv 给图形界面 App 设置环境变量。
具体操作步骤
第一步:确认你的代理本地端口
打开 Clash Verge 查看:
- 设置 → 查看 Clash 端口
- 默认一般是
7890或7897
记住这个端口号,下面会用到。
第二步:设置 launchctl 环境变量
打开终端,执行:
bash
# 把 7897 换成你实际的代理端口
launchctl setenv http_proxy http://127.0.0.1:7897
launchctl setenv https_proxy http://127.0.0.1:7897
launchctl setenv HTTP_PROXY http://127.0.0.1:7897
launchctl setenv HTTPS_PROXY http://127.0.0.1:7897第三步:验证设置
bash
launchctl getenv http_proxy
# 应该输出: http://127.0.0.1:7897第四步:重启 Codex App
完全退出 Codex App(Command+Q),重新打开。
第五步:测试
新建一个对话,应该不会再出现 Reconnecting 了。
进阶:持久化设置
上面用 launchctl setenv 设置的环境变量会在下次登录前生效。
如果想永久生效,需要创建 plist 文件:
bash
# 创建配置文件
cat > ~/Library/LaunchAgents/setenv.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>setenv.proxy</string>
<key>ProgramArguments</key>
<array>
<string>/bin/launchctl</string>
<string>setenv</string>
<string>http_proxy</string>
<string>http://127.0.0.1:7897</string>
</array>
<array>
<string>/bin/launchctl</string>
<string>setenv</string>
<string>https_proxy</string>
<string>http://127.0.0.1:7897</string>
</array>
</dict>
</plist>
EOF
# 加载配置
launchctl load ~/Library/LaunchAgents/setenv.plist这样每次开机的代理环境变量都自动设置好了。
如果还不行
如果设置了代理环境变量还是不行,试试:
方案1:更新 Clash 配置
在 Clash 的配置里添加:
yaml
proxy-groups:
- name: "auto"
type: url-test
proxies:
- 你的节点
url: "http://www.gstatic.com/generate_204"
interval: 300方案2:使用 Proxifier
下载 Proxifier for Mac,强制所有应用流量走代理。
方案3:终端启动
在终端里启动 Codex:
bash
export http_proxy=http://127.0.0.1:7897
export https_proxy=http://127.0.0.1:7897
open -a "Codex"一句话
Codex Reconnecting 问题是启动时没吃上代理,用 launchctl setenv 设置环境变量,一行命令解决。
