
整个号池被 Codex 周额度打空时,CLIProxyAPI v8.0.51 回的是带超长 Retry-After 的可重试 429,客户端因此停不下来;这期拆开它的三处成因、客户端为什么不在那里停,以及一张想改成终局的补丁还差什么。
Retry-After 是 506177 秒。3selector.go 里,modelCooldownError.Headers() 无条件写 Retry-After,值是 ceil(resetIn)。resetIn = earliest.Sub(now),按最早恢复的那张凭证算。第 528–541 行。Retry-After: 10640,约 2 小时 57 分。handlers_errors.go 第 127–129 行写进响应,第 131 行才去判 passthrough 开关。5code: model_cooldown,不带 usage_limit_reached。客户端拿到的全部信息就这些。
Retry-After: 506177 换算约 140 小时,旁边是当事人贴的 trimmed 响应体,该单到今天仍是 open。3error.type == usage_limit_reached。model_cooldown 里没有这个字段。Retry-After 又给了几十小时,于是等。closeWithoutError。8model_cooldown。type: usage_limit_reached、resets_at、retryable: false、limit_window_minutes。code 仍是 model_cooldown,外层形状不变。Retry-After,改成 X-Should-Retry: false 与一组 x-codex-{Primary|Secondary}-*。IsUsageLimitReachedError,改发 error 事件,带上同样的头。
ntindle/CLIProxyAPI @ pr/codex-usage-limit-refusal 的 sdk/cliproxy/auth/usage_limit_refusal.go 第 113–156 行:第 128 行只查 error.type 一种信封,第 147–155 行按 1440 分钟分 Primary / Secondary 拼头。9error.type 一种信封。执行器那边读三种。10error.type、type、body.error.type,第 515–517 行依次都读。
internal/runtime/executor/codex_executor_terminal.go 第 504–534 行:第 515–517 行依次读三种信封,下方第 527 行起是 parseCodexRetryAfter,它同样在 error、整 body、body.error 三处找重置时间。10Manager.Execute 走另一条路。fmt.Errorf 包一层后,payload 取自外层 Error(),不是 JSON。rate_limit_error。.diff 读到的仍是单信封版本,与「已修订」对不上。所以两条都摆出来,不下结论。1#6647,十月中旬开的,23 个文件,11-01 17:31(北京)重基到当前 dev。2#7184 多了 x-codex-* 头与 WS 错误事件。code 与 error.type、响应头的 Retry-After。usage_limit_reached。model_cooldown 配一个巨大的 Retry-After,就是撞上了。supports_websockets 关掉不改变结果,HTTPS 那条路一样带着这个头。#6647 已经重基,两张都还开着,什么时候合、合哪张,没人给时间。#7184。要接受三个缺口:单信封、Home 模式、包装错误。X-Should-Retry: false 并删掉 Retry-After。X-Should-Retry、reset_seconds、Retry-After 的量级。github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
status.openai.com
status.claude.com
status.cloud.google.com
codex-reset.com
opentherank.com
community.openai.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.