为什么编程代理对网络更挑剔
网页聊天的一次请求几秒钟结束,断了重发就行。Codex 这类编程代理不同:
- 任务持续时间长:读取仓库、多轮推理、执行命令、再推理,一个任务从几分钟到一小时以上。
- 流量不均匀:模型思考时几十秒没有流量,随后突然发起大请求,容易撞上客户端的空闲断开。
- 失败代价高:断线时任务可能已经改了一半文件,需要人工检查和回滚。
所以“平时用着挺好”的网络,在长任务里可能频繁出问题。下面的清单在每次长任务前过一遍,大约两分钟。
八项检查清单
1. 节点出口地区受 OpenAI 支持
同 Claude 一样,OpenAI 公布了可用地区清单。出口不受支持时表现为拒绝访问,不是网络问题。确认当前节点的实际出口地区在清单内。
2. 命令行的代理已生效
Codex 命令行与 IDE 集成不使用浏览器的代理设置。三种常见做法:
- 设置环境变量
HTTPS_PROXY(示例见下); - 在代理客户端开启系统代理,并确认终端继承了系统代理;
- 开启 TUN / 虚拟网卡模式,让所有流量经过代理。
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
# 验证:下面的请求应当成功返回
curl -I https://api.openai.com/
验证时在同一个终端里执行,不同终端的环境变量可能不同。IDE 内置终端也要单独验证。
3. 客户端不会空闲断开
查看客户端的“空闲超时”“连接保持”类选项。模型思考时可能几十秒没有流量,把空闲超时设为至少 300 秒,或关闭该选项。
4. 晚高峰丢包低于 1%
长任务对丢包的容忍度比短对话低。先在你实际跑任务的时段测几分钟丢包。参考线:低于 1% 可跑长任务,1%–3% 只建议短任务,超过 3% 不要用。
5. 同地区有备用节点并知道怎么切
任务失败后第一件事往往是切节点。提前确认同一受支持地区还有其他节点,并且知道在客户端里怎么切、切换后是否需要重启命令行工具。
6. 电脑不会休眠、网络不会切换
- 关闭自动休眠,笔记本接电源。
- 不要在任务中切换 Wi‑Fi 与有线、开关 VPN,这些都会重置连接。
- 手机热点作为网络时,注意手机本身的省电策略。
7. 分流规则覆盖所有相关域名
如果使用按域名分流,确认 OpenAI 相关域名(API、认证、下载)都走代理。遗漏一个域名的典型表现是:登录正常,任务一执行就失败。最省事的做法是任务期间临时使用全局或 TUN 模式。
8. 知道失败后怎么恢复
- 使用版本控制,任务前提交或暂存,失败后能看清改了什么。
- 把大任务拆成可独立验证的小任务,失败只损失一小段。
- 可能的话,把长任务交给云端执行模式:代码拉取与执行发生在云端,本地网络只负责提交与查看。
三种运行方式的网络依赖
| 方式 | 本地网络参与程度 | 建议 |
|---|---|---|
| 本地命令行 | 全程依赖 | 过完整清单 |
| IDE 集成 | 全程依赖,且 IDE 自身也有网络请求 | 过完整清单,确认 IDE 终端代理 |
| 云端任务 | 仅提交与查看 | 只需第 1、2 项 |
出了问题怎么定位
任务失败时记录三件事:失败时间、当时是否有网络变化(休眠、切网)、网页版当时是否正常。然后按 Claude 连接不稳定的排查顺序 中同样的六步走——两者的排查逻辑一致,只是命令行场景更看重长会话稳定性。
延伸阅读
- 怎么选长会话稳定的服务:AI 用户选择机场时应该关注什么
- 按场景比较方案:按使用场景比较机场方案
- 专题总览:Codex 网络专题