
非流式请求回的是一整段 SSE、CLIProxyAPI 的用量账本只记出站、v8.0.40 会把 $ref 约束改松:本期给出三条的判据、代码位置与今天就能做的处置。
$ref 约束改松的 schema 缺陷。stream: false,回来的头是 Content-Type: text/event-stream,body 以 event: response.created 开头。invalid character 'e' looking for beginning of value。Accept: application/json 也没用。stream 被改成 true 之后才去读它reqStream = gjson.GetBytes(body, "stream").Bool()7。reqStream 走流式转发,把 SSE 原样交给客户端,聚合那一步一次都没被调用。
openai_gateway_passthrough.go 第 168–192 行:第 174 行先做 OAuth 规范化,第 181 行才读 stream——读的是规范化之后的 body,所以 reqStream 对每个非 compact 的透传请求都是 true。7handlePassthroughSSEToJSON,把事件流拼回一份 JSON8。response.incomplete 或 response.cancelled 收尾时,它返回 false。于是整段原始 SSE 被当响应体写回去,contentType 还照抄了上游那份 text/event-stream。
openai_gateway_passthrough.go 第 2438–2470 行:第 2445 行先把上游响应头整份写入,第 2449–2453 行在拼不出终局时把 contentType 退回上游值,第 2456 行用这个类型把 SSE 原文写出去。8/chat/completions 转成 /v1/responses 发给 sub2api。10 月 22 日有个请求的工具参数失控,上游推了约 12.8 万个 response.function_call_arguments.delta,以 response.incomplete 收尾。mergeable_state 是 clean11。stream 标志,只有 compact 请求强制非流式;两个 SSE 转 JSON 的处理函数在写响应体之前显式声明 application/json。mergeable_state 是 unstable12。补评论的人建议二选一,合 #7979 就够。/v1/chat/completions。/v1/responses 回 429 model_cooldown(他跑的是 v8.0.23)。这条请求在主日志和错误日志里都在,下游的用量消费端一条记录都没有。
sdk/cliproxy/auth/home_result.go 第 12–32 行:第 15–16 行注释写明这条零 token 记录只服务「没经过执行器 UsageReporter 的上游 401 尝试」,其余在选号阶段发生的拒绝没有对应物。15$ref 上的约束改松了,dev 已经修掉$schema 声明 draft 2020-12,$defs.A 是 type: string, minLength: 5;属性 x 写 $ref 指向它,同时带一个 minLength: 1。{"x":"a"} 应当不合法19。minLength: 1。目标上的 5 被兄弟的 1 盖掉了。
internal/util/gemini_schema.go 第 1090–1116 行:第 1097–1102 行把 $ref 目标的键写进 out,第 1103–1111 行再把引用对象的兄弟键写进同一个 map,同名键被后者覆盖。2029150a2,三个文件 +539/−48,说明第一行是 fix(schema): preserve Gemini $ref sibling constraints,末行 Closes: #689721。pending 换成 Fixed。单到今天仍是 open。$schema 的工具 schema,别指望中转把它完整送到上游。关键约束在工具侧或客户端侧再校验一次。stream: false 时看一眼回来的 Content-Type;是 text/event-stream 就说明你踩在 #7978 上,先给网关加响应体上限。$ref 与兄弟约束的工具 schema,在 v8.0.40 上会被改松;要么等下一版,要么自己在工具侧再校验一次。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
json-schema.org
github.com
github.com
status.openai.com
status.anthropic.com
status.cloud.google.com
github.com
github.com
github.com
discuss.ai.google.dev
community.openai.com
codex-reset.com
opentherank.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.