Codex调用第三方API响应缓慢的四大原因及对应解决方案:一是代理导致请求绕行,需检查config.toml中的proxy配置并添加direct_domains直连规则后重启;二是DNS解析卡顿,应切换为阿里DNS(223.5.5.5)并刷新本地缓存,同时关闭代理工具的DNS劫持;三是HTTP连接池过小(默认5)与超时过短(connect 5s、read 15s),需修改mcp_client.rs中pool_size为12、connect_timeout为8s、read_timeout为25s并重新编译;四是IPv6临时地址漂移引发TCP丢包,需禁用net.ipv6.conf.{all,default}.use_tempaddr=0。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Codex调用第三方API时响应缓慢,常见于请求未走直连、DNS解析卡顿、连接池复用失效或服务端限流触发重试等待。这类延迟往往在首次请求或空闲后复用连接时尤为明显,且用户感知为“卡住几秒才开始返回”。
检查并强制直连第三方API域名
第一步:确认Codex当前是否通过代理转发第三方请求。运行cat ~/.codex/config.toml | grep -i proxy,若输出含proxy_url或https_proxy字段,说明所有出站请求(含第三方API)正经由代理中转。
第二步:在~/.codex/config.toml中添加直连规则。找到[network]区块,在其下新增一行:direct_domains = ["api.github.com", "api.notion.so", "openrouter.ai"]——请将引号内域名替换为你实际调用的第三方服务地址。
第三步:重启Codex进程。不重启则直连配置不生效,仍会走代理绕行;若使用systemd管理,执行sudo systemctl restart codex;若为前台启动,则Ctrl+C终止后重新运行codex serve。
切换低延迟DNS并刷新本地解析缓存
方法一:临时切换DNS(立即生效)
在终端执行:sudo systemd-resolve --set-dns=223.5.5.5 --set-domain=~.。该命令将系统默认DNS设为阿里公共DNS,避免运营商DNS返回次优IP或缓存过期导致首包延迟。
方法二:手动清空DNS缓存
Linux用户运行:sudo systemd-resolve --flush-caches;macOS用户运行:sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder。这一步必须做,否则旧DNS记录仍会沿用数分钟,新DNS设置形同虚设。
注意:若你使用Clash、Surge等代理工具,需同步在工具配置中关闭“DNS劫持”或启用“Fake IP”模式,否则系统级DNS设置会被代理层覆盖。
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
调大HTTP连接池与超时参数
打开codex-rs/mcp-client/src/mcp_client.rs文件,定位到连接池初始化代码段。
将原连接池大小pool_size: 5改为pool_size: 12。默认5个连接在并发调用多个第三方API时极易耗尽,新请求被迫排队等待空闲连接,造成隐性延迟。
同步修改超时参数:
将connect_timeout: Duration::from_secs(5)提升至Duration::from_secs(8);
将read_timeout: Duration::from_secs(15)提升至Duration::from_secs(25)。【第三方API响应波动大,过短超时会频繁触发重试,反而拉长整体等待时间】
保存文件后,重新编译Codex核心:cargo build --release -p codex-rs。跳过此步则代码变更不会生效。
绕过IPv6临时地址导致的源IP漂移
当系统启用IPv6隐私扩展时,每2–4小时自动更换临时地址。Codex复用已有TCP连接向第三方API发包,但源IP已失效,服务端直接丢弃数据包,客户端收不到ACK,最终触发TCP重传+超时+新建连接,延迟陡增。
执行命令禁用IPv6临时地址:sudo sysctl -w net.ipv6.conf.all.use_tempaddr=0 net.ipv6.conf.default.use_tempaddr=0。
该操作无需重启系统,立即生效。若需永久生效,请编辑/etc/sysctl.conf追加两行配置,再运行sudo sysctl -p加载。

















