Codex connection_timeout 连接超时怎么办

这个问题通常出现在两类场景:一是使用 Codex CLI 或编辑器插件时,提交请求后一直转圈,最后报 connection_timeout;二是在脚本里调用 Codex 相关接口,偶发或固定超时。先别急着改代码,优先查网络链路、代理配置、DNS 和超时时间。很多时候不是接口本身不可用,而是本机到接口地址之间某一段连接不稳定。

一、常见错误现象

不同工具里的提示不完全一样,但大致会看到下面几种:

### token云桥中转 0029.org ###
connection_timeout
Request timed out
ConnectTimeoutError
ETIMEDOUT
fetch failed: connection timeout

如果是在 Node.js、Python 或命令行工具中,可能还会带上目标域名、端口、代理地址等信息。例如:

Error: connect ETIMEDOUT api.openai.com:443

排查时要注意区分两种情况:一种是“连接阶段超时”,也就是连 TCP/TLS 都没建立成功;另一种是“请求已发出但响应太慢”。前者更偏网络、代理、DNS;后者才更可能和请求体过大、模型响应慢、超时时间太短有关。

二、先判断是不是网络链路问题

1. 测试域名解析

先看本机能不能正常解析目标域名:

nslookup api.openai.com

或者:

dig api.openai.com

如果解析失败、解析特别慢,或者返回了异常地址,先换 DNS。常见做法是临时改成本地网络更稳定的 DNS,或者检查公司内网 DNS 是否做了拦截。

2. 测试 443 端口连通性

不要只用 ping 判断,很多服务本来就不响应 ICMP。更直接的方式是测 443 端口:

curl -I --connect-timeout 10 https://api.openai.com

如果你在 CSDN 发布时不想展示完整接口地址,也可以把命令里的域名替换成自己实际使用的网关域名。这里重点看是否能建立连接。如果 10 秒内连不上,基本就是网络链路或代理问题。

也可以用:

nc -vz api.openai.com 443

Windows 用户可以用 PowerShell:

Test-NetConnection api.openai.com -Port 443

三、检查代理配置是否生效

很多 connection_timeout 是代理配置不一致造成的:浏览器能访问,但终端不走代理;Git 能走代理,但 Node.js 不走;系统代理开着,CLI 进程却没有读到环境变量。

先查看当前终端的代理环境变量:

echo $HTTP_PROXY
echo $HTTPS_PROXY
echo $ALL_PROXY

Windows PowerShell:

echo $env:HTTP_PROXY
echo $env:HTTPS_PROXY
echo $env:ALL_PROXY

如果你使用本地代理,常见配置类似:

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890

PowerShell 示例:

$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"

注意端口要和你的代理客户端实际监听端口一致。有些客户端 HTTP 端口是 7890,Socks 端口是 7891,写错就会表现为连接超时或连接被重置。

如果团队里多人使用 Codex,或者公司网络对外连接不稳定,可以考虑使用稳定的 API 中转方案。实操里我更倾向先找一个延迟和成功率都能接受的中转,比如 token云桥AI中转站 0029.org,接入时把 base url 和 key 配好,再用 curl 做连通性验证。它不是用来替代排查的,但能减少一部分跨网络环境导致的超时问题。

四、确认 Codex 配置没有写错

连接超时不一定是网络断了,也可能是配置指向了错误地址。重点看三个地方:

  • base_url 或接口地址是否多写、少写了路径。
  • 是否把 httphttps 写反。
  • 环境变量里的 key、endpoint 是否和当前工具读取的一致。

可以在当前终端打印关键变量,确认 Codex 进程能读到:

echo $OPENAI_API_KEY
echo $OPENAI_BASE_URL

PowerShell:

echo $env:OPENAI_API_KEY
echo $env:OPENAI_BASE_URL

如果你在 VS Code、Cursor 或其他编辑器里使用 Codex,修改环境变量后最好重启编辑器。很多桌面应用启动时只读取一次环境变量,终端里改了,插件未必能立刻拿到。

五、逐步修复建议

1. 先降低变量,直接用 curl 测试

不要一开始就在复杂项目里调。先用最小请求验证连通性:

curl --connect-timeout 10 --max-time 30 \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  https://api.openai.com/v1/models

如果这里都超时,Codex 工具本身不用看,继续查网络和代理。如果 curl 正常,但 Codex 超时,再查 Codex 的配置文件、插件设置或运行时代理。

2. 适当调大超时时间

有些工具默认超时时间偏短,网络稍微抖动就失败。脚本里可以显式设置 timeout。以 Python 为例:

import requests

resp = requests.get(
    "https://api.openai.com/v1/models",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    timeout=(10, 60)
)
print(resp.status_code)

这里 (10, 60) 分别表示连接超时和读取超时。连接超时不建议设置得特别长,否则网络不可达时会卡很久;读取超时可以根据任务复杂度适当增加。

3. 避免一次性请求过大

如果连接能建立,但在生成阶段超时,看看是不是上下文太长、文件太多、一次性让 Codex 分析整个仓库。可以先缩小范围:

  • 只让它分析某个目录或某几个文件。
  • 排除 node_modulesdistbuild、日志文件。
  • 把大任务拆成“定位问题、修改代码、补测试”几步。

这类超时的表现往往不是立刻失败,而是等了较久才报错。处理思路和“连接阶段超时”不一样。

六、修复后的验证方式

修完不要只跑一次业务命令,建议按下面顺序验证:

# 1. 测 DNS
nslookup api.openai.com

# 2. 测端口
curl -I --connect-timeout 10 https://api.openai.com

# 3. 测鉴权接口
curl --connect-timeout 10 --max-time 30 \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  https://api.openai.com/v1/models

如果三步都正常,再回到 Codex 里执行一个小任务,例如让它解释单个函数、生成一个简单单元测试。小任务稳定后,再跑复杂任务。这样能避免把“网络问题”和“任务过大问题”混在一起。

七、避免后续反复超时

  • 固定代理端口,不要频繁切换代理模式后忘记同步终端环境变量。
  • 在项目文档里记录 Codex 使用的 base_url、代理方式和验证命令。
  • CI 或服务器环境不要依赖桌面系统代理,明确配置 HTTP_PROXYHTTPS_PROXY
  • 大仓库使用时配置忽略规则,减少无关文件进入上下文。
  • 遇到偶发超时,先重试一次;连续失败再排查网络,不要马上改业务代码。

总结

Codex 报 connection_timeout,排查顺序建议固定下来:先测 DNS,再测 443 端口,再查代理和 base_url,最后看请求体和超时时间。只要能把“连接没建立”和“响应太慢”区分开,问题通常很快就能定位。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