博客

Codex 连接 OpenAI 超时怎么办?国内网络故障排查指南

在国内使用 Codex,最常见的挫败不是 CLI 不会用,而是装好了一切,输入命令后等来的却是 Connection Failed、ETIMEDOUT 或 Network Error。本文深入排查 Codex 超时的各种根因,并说明如何通过 TeamoRouter 一步解决。

Codex 超时的典型症状

错误信息 出现场景
Error: Connection timeout after 30000ms CLI 首次请求 API
fetch failed: request to https://api.openai.com/v1/responses failed 任何 API 调用
ETIMEDOUT npm install / CLI 运行时
read ECONNRESET 长对话中途断连
Network Error Codex Desktop App 或 Web 端
Could not connect to the server 配置验证时

这些错误并不总是同一个原因——有时是终端代理未配置,有时是 npm 源不可达,有时是 API 本身被 DNS 劫持。需要分路径排查。

Codex 为什么会请求失败

Codex CLI 默认的 API 端点是 https://api.openai.com/v1/responses。在微信国家网络环境下,这条路径面临三层障碍:

  1. DNS 污染api.openai.com 的 DNS 解析可能返回错误 IP,或请求被中间设备拦截。
  2. SNI 阻断:即使 DNS 正确,TLS 握手阶段的 SNI 检测仍可能导致连接重置。
  3. IP 段限速/丢包:OpenAI 的服务器 IP 段在高峰时段可能被限速,导致长超时后失败。

这就是为什么简单的"开代理"不够用——它只能解决一部分问题,而代理本身与 Codex CLI 的本地端口冲突又是另一重麻烦。

国内网络路径差异:终端代理 vs 浏览器代理

很多用户发现自己浏览器能打开 chat.openai.com,但终端里的 Codex CLI 仍然超时。这是因为浏览器和终端的网络路径完全不同:

组件 默认流量路径 代理方式
浏览器 系统代理设置(HTTP_PROXY)或扩展 配置自动生效
终端 CLI 不读取系统代理 需单独设置 https_proxy 环境变量
npm 读取 npm config proxy 或环境变量 需单独配置
Git 读取 git config http.proxy 需单独配置

常见误区:在系统设置中开启了 VPN/代理,认为终端中的 Codex CLI 也在走代理。实际上大部分 CLI 工具不会自动读取系统代理,需要为终端单独配置。

终端代理配置示例

bash
# 为终端设置 HTTP 代理
export https_proxy=http://127.0.0.1:7890
export http_proxy=http://127.0.0.1:7890

# 启动 Codex
codex

npm 代理配置

bash
npm config set proxy http://127.0.0.1:7890
npm config set https-proxy http://127.0.0.1:7890

Git 代理配置

bash
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

但代理本身也有问题:它增加了延迟、可能不稳定、切换网络时频繁断连,且许多公共代理节点对 OpenAI 的流量做了限制。

npm、Git、OpenAI API 分别排查

npm 网络排查

bash
# 检查 npm 能否连上注册表
npm ping

# 如果超时,设置镜像
npm config set registry https://registry.npmmirror.com

# 再试
npm ping

Git 网络排查

bash
# 测试 GitHub 连通性
ssh -T git@github.com

# 如果超时,设置代理
git config --global http.proxy http://127.0.0.1:7890

OpenAI API 连通性排查

bash
# 用 curl 测试 API 端点
curl -s -o /dev/null -w "%{http_code}" \
  https://api.openai.com/v1/responses \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-4o","input":"test"}' \
  --max-time 10

# 如果返回 000(连接失败)或超时,说明网络不通
# 如果返回 401(未授权),说明网络通但 API Key 有问题

常见错误码详解

HTTP 状态 含义 可能原因
000 连接未建立 DNS / SNI / 网络不可达
408 请求超时 网络延迟过高,或代理响应慢
429 速率限制 请求频率过高,或 API Key 在多个地方共享
502 网关错误 中转站/代理上游不可用
503 服务不可用 OpenAI 服务器过载
525 SSL 握手失败 SNI 阻断 / 中间人代理不兼容

如何配置 baseUrl 解决 API 超时

最彻底的方案是不经过 proxy 逐层配置,而是把 API 端点直接指向一个国内可达的网关。TeamoRouter 提供可直连的 API 端点,兼容 Codex 的 Responses API 协议:

bash
# 配置 TeamoRouter 网关
export OPENAI_BASE_URL="https://api.teamorouter.com/v1"
export OPENAI_API_KEY="sk-teamo-xxxxxxxx"

# 验证连通性(应该立刻返回非 000)
curl -s -o /dev/null -w "%{http_code}" \
  https://api.teamorouter.com/v1/responses \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-4o","input":"test"}' \
  --max-time 10

这样做的优势:

  • 不需要代理:TeamoRouter 的 API 端点国内直连可达,无需 VPN 或代理
  • 不需要多层配置:一个 baseUrl 搞定 CLI、npm、Git 的所有 API 调用
  • 统一计费:缓存命中率 > 99%,1-2 折浮动费率,失败不扣费

常见问题(FAQ)

浏览器能打开 OpenAI,但 Codex CLI 超时,为什么?

浏览器和终端走的是不同的网络路径。浏览器使用系统代理设置(或 VPN 扩展),终端 CLI 默认不走系统代理,需要单独设置 https_proxy 环境变量。更推荐的方式是直接配置 TeamoRouter 的 baseUrl,省去所有代理配置。

设置了代理还是超时怎么办?

首先验证代理本身是否可用:curl -x http://127.0.0.1:7890 https://api.openai.com/v1/responses -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d '{"model":"gpt-4o","input":"test"}' --max-time 10。如果代理也不通,说明代理节点本身已被限流。此时建议改用 TeamoRouter 网关。

TeamoRouter 需要配置代理吗?

不需要。TeamoRouter 的 API 端点国内可直接访问,配置一次 baseUrl 即可,无需额外代理。

Codex Desktop App 超时怎么排查?

Codex Desktop App 使用的是系统网络配置,与其配置终端代理不同。如果 App 超时,首先检查系统代理设置是否正确;如果系统代理也无法解决,在 App 设置中直接填写 TeamoRouter 的 baseUrl。

npm install 不超时,但 Codex 运行时超时?

说明 npm 源配置正确(如使用了 npmmirror),但 OpenAI API 的直连路径仍存在问题。需要在 Codex 的环境层面配置 baseUrl 或代理。

快速开始

最简单的解决方案就是换网关:

  1. 注册 TeamoRouter 获取 API Key
  2. 设置 OPENAI_BASE_URLOPENAI_API_KEY
  3. 运行 curl 测试连通性,确认返回非 000

免费获取 Codex 配置 →

通过 TeamoRouter 稳定接入 Codex、Claude Code、Gemini CLI。

准备好接入了吗?登录控制台 · 购买额度 · 创建 API Key,三步即可开始。
Codex 连接 OpenAI 超时怎么办?国内网络故障排查指南 · TeamoRouter