限流需通过http 429状态码或响应体关键词确认,结合/models接口验证classification字段;insufficient_quota属额度耗尽需等待刷新,rate_limit_exceeded属请求过快需降速;禁用无退避的裸重试。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当你在使用 Codex CLI 或集成 Codex 的脚本时突然收到报错,无法确定是网络问题、密钥失效,还是服务端主动限制了你的请求频率,必须快速锁定是否为接口限流——因为限流的应对方式与其他错误完全不同,误判会导致重试加剧拥堵、额度进一步耗尽。
看 HTTP 状态码和响应体关键词
执行失败命令后,先检查终端输出中是否包含明确的状态码和错误信息:
如果看到 HTTP 429 Too Many Requests,或响应体里出现 rate_limit_exceeded、Rate limit exceeded、You've hit your usage limit,基本可确认是限流。
注意:429 是限流最直接证据;而 401、403、502、超时等需排除其他原因后再考虑是否关联限流(例如 Key 失效后反复重试也会触发限流)。
用 /models 接口快速验证当前账号状态
这一步能绕过具体模型调用,直连鉴权与配额系统:
第一步:确保已设置 OPENAI_API_KEY 环境变量且有效(echo $OPENAI_API_KEY 应输出 sk- 开头的 51 位字符串);
第二步:运行诊断命令:node llm-api-doctor.mjs --base-url https://api.openai.com/v1;
第三步:观察输出中的 classification 字段——若为 rate_limit,且 retryAfterSeconds 有数值(如 60),说明当前处于限流窗口内,需等待该秒数后再发起请求;
第四步:若 classification 显示 auth 或 model_not_found,则不是限流问题,应转向密钥或模型配置排查。
配置 OpenClaw 多提供商认证与 OpenAI Codex OAuth 备用方案,实现自动模型切换,适用于多 OpenAI Codex 账户设置。
区分两类“额度不足”报错
方法一:报错含 insufficient_quota
这是 Codex 独立配额体系耗尽,属于滚动 5 小时额度清零,不是瞬时并发限流。它通常伴随 HTTP 402 或无状态码的纯文本提示,且 retryAfterSeconds 为空。此时降低请求频率无效,必须等待配额刷新或充值 Credits。
方法二:报错含 rate_limit_exceeded 或返回 429 状态码
这是瞬时请求密度超标,可能由单次任务并发过高、循环重试未退避、或多个进程共用同一 Key 导致。此时调整请求节奏即可缓解,无需充值。
【关键区别】:insufficient_quota 是“没额度了”,rate_limit_exceeded 是“太快了”。前者等时间,后者降速度。
检查本地是否在无意识高频重试
如果你写了自动重试逻辑,尤其像下面这种写法:
async function requestWithRetry() { try { return await callApi(); } catch (e) { return requestWithRetry(); } }
它会在每次失败后立刻重试,遇到 429 时会形成雪崩式请求洪峰,让限流持续更久。真正的退避机制必须引入随机延迟和指数退避,例如首次等 1 秒,第二次等 2 秒,第三次等 4 秒……
现在立刻检查你调用 Codex 的代码里有没有裸递归重试、sleep(0) 循环、或未读取响应头中 Retry-After 字段的行为。










