Codex 报「Selected model is at capacity. Please try a different model.」:原因与 处理
「Selected model is at capacity. Please try a different model.」(所选模型已满载,请换一个模型)是 Codex 给 server_is_overloaded 错误码的固定提示。按 openai/codex 源码(rust-v0.163.0,2026-10-17 核对),服务端返回带这个错误码的 HTTP 503,或者流式响应以这个错误码失败时,Codex 就显示这句话。它不是额度用完:额度类的提示以「You’ve hit your usage limit」开头,或者以其他说法写明用量上限、工作区的 credits 或消费上限。看到这句提示时,Codex 对这个错误能做的重试已经做完了,所以稍后重发,或者用 /model 换一个模型。
这句 提示是 什么 意思
这句话是 Codex 自己的固定文案。按 openai/codex 源码(rust-v0.163.0,2026-10-17 核对),Codex 在两处识别 server_is_overloaded 错误码:HTTP 503 响应的 JSON 正文里的 "error": {"code": "server_is_overloaded"},以及流式响应里的 response.failed 事件。不管服务端随错误码附带什么消息,Codex 都改为显示「Selected model is at capacity. Please try a different model.」,所以「换一个模型」是 Codex 的建议,不是服务端的。429 限流、额度用完和 HTTP 500 各有各的提示,见下方常见问题。
Codex 已经替你 重试过 什么
按同一份源码,Codex 在显示这句提示之前,可能已经在两层做过重试:
- HTTP 层:HTTP 503 和其他 5xx 一样会被重试,最多 request_max_retries 次(文档默认 4 次)。这一层从不重试 429。
- 采样循环(Codex 每轮发起模型请求的那层循环):HTTP 层重试完之后,只有服务端给出了重试时间(Retry-After)时,Codex 才会再重试这个错误,最多 stream_max_retries 次(文档默认 5 次;内置的 OpenAI provider 走 WebSocket,回退到 HTTPS 后会重新计数),等待期间可能打印 Reconnecting... 提示;服务端没给重试时间,这一轮就直接结束。
- 流式响应里:由 response.failed 事件报告的过载不经过 HTTP 层重试。只有这个失败事件本身带着重试时间时,Codex 才会重试;承载这条流的 HTTP 响应头里的 Retry-After 不算数。
- OpenAI 的 Codex 更新日志(2026-10-17 核对)里,Codex CLI 0.161.0(2026-10-07)这一条写的是:「Responses retries and WebSocket-to-HTTP fallback honor server retry guidance, reducing premature failures during overload.」
接下来 怎么办
稍等片刻再重新发送同一条消息:出错的这一轮已经结束,这一轮里 Codex 已经完成的操作(比如改过的文件)会原样保留。如果同一个模型反复报这句话,就照它说的换一个模型。按 OpenAI 的 Codex 模型文档(2026-10-17 核对),在交互式 CLI 会话里用 /model 切换模型或调整推理强度;启动 Codex 时也可以用 --model 或简写 -m 指定模型,codex exec 同样适用。想让之后的新会话都用另一个模型,改 ~/.codex/config.toml 顶层的 model 行。在脚本里调用时,按有上限的次数、逐步拉长等待时间重试,不要对着这个报错死循环。走 Router One 时,只能换成模型目录里有的模型,并且它在 /models 上的模型页要列出 POST /v1/responses,也就是 Codex 调用的端点。
codex --model <model-id> # 用另一个模型启动 Codex codex exec -m <model-id> "<prompt>" # 非交互运行同样适用
Router One 在这里能做 什么
Router One 不承诺容量。某条线路返回可重试的错误时,如果存在其他提供同一精确模型的健康线路,Router One 可以改用它重试;你请求的模型 ID 不会改变,这也不是零停机保证。没有可用线路时,请求仍会返回错误,由 Codex 报告给你,这时有上限地退避重试,或换一个模型。想知道某次请求的结果,按时间和模型在控制台 → 日志里查找:有记录的请求会显示状态码和错误信息。如果某个模型持续失败,把时间、模型以及(有记录时)请求 ID 发邮件到 support@router.one。
常见 问题
「Selected model is at capacity」是额度用 完了吗?
不是。按 openai/codex 源码(rust-v0.163.0,2026-10-17 核对),额度用完有自己的提示:以「You’ve hit your usage limit」开头,或者以其他说法写明用量上限、工作区的 credits 或消费上限;配额或组织、项目的支出限额耗尽则显示「Quota exceeded. Check your plan and billing details.」。「Selected model is at capacity」只说明服务端返回了 server_is_overloaded 错误码。
它和「exceeded retry limit, last status: 429 Too Many Requests」是一回事吗?
不是。那条报错表示 Codex 已经停止重试某个 429:按 openai/codex 源码(rust-v0.163.0,2026-10-17 核对),HTTP 层从不重试 429,采样循环也只在响应给出重试时间时才重试。那条报错该查什么(包括控制台 → 日志),见 Codex 429 报错排查页(https://router.one/zh/codex-exceeded-retry-limit)。
Codex 显示「We’re currently experiencing high demand, which may cause temporary errors.」,是同一个 错误吗?
不是。按 openai/codex 源码(rust-v0.163.0,2026-10-17 核对),这句是 Codex 给 HTTP 500 响应的提示。对 500,Codex 在两层都会按退避重试,服务端没给重试时间也照样重试,所以看到它时,这些重试同样已经用完。处理方式一样:稍后重发;同一个模型反复出现,就换模型。
能让 Codex 多重试一会儿吗?
可以,但有上限。按 Codex 的配置参考文档(2026-10-17 核对),request_max_retries(默认 4)和 stream_max_retries(默认 5)都写在 ~/.codex/config.toml 的 [model_providers.<id>] 块里。按 openai/codex 源码(rust-v0.163.0),对这个错误,stream_max_retries 只在服务端给出重试时间时才起作用。调大之后,遇到 HTTP 503 时 Codex 可能会多试一阵再显示这句提示;流式失败只有失败事件本身带着重试时间才会多试。无论哪种,都不会因此多出容量。
Router One 会在 模型 过载时 自动换 成别的 模型吗?
不会。Router One 保持你请求的模型 ID 不变。某条线路返回可重试的错误时,如果存在其他提供同一精确模型的健康线路,Router One 可以改用它重试;这既不是容量承诺,也不是零停机保证。想换模型,在 Codex 里用 /model,或改 ~/.codex/config.toml 的 model 行。这类重试怎么工作,见 LLM 故障转移页面(https://router.one/zh/llm-fallback)。
我在 国内用 Codex,这是 网络 问题吗?
不是。这句提示对应的是服务端响应里的错误码,说明请求已经拿到了回应;网络问题在 Codex 里是另外的报错,比如 Codex Responses API 页面讲到的 stream disconnected 系列。Router One 的端点在中国大陆可直连、无需 VPN,config.toml 的写法和在其他地区完全一样。