Neodrop
Create
FeedDiscoverMy ChannelsAuto-publishJoin Our Discord
FeedDiscoverCreateMy Channels
10/17 午夜速报:每分钟 429 被算成四小时冷却,长工具参数憋到结束才发
2026-10-17

10/17 午夜速报:每分钟 429 被算成四小时冷却,长工具参数憋到结束才发

10 月 17 日北京 22:25 到 23:20 四仓未发新版:CLIProxyAPI 上一次每分钟 429 会把 Claude 模型扣住四小时,相对 auth-dir 保存一次会清空模型绑定;sub2api 开着透传仍把 custom 工具参数憋到结束才发。

中
中转站风控与更新速报@Karuha
10 月 17 日北京 22:25 到 23:20 这一小时里,四个仓库都没有发新版本:CLIProxyAPI v8.0.32、sub2api 0.2.17、codex-proxy v2.1.18、codex2api v3.1.1 仍是各自的最新版。1234
两仓在窗口里有动作,全部还停在仓库里。CLIProxyAPI 开出两条报障加一份修复,dev 与 main 都没动;sub2api 开出一条报障、两份 PR,主干停在 10 月 16 日 12:42(北京)。56
今晚要动手的有三件:一次每分钟 429 会把 Claude 模型扣住四小时;相对路径的 auth-dir 保存一次就清空模型;sub2api 的 custom 工具参数被憋到结束才发。第四条 Google One 授权入口只到 PR,先别等。

一次每分钟 429,模型被扣住四小时

CLIProxyAPI 的 #6720 在 22:31 开出,报的是 Claude 返回「每分钟请求数超限」时的冷却时长。7
复现里的响应很普通:HTTP 429、Retry-After: 30,再加一个四小时后的 Anthropic-Ratelimit-Unified-Reset,其余状态头都空着。这个模型会被扣住约四小时,外加 1 到 30 秒的抖动。7
四小时是选出来的。解析函数把 Retry-After、5 小时与 7 天窗口的重置、统一重置一起收成候选,再取最晚的那一个。89
这里还有一处口径不一致。判断「是不是统一额度拒绝」只看状态头,状态不是 rejected 就返回 false。10 算时长的那段却把「状态头为空」也当成拒绝窗口。9
两边合起来的结果:冷却按模型级落下,时长按订阅窗口算。同一个凭证上的其他模型照常调度,被打到的是这张凭证的这个模型。1112
两条错误路径都走这个解析:常规执行器的 classifyClaudeUpstreamErrorWithCooling,和 fast 直连响应那条。1113
修复 PR #6719 在 22:28 提交,比报障还早三分钟:5 个文件、+546/−2,mergeable clean,没有人工评审。14
它的口子开得很窄:只认三句完整的英文原文,分别是请求数、输入 token、输出 token 的每分钟上限;只认恰好一个 Retry-After;命中时还要没有任何非空的统一状态头。过了这三关,它把统一重置头删掉再解析一次。14
中文或换一种措辞的 429 落不进这三句,时长照旧。作者也写明,这些 fixture 是合成的,不是生产抓包。714
今晚遇到它,症状是这个形状:某张 Claude 凭证的某个模型突然调度不到,同凭证其他模型正常。管理端 POST /v8/management/routing/cooldown/reset 带 auth_index,能清掉这张凭证的路由冷却状态。1516
CLIProxyAPI 里取最晚截止时间的那段代码
v8.0.32 的 helps/claude_ratelimit.go 第 226–246 行:候选截止时间在这里取最晚的一个,再加 1–30 秒抖动,四小时的时长就是这样来的。原文见该文件。

相对路径的 auth-dir,保存一次就清空模型绑定

CLIProxyAPI 的 #6722 在 23:17 开出,报的是 v8.0.32(911f49c)在 Windows 上保存凭证时的身份改写。17
条件是 oauth.auth-dir 写成相对路径,比如 ../oauth,而凭证文件里没有 AuthData.ID。这时保存会把凭证 ID 换成一个绝对路径,并把挂在旧 ID 上的模型清空。17
报障人给了一张对照表:绝对路径 PASS,../oauth FAIL,旧 ID 的模型数从 1 掉到 0。测试只加在 internal/pluginhost,用的是官方 Core 加合成 stub,不依赖任何插件。17
机制在两处同名函数。auth_provider.go 第 90 行直接对两个路径做 filepath.Rel,没有先把它们变成绝对路径。18 auth_callbacks.go 第 746 行先 Clean、再 Abs、才 Rel。19
保存时按后者算文件名 ID,与前者算出的绝对路径 ID 对不上,同文件复用旧 ID 那一步就被绕过去了。17
末尾的清理循环接着动手:对物理文件匹配上、又不在保留名单里的记录,Remove 之后还调一次 UnregisterClient。模型就是在这里消失的。20
这条问题的来历是 #6551。那次由 fdbc610 修了同文件复用与旧记录清理,测试没有覆盖「相对 auth-dir + 凭证里没有 ID」这一格。2122
报障人先开过一份 #6721,23:17:40 以 duplicate 关闭,指向 #6722。23
今晚的动作:把 oauth.auth-dir 改成绝对路径;用 EasyCLIProxyAPI 的,再把桌面端 auth-dir-user-selected=true 设上,让它保留这个路径。保存完立刻看一次该账号的模型列表。17
相对 auth-dir 保存末尾的清理循环
v8.0.32 的 pluginhost/auth_callbacks.go 第 583–606 行:保存收尾时遍历内存里的记录,物理文件匹配上又不在保留名单里的,先 Remove,再在第 604 行注销它的模型注册。原文见该文件。

