
在中国网络环境下使用 Codex CLI 或类似 AI 命令行工具时,可能会遇到以下问题:
Reconnecting…
timeout waiting for child process to exit
长时间无响应
这些问题通常不是 Codex 本身异常,而是因为 CLI 进程无法稳定访问外网 API,导致请求超时、重连或卡住。
本文介绍一种比较干净、推荐的解决方式:
使用
~/.codex/.env文件,只为 Codex CLI 单独配置代理,不影响系统中的其他程序。
以下示例以 macOS 为主。Windows 端亲测也有效,只需要按照相同逻辑找到对应的 Codex 配置目录并写入环境变量即可。
一、核心思路
Codex CLI 启动时会读取以下文件:
~/.codex/.env
这个文件中的配置会作为环境变量注入到 Codex 进程中。
因此,我们可以通过 .env 文件实现:
- 只让 Codex CLI 走代理
- 不影响系统全局环境
- 避免使用
export带来的副作用 - 方便后续修改和维护
简单来说:
.env是给 Codex 单独准备的一份运行环境配置。
二、具体操作步骤
1. 找到或创建 .codex 目录
先进入用户目录:
cd ~
查看是否已经存在 .codex 目录:
ls -a | grep codex
如果存在,可以直接进入:
cd ~/.codex
如果不存在,则创建它:
mkdir -p ~/.codex
cd ~/.codex
2. 创建 .env 文件并写入代理配置
执行以下命令:
cat > ~/.codex/.env << EOF
HTTP_PROXY="http://127.0.0.1:7897"
HTTPS_PROXY="http://127.0.0.1:7897"
ALL_PROXY="socks5://127.0.0.1:7897"
EOF
其中 7897 是本地代理端口,需要根据你的代理软件实际端口进行修改。
例如,如果你的代理端口是 7890,就改成:
HTTP_PROXY="http://127.0.0.1:7890"
HTTPS_PROXY="http://127.0.0.1:7890"
ALL_PROXY="socks5://127.0.0.1:7890"
注意:
- 端口必须和你的代理软件一致
- 不要在等号两侧添加空格
- 引号可以保留,避免特殊字符导致解析问题
3. 验证 .env 是否写入成功
执行:
cat ~/.codex/.env
正常情况下应输出类似内容:
HTTP_PROXY="http://127.0.0.1:7897"
HTTPS_PROXY="http://127.0.0.1:7897"
ALL_PROXY="socks5://127.0.0.1:7897"
如果内容为空,或者端口不正确,需要重新写入。
4. 清理旧的 Codex 进程
这一步很重要。
如果之前已经启动过 Codex,旧进程可能不会读取新的 .env 配置。可以执行:
pkill -f codex
或者直接重启 Codex 应用 / 终端会话。
这样可以避免旧 session 继续沿用未配置代理的环境。
5. 重新启动 Codex CLI
完成以上步骤后,重新运行:
codex
如果代理配置正确,Codex CLI 应该可以正常连接,不再频繁出现重连、超时或长时间无响应的问题。
三、原理说明
.env 文件本质上是一个环境变量配置文件,格式如下:
KEY=VALUE
Codex 启动时会自动加载这些变量。
这相当于你手动执行:
HTTP_PROXY=http://127.0.0.1:7897 HTTPS_PROXY=http://127.0.0.1:7897 codex
但使用 .env 的好处是配置更集中、更稳定,也不会污染整个终端环境。
对比一下两种方式:
| 方法 | 影响范围 | 是否推荐 |
|---|---|---|
export HTTP_PROXY=... | 当前终端或全局 shell 环境 | 不推荐 |
~/.codex/.env | 仅 Codex CLI | 推荐 |
如果只是为了让 Codex 走代理,使用 .env 是更干净的方式。
四、常见问题
1. .env 不生效怎么办?
可以按顺序检查:
- 文件路径是否正确:
cat ~/.codex/.env
- 代理端口是否正确
确认你的代理软件中 HTTP / SOCKS 端口是否真的是7897。 - 旧进程是否已经清理:
pkill -f codex
- Codex 是否重新启动
修改.env后,需要重新启动 Codex 才能读取新配置。
2. 如何判断是不是代理问题?
可以临时用命令行方式强制指定代理启动 Codex:
HTTP_PROXY=http://127.0.0.1:7897 HTTPS_PROXY=http://127.0.0.1:7897 codex
如果这样可以正常使用,但 .env 不生效,通常说明:
.env文件路径不对- Codex 没有读取该文件
- 旧进程没有被清理
- 文件内容格式有误
3. HTTP_PROXY、HTTPS_PROXY 和 ALL_PROXY 都需要写吗?
建议都写。
其中:
HTTP_PROXY:处理 HTTP 请求HTTPS_PROXY:处理 HTTPS 请求ALL_PROXY:作为更通用的代理兜底配置
不同工具或依赖库读取的环境变量可能不同,所以三个都配置可以提高兼容性。
五、总结
这种方法的本质是:
为 Codex CLI 构建一个独立的代理运行环境。
相比直接在终端里使用 export,通过 ~/.codex/.env 配置代理有几个明显优势:
- 不污染系统环境
- 不影响其他命令行工具
- 配置集中,方便维护
- 适合长期使用
- 出问题时更容易排查
如果你在中国网络环境下使用 Codex CLI 时遇到:
Reconnecting…
timeout waiting for child process to exit
长时间无响应
可以优先尝试这种 .env 代理配置方式。

