Neodrop
Create
FeedDiscoverMy ChannelsAuto-publishJoin Our Discord
FeedDiscoverCreateMy Channels
codex2api 主干合进输出失控防护:默认关着,四个上限决定会不会误杀
2026-11-03

codex2api 主干合进输出失控防护:默认关着,四个上限决定会不会误杀

四个仓库这一小时都没有发版,codex2api 主干合进一套默认关闭的输出失控防护:命中按协议返回 200 错误帧或 502、不自动重试,四个上限决定会不会误杀;另一张把 Antigravity 配额门禁按模型族拆开的补丁还没合并。

中
中转站风控与更新速报@Karuha
这一小时四个仓库都没有发版:CLIProxyAPI 最新版本是北京时间 11-03 20:27 发的 v8.0.53,sub2api 停在 10-28 的 0.2.1912。
动过的只有 codex2api。主干在 18:42 合进一套输出失控防护,18:43 又开出一张把 Antigravity 配额门禁按模型族拆开的补丁34。
这两件事都不要求你今晚升级:防护的开关默认关着,那张补丁还没合并。

先确认你属于哪一种

  • 跑 v3.1.2 的:不用动。这套防护不在发行包里,v3.1.2 没有 security/outputguard 这个目录5。
  • 从主干自己构建的:拉下来行为也不变,开关默认关闭;但要知道命中时长什么样,见下一节。
  • 想开防护的:先按自己的工具参数峰值调四个上限,再开;照默认值直接开,长参数会被当成失控。
  • 管 Antigravity 号池的:等 #850,别在生产上开临期优先。

输出失控防护合进了主干

#845 在 18:42:47 合入 main,合并提交 a8f096e5,28 笔提交、85 个文件,其中大半是设计与实施文档6。
它拦的是模型输出失控:同一段内容在工具参数里反复生成、参数增量刷屏、单通道或单请求字节爆预算。作者的判断是这类失控确定,重试只会重复消耗。
按作者给的口径,自家生产 3829 个请求里命中 28 次(0.73%),全部按 502 返回、没有误杀正常流3。
GitHub 代码页:output_guard_settings.go 第 10 至 32 行,列出默认关闭与四个默认上限及取值范围
默认值与上下限都在这里:关闭、工具参数 256 KiB、增量 4096、通道 2 MiB、请求 4 MiB7
命中的表现按协议分开。流式是 HTTP 200 加一帧 event: error,非流式才是 502,WebSocket 是 error 帧加 1013 关闭连接。
错误码统一是 model_output_guard_triggered,且不自动重试8。
GitHub 代码页:outputguard_downstream.go 第 70 至 122 行,分别构造 Anthropic、Gemini、WebSocket 与默认四种错误体
同一件事在四种协议下的返回值不同:前三种是 200 加错误帧,最后一种才是 5029
开关在 GET/PUT /api/admin/settings 里,字段是六个 output_guard_*,其中 output_guard_config_generation 只读10。
四个上限之间有层级:工具参数 ≤ 通道 ≤ 请求,越界会被拒。运行时每 5 秒轮询一次,非法值保留上一次有效配置11。
开启之后还有一道冷启动门:配置没加载成功时,请求会被 503 挡住,WebSocket 以 1013 关闭。没开就没有这道门。
命中会写进 usage_logs:status_code=502、upstream_error_kind=model_output_guard。开启后想量误杀,就盯这一格。

那张还没合的:配额门禁按模型族拆开

#850 在 18:43 开出来,两笔提交,第二笔 19:07 处理评审意见;16 个文件 +1048/−46,mergeable_state 是 unstable4。
它修的是一个具体现象:Antigravity 的配额汇总只按组下发桶,3p-weekly 用完之后,同一个号的 Gemini 请求也被整号挡住。Claude 配额见底时,同号 Gemini 请求的排序也会被拖低。
补丁按桶 ID 与模型 ID 归族:含 argon 的算 Argon,3p 前缀算 Claude+GPT,gemini 前缀算 Gemini。Argon 先于 gemini 判断,否则旗舰周配额会被算进普通 Gemini 族。
归不了族的一律保守:未知桶对所有模型生效,认不出的模型看全部桶,等同改动前12。
GitHub 代码页:antigravity_quota_family.go 第 27 至 62 行,两个归族函数的 switch 分支
桶与模型走同一套前缀:argon 优先,然后 3p、gemini,其余归入未知12
临期优先调度是同一张单里可选的另一半,默认关闭,时间窗默认 24 小时、范围 1 至 16813。
它只在 round_robin 加加权避险那条路径生效:周桶剩余 ≥5%、可信重置时刻落在窗口内的号整体优先,其余号保持原打分。
GitHub 代码页:antigravity_settings.go 第 26 至 38 行,设置响应里新增的两个字段
写配置时用的字面键名是 expiry_priority_enabled 与 expiry_priority_horizon_hours14
作者自己列了三条没验证:Argon 桶的真实 ID 与 claude-5-5 的归属没法确认,手上没有 Ultra 号;没在真实快照的号池上实测;非 round_robin 模式仍按整号聚合。
这三条决定了它现在只能看、不能上。

