
CLIProxyAPI 把上游 Codex 的私有帧 response.metadata 原样转给非 Codex 客户端,严格解析的客户端整轮失败;修这三行的 PR 今早获批,但 v8.0.43 与 dev 都还没带,另有一张同类单挂了九天没合。文里给一分钟判定与三条处置。
response.metadata,CLIProxyAPI 把它原样转给了下游。把 SSE 事件反序列化成封闭枚举的客户端会在这一帧上丢掉整轮,Grok Build 1.0.60 与 1.0.70 报的错里写着 unknown variant 和这个事件名。1curl -N -X POST http://127.0.0.1:8317/v1/responses \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"model":"gpt-6.1-sol","input":"hi","stream":true}' \
| grep -c 'event: response.metadata'Originator,走的就是标准客户端那条分支。unknown variant 与事件名,重试多少次结果一样。这类失败不落在 429 或 5xx 上,看状态码会以为一切正常。response.in_progress 之后插一帧提示词审核标记,里面装的是分类标记,不含生成内容。server_is_overloaded 前面。issue #6856 的抓包把四帧序列写全了:created、in_progress、metadata、error。5response.metadata 与 codex.response.metadata 并排写在同一个 case,注释记着它是因为 #6856 才加进去的。6
internal/runtime/executor/codex_executor_terminal.go 第 508–525 行:第 519 行的 case 把 response.metadata 与 codex.response.metadata、keepalive 并列,第 516–518 行注释写明它夹在 response.in_progress 与 server_is_overloaded 之间,以及当时为什么会把拒绝漏给客户端。stream-bootstrap-buffering 的实例上生效,它管的是撞上过载时能不能换号。帧照样会转给客户端,开关只决定它被按住多久。type 各判一次,命中就把整帧丢掉。3responsesapi. 开头与 response.subscription_usage 恒丢;官方 Codex 客户端提前返回,除 codex.rate_limits 外全留;其余客户端只丢 codex. 开头的事件。response.metadata 落在 codex. 前缀之外,四道闸都留它过去。
sdk/api/handlers/openai/openai_responses_handlers.go 第 141–172 行:第 152 行恒丢 responsesapi. 与 response.subscription_usage,第 157–162 行是官方 Codex 客户端的提前返回,第 165 行只认 codex. 前缀,第 172 行按事件名与载荷类型各调一次。Originator:UA 带 Codex 客户端标记,或 Originator 等于 codex desktop、codex-tui、codex_cli_rs,以及这三个名字带斜杠前缀的写法。7
sdk/api/handlers/openai/openai_responses_handlers.go 第 935–952 行:第 941 行先按 UA 判,第 945–950 行再按 Originator 的三个值与斜杠前缀判。grok-pager/1.0.5 grok-shell/1.0.5 这类写法,落进「其余客户端」那一支,吃到的是全量事件。8keepalive。Grok Build 1.0.5 撞上心跳帧,整轮失败,#5171 当天关成已修。8internal/client/grokbuild,UA 里认 grok-pager 与 grok-shell 两个词。910codex.* 与 responsesapi.*。#6007 报 Codex 执行器把这两类事件漏进 /v1/responses,同月 21 日关成已修,做法就是后来那两道前缀过滤。11codex.,心跳改写认 keepalive。response.metadata 两个特征都够不上,于是从中间漏了过去。
soulmachine:responses-drop-metadata-non-codex 的 sdk/api/handlers/openai/openai_responses_handlers.go 第 150–175 行:第 167 行在 codex. 前缀之外加上 || name == "response.metadata",第 164–166 行的注释写明原因。response.metadata。代价是那个客户端要换模型。86d951cd 构建。payload.filter 删的是请求体里的 JSON 路径,对响应流不起作用;配置文件里没有丢弃响应事件的开关。xhigh,代码里找不到直接对应,先按用户自述记着。github.com
api.github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
status.openai.com
status.claude.com
status.cloud.google.com
codex-reset.com
github.com
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.