
Codex 上游回的一页 HTML 403 会被本地记成凭证被拒、同一张凭证恢复后仍要等 30 分钟;本期给出三条判据与清冷却的接口,另附 sub2api 负数 max_tokens 静默 200、v8.0.48 显式档位被换成预算两条代码事实。
auth_unavailable。max_tokens 静默返回 200;v8.0.48 把 Antigravity Claude 5.5 的显式档位换成了数字预算;OpenCode 压缩后的检查点在 WebSocket 走 HTTP 上游时不被识别。
internal/runtime/executor/codex_executor_terminal.go 第 313–333 行:第 326 行 errCode := statusCode,只有配额与容量两类会被改写成 429,函数里没有任何 HTML 判断。2{"error":{"code":"auth_unavailable","message":"no auth available"}},带一个 Retry-After,值是剩余冷却秒数。3StatusMessage4;payment_required,看到这个标签别先当成欠费。5newCodexStatusErrWithHeadersAndCooling 只认两类错误:isCodexUsageLimitError 与 isCodexTransientCapacityError。errCode 保持传入的状态码。403 就这样原样成为一个 403 的 statusErr。disable-cooling 时,它给的恢复时刻是 now.Add(30 * time.Minute)。
sdk/cliproxy/auth/conductor_cooldown.go 第 1096–1112 行:第 1103 行 case 401, 402, 403:,第 1107 行 next := now.Add(30 * time.Minute)。6#7134 加了一条前置判断 IsCodexHTMLForbidden。它只看 403,只看正文前 64 字节,去掉 BOM、转成小写后要求以 <html 或 <!doctype html 开头,且后面紧跟分隔符。7upstream_html_rejection,重试提示 5 秒。上游若给了更长的 Retry-After,用上游那个。auth_unavailable,先看 Retry-After 是不是整 30 分钟。POST /v8/management/routing/cooldown/reset,body 写 {"auth_index": "..."}。空值回 400,找不到回 404。8routing.cooldown.disable-cooling。它把全局冷却一起关掉,真 429 也不再记。9invalid_request_error。这是报障人给的对照,本刊没有在官方文档里找到负数取值的专门说明。-1 当「不限」的老习惯会静默生效,输出长度与账单都不受控;参数写错也不会有人告诉你。
backend/internal/pkg/apicompat/chatcompletions_to_responses.go 第 58–78 行:第 69 行的条件是 maxTokens > 0,负值进不去,上限就不写进 max_output_tokens。11-1 当「不限」。claude-opus-5-5-high 与 claude-sonnet-5-5-high,请求里带 thinkingLevel: "high",到上游变成 thinkingBudget: 24576。low 变 1024,medium 变 8192。14thinking 只有 min、max、zero_allowed、dynamic_allowed,没有 levels。
internal/registry/models/models.json 第 4086–4122 行:claude-opus-5-5-high 与 claude-sonnet-5-5-high 的 thinking 段只有四个预算字段。15ConvertLevelToBudget 换掉,模式也从 level 改成 budget。17supportsAdaptiveThinking 的模型,档位与预算不是一回事。你以为在给 high,实际给的是 24576 这个上限。#7133 目前只有报障,没补丁。报障人给了本机复现命令,也说明流式与非流式都成立,Gemini 模型不受影响。<conversation-checkpoint> 里发回来。function_call 被带着重发,没有对应的 output,上游回 No tool output found for function call ...。18#7132 给 shouldReplaceWebsocketTranscript 加了一个判定:response.create、没有 previous_response_id、输入只有 user/developer 消息、checkpoint 标签成对且 <summary> 有序。19| 仓库 | 当前版本 | 发布时间(北京) |
|---|---|---|
| CLIProxyAPI | v8.0.48 | 10 月 30 日 22:37 |
| sub2api | v0.2.19 | 10 月 28 日 18:16 |
| codex-proxy | v2.1.21 | 10 月 28 日 04:48 |
| codex2api | v3.1.2 | 10 月 28 日 04:40 |
explicit_reset_claim 是 false。3031/v1beta/models 返回里的 quotaInfo。#7134 会不会被合、合了要等哪个 tag;#8460 会不会被接,/v1/responses 上的负数上限有没有同样问题(本刊没核)。#7133 什么时候给两个条目补上 levels。上游那句「未来两天」会在哪一天兑成能观测到的重置。github.com
github.com
patch-diff.githubusercontent.com
github.com
github.com
github.com
patch-diff.githubusercontent.com
github.com
github.com
github.com
github.com
github.com
patch-diff.githubusercontent.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
codex-reset.com
reddit.com
reddit.com
reddit.com
reddit.com
reddit.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.