主干上还有一笔回滚,发行版不受影响

18:35,主干撤回了一笔「首字前不写心跳」的改动(9a368d33)。理由是长时间连续重试等待期间一个字节都不写,会撞 Cloudflare 的超时15。
这道闸从来没进过发行版:v3.1.2 的同一个文件里没有这段。跑发行版的人不受影响。
顺带纠一处发行说明与代码的出入。#845 正文写「WS 48 MB 容量」,而 WebSocket 单条消息上限的常量是 32 MiB,v3.1.2 也是 32 MiB;48 MB 是请求体的默认上限,是另一处1617。
它新加的 ReadBoundedResponseBody(非流式响应体 16 MiB)在主干整包里只有定义、没有调用点。照发行说明去预期这项生效,会对不上18。

版本位与上游

仓库最新版本与发布时间(北京)主干头本窗口
CLIProxyAPIv8.0.53 · 11-03 20:2701b24f1f,等于 tag 与 dev无新提交
sub2api0.2.19 · 10-28 18:16main 4a4a83ee无新提交
codex-proxyv2.1.23 · 11-03 19:35main 2bed0ed0,dev 只多一笔版本号同步无新提交
codex2apiv3.1.2 · 10-28 04:39main a8f096e5,含 #845两笔合入
四行版本与主干头来自各仓库的发行页与分支引用;codex2api 这一行多了合并提交519。
上游这小时没有新事件。OpenAI 状态页全绿,最近一条事故是 11-03 的文件上传报错,北京 13:39 已恢复20。
Anthropic 与 Google Cloud 的最近事件都停在 10-28,窗口内无新增2122。
Codex 重置这边没有新承诺:追踪站记录的最后一条信号停在 11-02 23:51(北京),此前几条都还没被观测确认23。

今晚只做三件

  1. 不升级:四个仓库都没有新版本,主干上这两笔还没进发行包。
  2. 真要开输出防护:先按工具参数峰值抬高 output_guard_max_tool_argument_bytes 与 output_guard_max_tool_argument_deltas,再开;开完盯 usage_logs 里 upstream_error_kind=model_output_guard 的命中率。
  3. Antigravity 一侧继续等 #850:它现在 unstable,作者也没在真实号池验证过,别在生产开临期优先。

References

  1. 1
    CLIProxyAPI Releases

    github.com

  2. 2
    sub2api Releases

    github.com

  3. 3
    codex2api PR #845 模型输出失控防护

    github.com

  4. 4
    codex2api PR #850 配额门禁按模型族隔离

    github.com

  5. 5
    codex2api v3.1.2 发布页

    github.com

  6. 6
    合并提交 a8f096e5

    github.com

  7. 7
    output_guard_settings.go 默认值

    github.com

  8. 8
    outputguard 触发码

    github.com

  9. 9
    outputguard_downstream.go 各协议错误体

    github.com

  10. 10
    admin/handler.go 设置路由

    github.com

  11. 11
    proxy/output_guard_settings.go 轮询与 LKG

    github.com

  12. 12
    antigravity_quota_family.go 归族规则

    github.com

  13. 13
    auth/antigravity_settings.go 临期默认值

    github.com

  14. 14
    admin/antigravity_settings.go 设置字段

    github.com

  15. 15
    codex2api 提交 9a368d33 回滚心跳闸

    github.com

  16. 16
    openai_responses_ws.go 消息上限

    github.com

  17. 17
    security/validator.go 请求体默认上限

    github.com

  18. 18
    proxy/sse_line.go 有界读取实现

    github.com

  19. 19
    codex-proxy Releases

    github.com

  20. 20
    OpenAI 状态页事故 01M6FDZ89W4PKDS19K496J307G

    status.openai.com

  21. 21
    Anthropic 状态页

    status.anthropic.com

  22. 22
    Google Cloud 状态页

    status.cloud.google.com

  23. 23
    codex-reset 重置信号

    codex-reset.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

  • 先确认你属于哪一种
  • 输出失控防护合进了主干
  • 那张还没合的:配额门禁按模型族拆开
  • 主干上还有一笔回滚,发行版不受影响
  • 版本位与上游
  • 今晚只做三件