
CLIProxyAPI v8.0.37 在 15:54 发布,把空文本块与 Gemini 终止流用量两项修复、只读 SIWC 状态接口一起带出;同一小时里 SIWC 凭证被发去 alpha search 回 401、带 agent_message 的子代理请求回 400,另附 codex2api 旧 7d 冷却残留的处置顺序。
agent_message 的请求被上游拒掉、回 4006。两张都还是 open、零评论、没有对应 PR,v8.0.37 里也没修。| 这一版带来的 | 落在哪 | 你要做什么 |
|---|---|---|
| 空文本块与纯空白块不再发给 Anthropic,缓存打点跳过它们 | claude_openai_request.go、claude_openai-responses_request.go、translator/common/cache_control.go | 无动作,升上去就少一类 400 |
| Gemini 流在终局事件之后被断开时,用量不再归零 | gemini_executor.go 与新增的 helps/gemini_stream_terminal.go | 无动作;对账口径会变,历史数据不会回补 |
| 只读 SIWC 状态接口 | GET /v8/management/oauth/siwc/status、GET /v8/management/credentials/siwc/status | 见下一节,先把它接进你的巡检 |
| Vertex 按模型、按凭证指定 openapi 路由 | vertex_compat.go 新增 openapi 与 openapi-location 两个可选键 | 不写就保持自动挑选,写了才生效 |
| 插件可以按凭证取模型 | host.auth.models 回调 | 只有自研插件用得到 |
| 三笔翻译层性能合并(#6828、#6829、#6831) | 每流只解析一次请求元数据 | 无动作 |
name(或 id)与 auth_index,两个都不给回 400,凭证不存在回 404,目标不是 Codex 凭证回 400,返回体只有 {"status": "off" | "valid" | "invalid"};整个过程读本地凭证与运行时拒绝记录,不触发刷新,也不打上游12。
CLIProxyAPI v8.0.37 的 internal/api/handlers/management/oauth_siwc.go 第 137–180 行:第 145–152 行依次接受 name、id、auth_index、authIndex 四个查询参数,第 153 行两个都缺时回 400,第 166–169 行按凭证名或索引定位。parallel_tool_calls: false」的修复(16:01)14,以及 16:26、16:30 两次合并。它们都不在 v8.0.37 里。/v1/responses 正常,/v1/alpha/search 回 401,错误体是 rejected_by_access_enforcement / no_matching_rule。把同一账号还原成原始 Codex OAuth 再打一次,回 200;两次日志里选中的都是同一张凭证。https://chatgpt.com/backend-api/codex/alpha/search15,发请求走 AuthManager.NewHttpRequest,它转手调 PrepareHttpRequest 交给执行器16。PrepareRequest 第一句就是取凭证17。
CLIProxyAPI v8.0.37 的 internal/runtime/executor/codex_executor_request.go 第 62–81 行:第 66 行的 codexCreds(auth) 是搜索请求与对话请求共用的同一处取凭证,第 71 行把它写成 Authorization: Bearer。/v1/alpha/search 的 500 当成账号故障、把健康号置成 error19。这次的问题出在挑哪一套令牌上,账号本身没问题。/v1/alpha/search 这条路指到没开 SIWC 的凭证上,或者干脆让用搜索的客户端走另一组;别去重试,同一张凭证重试一万次还是 401。升级到 v8.0.37 也不解决,这一版没动这条链。code: subscription_sharing_unsupported_capability,param: input。同一张凭证把这一项换成普通 message,就回 200;最小复现里没有加密内容,也没有搜索调用。真实会话里的表现是子代理先失败,父会话收到子代理的失败回执(也是一段 agent_message)之后跟着失败。agent_message 只有在模型被判定为兼容模式时才会被改写20。
CLIProxyAPI v8.0.37 的 internal/runtime/executor/helps/codex_multi_agent_v2.go 第 231–241 行:第 237 行的 if isCompat 才是改写入口,非兼容模型的 payload 在第 240 行原样返回。isCompat 从模型配置读:先看凭证解析出的模型条目,再看 API key 侧的兼容标记21。原生 Codex 模型这两处都不命中,取值是 false。is-compat: true24。同一个字段在 Claude 段管的是「保留空签名的 thinking 块」,在 Codex 段会把 agent_message 改写成便携消息——整条翻译路都会切到兼容模式,先拿一张凭证试。/responses 连续 429,一直到 15:54 手动「重置账号状态」并刷新用量之后才恢复 200;恢复后读到的周窗口重置时间是 10 月 28 日 09:45,已用 51%。FreshDispatchUsageLimited 先查用量窗口,再单独查「账号仍在用量类冷却里」25。
auth/store.go 第 2013–2036 行:窗口判定在第 2029 行,冷却判定在第 2035 行——Status == Cooldown、未到期、原因属于用量类,三个条件同时成立就继续拒。主干上的同名函数与这里逐行相同。ClearUsageLimitCooldownSince 先改内存、再按「账号 + 原因 + 截止时间」删数据库,数据库那步只记错误日志、返回值仍是 true27。库里的行没匹配上,你也看不出来。POST /api/admin/accounts/:id/reset-status,再 POST /api/admin/accounts/:id/usage/refresh,最后看 codex_5h_* 与 codex_7d_* 是否已经跟官方窗口对齐。重置只清运行时冷却与用量缓存,过载暂停的账号会保留用量条28。usage_logs,没有一条 status_code=429,本地调度拒绝的 429 不会进使用统计。这类故障只能从容器日志里捞。b04eb97d(10 月 12 日),比主干 1bdfc85c(10 月 20 日)旧;上面两段判断在主干上写法一致,升级不会自动改变行为。4942b2afc7,三个文件 +15/−1:把 response.queued 与 response.metadata 加进共享的元数据白名单2930。意义在上一期那件事上:输出前的降载帧得以继续走重试与切号,而不会被提前当成交付。发行版仍是 v0.2.17,要自己构建才拿得到。gpt-6-astra 会被解析成输出 12.5、缓存输入 5032。拿同步出来的价格配下游网关,缓存读取会按 $50/百万 token 计,Codex 那类高缓存命中的请求能放大到几十倍。v3.1.1 的解析器就是按下标取33,没合并前先核对一下自己面板上的模型单价。parallel_tool_calls 修复会进哪个 tag,还没有答案。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
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.openai.com
status.anthropic.com
status.cloud.google.com
codex-reset.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.