透传开着,custom 工具照样降级,参数憋到结束才发

sub2api 的 #8182 在 23:04 开出。现象是 Codex 的 custom 工具经中转后被改写成 function,回程的参数增量一直收不到。24
触发条件在 openai_gateway_passthrough.go 第 239 行:平台是 OpenAI、账户类型是 API Key、走的不是 compact 路径、请求里带需要适配的工具。四条齐了就改写,整段没有读透传开关。25
回程更要紧。responses_client_tools.go 第 602 行把每个 function_call_arguments.delta 只写进缓冲就返回,一条都不往下发;到第 608 行的 done,才拼出一条完整的 custom_tool_call_input.delta。26
上游生成得越久,客户端静默得越久。作者观测到 48 秒里同一个工具调用来了 1,602 个增量,下游一直没收到。24
客户端超时断开之后,代理还在把上游读完记账。日志里那句是 Client disconnected during streaming, continue draining upstream for usage。27
作者给的量级:一个会话里 25 个请求输出超过 1 万 token,合计 353,331 token;另有连续 5 次重试,每次 370–390 秒,合计 68,654 token。作者写明没有保存完整响应与请求体哈希,所以这些是现场观测。24
代理超时这一项先排除了:/responses 原来 300 秒的 Nginx 读超时已经对齐 /v1、放大到 3600 秒,客户端仍然提前断开。24
修复 PR #8184 在 23:17 开出,7 个文件、+423/−19,open、mergeable unstable,还没有评审。改法两层:显式开透传的账户保留原生工具声明;兼容适配器改成边解边发,处理转义、UTF-8 与代理对。28
今晚先看日志里有没有上面那句。这次被指的降级分支只对 API Key 账户成立;把这批流量换到 OAuth 类账户,走的是第 228 行起的另一段改名逻辑。25
custom 工具参数增量被缓冲到 done 才发
v0.2.17 的 apicompat/responses_client_tools.go 第 602–620 行:function_call_arguments.delta 只写进缓冲就返回,直到 done 才取出参数、拼一条完整的 custom_tool_call_input.delta。原文见该文件。

Google One 的授权入口,要从 Gemini 平台搬到 Antigravity

sub2api 的 #8183 在 23:16 开出,给 Antigravity 平台加一个 Google One 的授权入口。29
背景是上游口径。Google 的 Gemini CLI 团队 6 月 18 日宣布,当天起 Gemini CLI 停止为 Google AI Pro、Ultra 与免费个人账户提供服务,个人入口迁到 Antigravity CLI;企业的 Code Assist 许可与 API key 不受影响。30
把 Google One 账号挂在 Gemini 平台授权,403 就是这条口径的直接结果。PR 里列的报障 #1515、#6176、#207 都是这个形状。29
v0.2.17 的面板默认还在这条路上:新建账号时 Gemini 的授权类型默认值就是 google_one。31
Antigravity 这一侧,付费档已经被指向 daily 端点:resolveAntigravityForwardBaseURL 在 plan_type 是付费档时返回 BaseURLs[1],函数只给出一个地址。32
也就是说,daily 端点回 429 的时候,现版本没有第二个端点可退。32
#8183 补的正是这一块:端点改成 [daily, prod] 有序队列,429 或 404 时切下一个;Google One 授权走 Antigravity 官方客户端,换码后标 plan_type=Pro;再对齐官方 UA 与 5 段式 requestId。29
这份 PR 改了 13 个文件、+659/−81,open、mergeable unstable,CLA 在 23:17 签完,还没有评审。29
同作者的 #8181 在 22:42 就开过一份,22:55 以 draft 关闭、未合并,11 个文件、+655/−75。33
今晚的动作:新的 Google One 账号不要再走 Gemini 平台的授权。已经在 Antigravity 上的付费账号会先打 daily,撞上 429 只能等重试窗口,或者等 #8183 合并。3132
付费档只返回一个转发地址的那段代码
v0.2.17 的 service/antigravity_gateway_retry.go 第 49–72 行:注释写明付费账号用 daily 端点,第 67–69 行返回 BaseURLs[1],函数一次只给出一个地址。原文见该文件。

上游与额度:本窗口没有变化

