API key 模式下每个 app-server 陷入 1Hz 认证重试死循环 #187
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Issue 1(主):API key 模式下每个 app-server 陷入 1Hz 认证重试死循环
现象
每个 codex app-server 子进程,从启动到进程结束,每约 1.01 秒稳定输出一组三条日志:
来源:
login/src/auth/manager.rs:2319、:2456,app-server-transport/src/transport/remote_control/websocket.rs:609。没有退避,没有次数上限,进程活多久转多久。
根因
三个条件叠加,缺一不可:
1. API key 模式下隔离 home 里根本没有 auth.json
resolve_game_creator_codex_app_server_credential(codex_app_server.rs:803)在llm.apiKey非空时返回AppDataKey。而prepare_isolated_game_creator_codex_home(:979)只在AuthBridge分支写 auth.json:所以 ChatGPT 登录态永远不会出现,重试条件永远不满足。
2. 全新 home 里没有已持久化的远程控制偏好
codex app-server 启动时无条件拉起 remote-control 子系统,第一步是解析已持久化的偏好。查残留 home 的
state_5.sqlite:空表 → 无偏好可读 → 必须回服务端解析。
3. 上游明确不支持 API key 解析该偏好
codex.exe二进制内的字符串(app-server-transport/src/transport/remote_control/auth.rs附近):于是循环闭合:解析失败 → reload auth(重读那个不存在的 auth.json)→
changed: false→ sleep ~1.01s → 重试。同机 A/B
%TEMP%下 31 个留有日志的残留隔离 home,按有无auth.json分组,循环记录数完全分离:Falsehome 全部命中循环;22 个Truehome 全部为 0 条。Falsehome 稳定收敛到 2.99–3.08 记录/秒 —— 正好是"每 1.01 秒 3 条",说明这些进程除了这个循环什么也没干。Falsehome 速率更高(8.8–16.6),多出来的是 SSE trace。一处需要说明的取证边界:
True组的 home 全部存活 ≤32 秒,没有长命样本,所以无法直接证明"桥接模式下长期空闲也是 0"。但按 1.5 组/秒计,一个 32 秒窗口本应产生约 48 条循环记录,实测为 0 —— 这个缺失是有意义的。影响
修复方向
目前没有落点可以关掉它:常规 ToolHost 连接压根不写
config.toml——trust_isolated_game_creator_codex_workspace只在workspace_override.is_some()时才调用(codex_app_server.rs:1192)。initialize也只声明了capabilities: { experimentalApi: true }(:1328),没有涉及 remote control。可考虑:给
AppDataKey分支也写一份最小config.toml,把 remote control 关掉(需先确认上游是否提供该开关;二进制里能看到remote_control_enabled落在 state DB,以及一份含remote_control的特性列表,值得先向上游确认配置路径)。顺带可以把日志级别按下来 —— 目前game_creator_codex_cli_minimal_environment(codex_cli.rs:316)env_clear()之后不传RUST_LOG,用的是 codex 自己的默认档位(部分 target 默认 TRACE)。Issue 1(主):API key 模式下每个 app-server 陷入 1Hz 认证重试死循环to API key 模式下每个 app-server 陷入 1Hz 认证重试死循环修复已提交并由 PR #205 跟进:
验证已完成:Rust 定向测试 36 passed / 1 ignored / 0 failed,cargo check、AGC typecheck、编码检查、rustfmt 和 git diff --check 均通过。Windows 本机不编译 Unix-only fixture,Linux CI 仍需执行对应测试;真实模型 smoke 未运行以避免消耗模型调用。
PR:#205(修复 API Key app-server 认证重试循环)
666