
CLIProxyAPI 把 Fable 专属 429 的冷却从整条凭证收到单个模型,也顺手扔掉那串六天的 retry-after;修只在 dev,v8.0.52 还没有,文里给今天就能做的三步与各自代价。
| 你现在跑的 | Fable 周额度用完之后 | 今天该做什么 |
|---|---|---|
| v8.0.52 及更早 | 整张 Claude 凭证被锁到周重置,Opus 同刻报 All credentials for model claude-opus-5-5 are cooling down4 | 开模型级冷却挡连带、清已写入的冷却、把 Fable 挪出共享凭证 |
dev 0130d6f 及之后 | 只扣 Fable 这一档,1 秒起、逐次翻倍、30 分钟封顶 | 客户端自己退避,别在 429 上立刻重灌 |
retry-after: 546534 也不再被当成恢复时刻。isOverageOrFableOnlyRejection 的结果,一边喂给作用域判定,一边喂给时长解析。ClaudeHeadersIndicateUnifiedRateLimitRejection 的最后一行就是取反它6。status7d == "",而这次 7d 明确写着 allowed。retry-after 被采信。546534 秒是 6 天 7 小时 49 分,约 6.32 天。
if !overageOnlyRejection 是 Retry-After 的闸门,第 288 行同一条件闸住 7d_oi 的恢复头,第 297–300 行同一条件先合成 unifiedRejected,第 300 行再闸住 unified 恢复头。三处都过不去时,候选截止为空、函数返回 nil。仓库 router-for-me/CLIProxyAPI,v8.0.52 的 internal/runtime/executor/helps/claude_ratelimit.go7rejected,就按 5h 未耗尽算。
unifiedStatus == "rejected",以及 Anthropic-Ratelimit-Unified-5h-Utilization 这个头不存在。仓库 router-for-me/CLIProxyAPI,分支 dev 的提交 0130d6f,文件 internal/runtime/executor/helps/claude_ratelimit.go9Retry-After 时才套。修复后这条路没有 Retry-After,所以第一次真的只等 1 秒。classifyClaudeUpstreamErrorWithCooling 拿到判定结果后,走 credentialScoped: true 还是 false。开关 model-level-cooling 也是在这里拦一道。
!modelLevelCooling 且统一拒绝头成立时,才把这次 429 标成凭证级(第 850 行);否则落到第 856 行的 credentialScoped: false,也就是模型级。仓库 router-for-me/CLIProxyAPI,v8.0.52 的 internal/runtime/executor/claude_executor_request.go12Retry-After 都在旁边被算了一遍并随错误带下去。rejected,仍然整张锁,函数第 54 行直接返回 false。upstream.claude.model-level-cooling: true,默认是 false13。
claude: 段,第 456–457 行写明语义:把额度冷却限制在请求的那个模型上,而不是冷却整条凭证、牵连同族模型;第 458 行是默认值 false。仓库 router-for-me/CLIProxyAPI,v8.0.52 的 config.example.yaml13POST /v8/management/routing/cooldown/reset14。auth_index 从 GET /v8/management/credentials 的 files[] 里取,同一个响应里的 unavailable 与 next_retry_after 就是现场16。next_retry_after 指向 11 月 8 日 23:00 前后,就是被那串 546534 秒压着。routing.cooldown.save-cooldown-status 默认 false,注释写明此时冷却状态只在内存里19。claude-fable-5 与 claude-fable-5-1 从共享凭证上摘掉:oauth.excluded-models 或单独给一个 auth 文件。两个 id 在模型目录里是各自的条目2021。Quota.Reason 从 credential_quota 变成 quota,只对这一族生效。auth Quota.Reason = credential_quota; want non-credential_quota,另一条写 fable model cooldown was %v; want exponential backoff (<10m), not ~6d weekly reset1。All credentials for model claude-opus-5-5 are cooling down4。429 ... model=claude-fable-5-1 ... rate_limit_error 之后紧跟一行 parsed Anthropic rate limit reset headers。{"scope":"credential","reason":"credential_quota","retry_at":"2026-11-08T15:00:11Z"}
{"scope":"model","model_key":"claude-fable-5-1","reason":"quota","retry_at":"2026-11-08T15:00:11Z","http_status":429}
{"scope":"model","model_key":"claude-opus-5-5","reason":"credential_quota","retry_at":"2026-11-08T15:00:11Z"}2026-11-08T15:00:11Z 换成北京时间是 11 月 8 日 23:00。codex-reset 的信号位自 10-22 起就是 false,最新一条帖是 11-02 23:51 的闲聊,不算承诺28;累计 71 次、中位间隔 2.9 天、最长 68 天29。GET /v8/management/credentials,找 next_retry_after 落在 11 月 8 日 23:00 附近的 Claude 号。POST /v8/management/routing/cooldown/reset,body 带它的 auth_index;顺手把 upstream.claude.model-level-cooling 打开,下次只扣 Fable。github.com
github.com
github.com
github.com
support.claude.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
status.openai.com
status.anthropic.com
status.cloud.google.com
codex-reset.com
opentherank.com
reddit.com
discuss.ai.google.dev
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.