
这一小时四仓零发版,但 dev 上动了两处:CLIProxyAPI 把 Antigravity 模型发现搬进 sdk/auth,合并 17 分钟后补上克隆与 nil 守卫;sub2api 开出一张把异常流收尾改成 502 的补丁。两条都还没进发行版。
sdk/auth,合并 17 分钟后又在 dev 上补了两处保护。sub2api 开出一张还没合的单,专门修「上游流异常收尾却被写成正常结束」。| 北京时间 | 动作 | 现在的位置 |
|---|---|---|
| 10:46 | CLIProxyAPI PR #7238 开出,把 Antigravity 模型发现下沉到 sdk/auth | 2 提交、3 文件 +586/−1881 |
| 11:01 | #7238 合并进 dev(cbf0188) | 未随任何发行版发出1 |
| 11:03 | sub2api PR #8510 开出,修异常流被写成正常结束 | open、基于 main、6 文件 +465/−9、零评论2 |
| 11:18 | dev 打补丁 0e02765:克隆模型 ID、保留 nil 未知目录 | 2 文件 +27/−13 |
daily-cloudcode-pa.googleapis.com 的 /v1internal:fetchAvailableModels,这个号到底能用哪些模型。这段逻辑原先住在 sdk/cliproxy/antigravity_models.go,v8.0.53 里那个文件 891 行。
sdk/auth/antigravity_models.go 第 30–50 行:探测状态只有成功、鉴权错误、瞬时错误三态;第 42 行那句注释把「未知」与「确认没有」在类型层面分开。4AntigravityProbeStatus 只有三态:成功、鉴权错误、瞬时错误。探测不再靠「有没有拿到模型」这种布尔判断。ModelIDs 上那行注释:Nil means unknown; an empty non-nil set is an authoritative empty catalog. 未知目录是 nil,真的一个模型都没有是空集。range,都能返回长度为 0。这行注释是要求所有调用方把它们当两种结果处理。
sdk/cliproxy/antigravity_models.go 第 329–345 行:只有「成功且 ModelIDs 非 nil」才覆盖缓存;其余保留上次成功并拉长抖动退避。5status == antigravityProbeStatusSuccess && hints.ModelIDs != nil。少一个都不写。0e02765 的标题是 fix(auth): clone parsed model IDs and preserve nil unknown catalogs,2 文件 +27/−1,真正的代码只动 6 行3。NormalizeAntigravityModelID 的返回值改成 strings.Clone(trimmed)。第二处是 BuildPersistedAntigravityCapabilityHints 开头多了 if hints.ModelIDs == nil { return nil }。
sdk/auth/antigravity_models.go 第 214–228 行:第 215 行注释写明「未知目录永远不会被当作权威空集落盘」,第 217–219 行就是那道 nil 守卫。6ojson(同 PR 的第二笔提交)7。8 << 20。encoding/json,每条模型名都是新分配的字符串,上面那条驻留问题在它身上不成立。606e667a 停在 dev,不在 v8.0.53 里。11:31 有人在该单下面问「什么时候能升到含这个修复的版本」,暂时没人回9。Fixes #8505,基于 main,6 文件 +465/−9,一个提交,零评论、未合并2。MALFORMED_FUNCTION_CALL 只打一行日志,然后照常调 emitFinish,而 emitFinish 的 stopReason 默认是 end_turn。
Finish() 里对异常收尾与截断的两处提前返回,第 189–191 行才是正常补终局事件。10MALFORMED_FUNCTION_CALL、UNEXPECTED_TOOL_CALL、TOO_MANY_TOOL_CALLS 三个值归为异常收尾。STOP 但只有思考内容、没有可见输出,标成 thinking_only_response。finishReason 为空且没有任何可见输出,标成 upstream_stream_truncated。前两类在 Finish() 里直接返回,不再补终局事件。
malformed_function_call 额外标成请求级瞬时故障,并把下一账号动作设成 stop。11RetryableOnSameAccount: true,同号重试或换号都行。malformed_function_call 这一种额外标 RequestScopedTransient 并把下一账号动作设成 stop。作者的理由是这类坏请求不该拿去污染下一个号。max_tokens,也没把 #7899 的空流与请求历史改动一起带进来。4a4a83ee5 上都失败、打上补丁后通过。MALFORMED_FUNCTION_CALL 那一支只到日志为止。Finish() 在拿不到 finishReason 时也会走一次 emitFinish("")。| 仓库 | 当前发行版 | 发行时间(北京) | 主干位置 |
|---|---|---|---|
| CLIProxyAPI | v8.0.53 | 11-03 20:27 | main 与 tag 同为 01b24f1f,dev 到 0e02765c16 |
| sub2api | v0.2.19 | 10-28 18:16 | main 为 4a4a83ee17 |
| codex-proxy | v2.1.23 | 11-03 19:35 | dev 有未发布提交18 |
| codex2api | v3.1.3 | 11-04 10:22 | main 为 20e4b399,上一期已覆盖19 |
end_turn 的会话里,服务端日志有没有同时出现 [Antigravity] MALFORMED_FUNCTION_CALL。两者同现就是 #8510 描述的那条。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.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.