
CLIProxyAPI 一处凭证 metadata 的裸读被一条带栈的生产崩溃报告追上,而两张在评审的补丁只锁住了 Claude 那几处;另附 sub2api 缓解 overload 的改动已进 main 未发版、codex2api 拒收 configuration_update 的现状与处置。
strings.go:1093、classification.go:147、conductor_refresh.go:402、conductor_refresh.go:412、types.go:1107、selector.go:833。1
sdk/cliproxy/auth/classification.go 第 113–151 行:上半段 authHasOAuthMetadata 逐个 key 调 authMetadataString,下半段第 141 行的函数体内,第 145 行是一次裸的下标读取,第 147 行才做 TrimSpace;整个文件里这条路径没有任何互斥。(classification.go) strings.go 那层取决于编译时的 Go 版本)。对不上的是 HasValidAccessToken:它在报障人的二进制里位于 types.go:1107,而 v8.0.40 的这个函数在第 1187 行、v8.0.39 在 1126 行、v8.0.38 在 1103 行。6refreshAuthForRequestAtEpoch 先把当前凭证 Clone() 一份,刷完再作为新对象发布回去;PrepareRequestAuth 同样是先 Clone() 再改,改完才回到管理器。7auth.Metadata 里连写六个键,中间没有别的保护。8
internal/runtime/executor/antigravity_executor_auth.go 第 127–146 行:第 134 行判断 map 是否为空,第 137 行写 access_token,第 139、141、143、144、145 行接着写 refresh_token、expires_in、timestamp、expired 与 type,没有一把按凭证的锁包住这六行。(antigravity_executor_auth.go) *Auth 有没有被两个 goroutine 同时拿着。*Auth 才够得着。1 报障人的原话是高并发下「可以经验性复现」。authMetadataString 与 Clone 本身,而不是再补一个 provider。internal/auth/claude、claude_executor_*、helps/claude_credential_identity.go。classification.go、types.go 的 Clone、conductor_refresh.go 那三个读函数,一个没动。报障人点名要泛化的,正是这三处。codex_cli_rs。 v0.2.17 里 CodexDefaultOriginator 还是 codex-tui;main 上这个常量等于 CodexCLIOriginator,旧 TUI 配置会被同时改写 originator 与 UA 首段。13
c5b8112 的 backend/internal/service/openai_gateway_upstream_errors.go 第 196–232 行:第 198 行定 openAIRequestScopedRetryMaxDelay = 8 * time.Second,第 206–211 行依次读六个来源,第 227–228 行超过上限就压回 8 秒。(openai_gateway_upstream_errors.go) configuration_update,用来改变后续轮次的推理强度。本地校验的白名单里没有这个类型,请求在转发前就被拒成 400。
api/validation.go 第 699–731 行:白名单最后一条是第 718 行的 image,第 719 行合上 map;第 734 行的判定只要 itemType 非空且不在表里,就返回 invalid_input_type。(validation.go) reasoning.effort 提到顶层。18| 处境 | 今天做什么 | 依据 |
|---|---|---|
| 跑标准代理、没写插件 | 风险只在「同一份凭证被多协程共享」;不必今夜升级,但把实例版本与崩溃日志对齐 | conductor_execution.go |
| 自己把执行器嵌进服务 | 交给执行器前自己 Clone() 一份,别把同一个 *Auth 分给多个协程 | antigravity_executor_auth.go |
| 写插件、多路复用同一凭证 | 同上;这条是栈上那条读唯一能被打断的地方 | classification.go |
| 等修复 | 盯 #6907 与 #6909,看维护者是否把锁下沉到 authMetadataString 与 Clone | PR #6909 |
| 等 sub2api 缓解 overload | 等下一版;v0.2.17 没有这三处改动 | PR #8305 |
用 codex2api 且客户端会发 configuration_update | 先在测试实例上把该类型加进白名单,再上线上 | validation.go |
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
github.com
github.com
status.openai.com
status.cloud.google.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.