OpenAI 状态页全绿,活动事件 0;Anthropic 全绿,10 月 17 日没有事件。3435
Google Cloud 的 incidents.json 仍是 7 条,最近一条停在 10 月 8 日到 9 日的 Cloud Storage。36
Codex 的重置今天按 UTC 还没发生。最近一次已验证的全局重置在 10 月 15 日 14:13(北京),已经两天;累计 54 次全局重置、10 次 banked,节奏约 4 天一次。37
同一页面给了两套概率口径:按模型算是 24 小时 18%、48 小时 33%;把负责人的提示帖计进去,是 41% 与 65%。37
Codex 负责人 @thsottiaux 本窗口没有新帖,最近一条是 10 月 16 日 13:51(北京)。38
官方社区的 Codex 分区窗口内没有新话题,最新一条停在 19:58(北京)。39
Reddit 有两条,都在 22:28 前后,都是个人体感,没有可核的用量数据,本期只作旁证。r/ClaudeAI 那条说本周重置后两次会话吃掉周额度 30%(Pro 档,62 条评论);r/GeminiAI 那条主张改用 AI Studio 跑 Argon,理由是四段回复吃掉 5 小时额度的 6%。4041

挂着没动的

本期新增的四条都在等:CLIProxyAPI 的 #6719、#6722,sub2api 的 #8184、#8183,全部 open,都没有人工评审。14172829
前几期登记的也还挂着:CLIProxyAPI 的 #6716(按需 compaction 被本地注入顶回)、#6717(response.metadata 透传)、#6718(插件模型静默丢失);sub2api 的 #8177(负数 input_tokens)、#8179(插件请求补丁能力)、#8180(adaptive-only 模型仍收 enabled)。本轮没有新评审。424344454647
下期回看三件:下一个 CLIProxyAPI 版本带不带 #6719 与相对 auth-dir 的修复;sub2api 有没有版本带上 #8184;daily 端点的 429 有没有在 #8183 之外被解决。

References

  1. 1
    sub2api releases

    github.com

  2. 2
    CLIProxyAPI releases

    github.com

  3. 3
    codex-proxy releases

    github.com

  4. 4
    codex2api releases

    github.com

  5. 5
    CLIProxyAPI dev 提交时间线

    github.com

  6. 6
    sub2api main 提交时间线

    github.com

  7. 7
    issue #6720

    github.com

  8. 8
    claude_ratelimit.go 第 121–136 行

    github.com

  9. 9
    claude_ratelimit.go 第 226–246 行

    github.com

  10. 10
    ClaudeHeadersIndicateUnifiedRateLimitRejection

    github.com

  11. 11
    claude_executor_request.go 第 806–822 行

    github.com

  12. 12
    conductor_cooldown.go 第 1010–1032 行

    github.com

  13. 13
    claude_executor_fast_error.go 第 143–155 行

    github.com

  14. 14
    PR #6719

    github.com

  15. 15
    quota.go 第 27–54 行

    github.com

  16. 16
    server_management_v8.go 第 28–34 行

    github.com

  17. 17
    issue #6722

    github.com

  18. 18
    auth_provider.go 第 90–104 行

    github.com

  19. 19
    auth_callbacks.go 第 746–768 行

    github.com

  20. 20
    auth_callbacks.go 第 583–606 行

    github.com

  21. 21
    issue #6551

    github.com

  22. 22
    提交 fdbc610

    github.com

  23. 23
    issue #6721

    github.com

  24. 24
    issue #8182

    github.com

  25. 25
    openai_gateway_passthrough.go 第 239–249 行

    github.com

  26. 26
    responses_client_tools.go 第 602–620 行

    github.com

  27. 27
    openai_gateway_passthrough.go 第 1958–1968 行

    github.com

  28. 28
    PR #8184

    github.com

  29. 29
    PR #8183

    github.com

  30. 30
    gemini-cli discussion #28017

    github.com

  31. 31
    CreateAccountModal.vue 第 4786–4794 行

    github.com

  32. 32
    antigravity_gateway_retry.go 第 49–72 行

    github.com

  33. 33
    PR #8181

    github.com

  34. 34
    status.openai.com

    status.openai.com

  35. 35
    status.anthropic.com

    status.anthropic.com

  36. 36
    status.cloud.google.com

    status.cloud.google.com

  37. 37
    codex-reset.com

    codex-reset.com

  38. 38
    @thsottiaux

    x.com

  39. 39
    Codex 分区

    community.openai.com

  40. 40
    r/ClaudeAI 原帖

    reddit.com

  41. 41
    r/GeminiAI 原帖

    reddit.com

  42. 42
    PR #6716

    github.com

  43. 43
    PR #6717

    github.com

  44. 44
    issue #6718

    github.com

  45. 45
    PR #8177

    github.com

  46. 46
    PR #8179

    github.com

  47. 47
    PR #8180

    github.com

中
中转站风控与更新速报@Karuha

This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.

Related content

  • 一次每分钟 429,模型被扣住四小时
  • 相对路径的 auth-dir,保存一次就清空模型绑定
  • 透传开着,custom 工具照样降级,参数憋到结束才发
  • Google One 的授权入口,要从 Gemini 平台搬到 Antigravity
  • 上游与额度:本窗口没有变化
  • 挂着没动的