【Bug已解决】codex: rate limit 429 / Too many requests / RPM exceeded — CodeX CLI 速率限制解决方案

【Bug已解决】codex: rate limit 429 / Too many requests / RPM exceeded — CodeX CLI 速率限制解决方案
【Bug已解决】codex: rate limit 429 / Too many requests / RPM exceeded — CodeX CLI 速率限制解决方案1. 问题描述CodeX CLI 频繁请求时报 429 速率限制错误# 速率限制 $ codex 分析代码 Error: 429 Too Many Requests You exceeded your current RPM limit (60). Please retry after 30s. # 或 TPM 限制 $ codex 分析大型文件 Error: 429 Rate limit exceeded TPM limit reached. Current usage: 150000/100000 tokens per minute. # 或并发限制 $ codex Error: 429 Concurrent requests exceeded Maximum 5 concurrent requests allowed. # 或 CI/CD 批量运行 $ for task in task1 task2 task3; do codex --print $task --max-turns 5 done Error: 429 Too Many Requests # 连续运行触发速率限制这个问题在以下场景中特别常见短时间内发送大量请求CI/CD 批量运行使用低 Tier 的 API Key并发请求过多Token 用量超过 TPM 限制没有设置请求间隔2. 原因分析核心原理拆解CodeX 发送请求 → OpenAI 检查速率 ↓ RPM/TPM/并发超过限制 ↓ 429 Too Many Requests原因分类表原因分类具体表现占比RPM 超限每分钟请求太多约 35%TPM 超限Token 用量超约 30%CI/CD 批量连续运行约 20%并发限制同时请求多约 10%低 Tier限制严格约 5%3. 解决方案方案一添加请求间隔最推荐# 步骤 1CI/CD 中添加间隔 for task in task1 task2 task3; do codex --print $task --max-turns 5 sleep 5 # 5 秒间隔 done # 步骤 2或使用随机间隔 for task in tasks; do codex --print $task --max-turns 5 sleep $((RANDOM % 10 5)) # 5-15 秒随机 done # 步骤 3或使用 --auto-approve 配合间隔 codex --print --auto-approve task1 --max-turns 5 sleep 10 codex --print --auto-approve task2 --max-turns 5方案二配置自动重试# 步骤 1配置重试 cat ~/.codex/config.json EOF { maxRetries: 3, retryDelay: 30000, retryOn429: true } EOF # 步骤 2CI/CD 中重试 for i in 1 2 3; do output$(codex --print task --max-turns 5 21) if echo $output | grep -q 429; then echo Rate limited, retry $i... sleep $((i * 30)) # 30, 60, 90 秒 else echo $output break fi done方案三使用更便宜的模型# 步骤 1使用 gpt-4o-mini限制更宽松 codex --model gpt-4o-mini task # 步骤 2gpt-4o-mini 的 RPM/TPM 限制更高 # Tier 1: gpt-4o-mini RPM 500, gpt-4o RPM 60 # 步骤 3简单任务用 mini复杂任务用 4o codex --model gpt-4o-mini 修复拼写 codex --model gpt-4o 重构架构方案四升级 API Tier# 步骤 1查看当前 Tier # https://platform.openai.com/account/billing # 步骤 2不同 Tier 的限制 # Tier 1: RPM 60, TPM 10000 # Tier 2: RPM 500, TPM 60000 # Tier 3: RPM 1000, TPM 150000 # Tier 4: RPM 2000, TPM 300000 # 步骤 3充值升级 Tier # Tier 2 需要充值 $50 # Tier 3 需要充值 $100 # 步骤 4验证 codex方案五使用多个 API Key# 步骤 1为不同任务使用不同 Key # 开发: Key A export OPENAI_API_KEYsk-proj-KEY_A codex # CI/CD: Key B export OPENAI_API_KEYsk-proj-KEY_B codex --print task # 步骤 2轮换使用 KEYS(sk-proj-KEY_A sk-proj-KEY_B sk-proj-KEY_C) for i in 0 1 2; do export OPENAI_API_KEY${KEYS[$((i % 3))]} codex --print task$i --max-turns 5 sleep 5 done方案六减少 Token 消耗# 步骤 1减少上下文 codex 分析 src/index.js 的前 50 行 # 步骤 2限制输出 codex --max-tokens 2000 分析代码 # 步骤 3使用 --print 模式 codex --print task --max-turns 5 # 步骤 4避免长对话 codex # 新会话不用 --continue4. 各方案对比总结方案适用场景推荐指数难度方案一请求间隔CI/CD⭐⭐⭐⭐⭐低方案二自动重试自动化⭐⭐⭐⭐⭐低方案三便宜模型降低限制⭐⭐⭐⭐⭐低方案四升级 Tier长期⭐⭐⭐⭐低方案五多 Key分散⭐⭐⭐⭐中方案六减少 Token节约⭐⭐⭐⭐低5. 常见问题 FAQ5.1 RPM 和 TPM 的区别RPM: Requests Per Minute每分钟请求数TPM: Tokens Per Minute每分钟 Token 数5.2 各 Tier 的速率限制TierRPMTPM16010K250060K31000150K42000300K5.3 429 后等待多久重试通常等待 30-60 秒。响应头中的Retry-After指定等待时间。5.4 gpt-4o-mini 限制更高吗是的。gpt-4o-mini 的 RPM/TPM 限制通常是 gpt-4o 的 5-10 倍。5.5 如何升级 Tier在 https://platform.openai.com/account/billing 充值。Tier 2 需要 $50。5.6 多个 Key 能分散限制吗可以。每个 Key 有独立的 RPM/TPM 限制。使用不同 Key 轮换。5.7 CI/CD 中如何避免 429codex --print task sleep 10 # 或配置 retryOn429: true5.8 并发请求限制OpenAI 限制并发请求数。避免同时开多个 CodeX 实例。5.9 如何查看当前用量在 https://platform.openai.com/account/usage 查看。5.10 排查清单速查表□ 1. CI/CD: sleep 5-10 秒间隔 □ 2. 配置 maxRetries retryOn429 □ 3. 使用 gpt-4o-mini限制宽松 □ 4. 升级 Tier充值 $50 □ 5. 多 Key 轮换使用 □ 6. --max-tokens 减少 Token □ 7. --print 模式比交互省 □ 8. 避免同时多实例 □ 9. 429 后等 30-60 秒 □ 10. platform.openai.com/account/billing 查看 Tier6. 总结根本原因速率限制最常见原因是 RPM 超限35%和 TPM 超限30%Token 用量最佳实践CI/CD 中添加sleep 5-10间隔配置retryOn429: true自动重试模型选择使用gpt-4o-miniRPM 限制 5-10 倍于 gpt-4o处理简单任务Tier 升级在 https://platform.openai.com/account/billing 充值升级Tier 2 需要 $50最佳实践建议CI/CD 中使用sleep间隔 多 Key 轮换 gpt-4o-mini避免 429 限制故障排查流程图flowchart TD A[429 速率限制] -- B{是 CI/CD?} B --|是| C[添加 sleep 间隔] B --|否| D{RPM 超限?} C -- E[配置 retryOn429] E -- F[codex 验证] D --|是| G[使用 gpt-4o-mini] D --|否, TPM| H[减少 Token] G -- I[mini RPM 500 vs 4o 60] I -- F H -- j[--max-tokens 2000] j -- F F -- K{还 429?} K --|否| L[✅ 问题解决] K --|是| M[升级 Tier] M -- N[充值 $50 到 Tier 2] N -- O{还 429?} O --|否| L O --|是| P[多 Key 轮换] P -- Q[KEYS 数组循环] Q -- R[sleep 5 间隔] R -- F L -- S[CI/CD: sleep retry mini] S -- T[✅ 长期方案]