7d4c47ec0c
## 修复摘要 Close #187 Issue #187 的根因是:API Key/provider-proxy 模式使用隔离 `CODEX_HOME`,其中没有 ChatGPT `auth.json`;Codex app-server 默认启动 remote-control 后,会在 `desired_state=Unknown` 时每约 1 秒重试认证,形成持续的认证日志循环。 本 PR 的最终修复是启动级禁用,而不是单纯屏蔽日志: - API Key 和 provider-proxy 会话在启动 Codex app-server 子进程前设置 `CODEX_INTERNAL_APP_SERVER_REMOTE_CONTROL_DISABLED=1`,使 remote-control 从启动时即处于 `desired_state=Disabled`。 - 删除此前握手后调用 `remoteControl/disable` 的方案;真实 smoke 证明该 RPC 在无 ChatGPT 登录态时本身会返回 `remote control requires ChatGPT authentication`,无法阻止认证循环。 - 真实 AuthBridge 登录态不设置该变量,保持原有 remote-control 行为。 - API Key 子进程额外设置 `RUST_LOG=warn`,仅收敛剩余预期噪音,不承担修复职责。 - 更新 Unix fake app-server fixture、JSON-RPC 响应 ID 序列和凭据边界回归测试。 - 同步更新技术方案,明确启动环境变量、认证边界和验证结论。 ## 真实 smoke 使用临时 API Key、隔离 `CODEX_HOME` 和 Codex `0.150.0-alpha.8`: - 未设置启动变量时:出现 `remote control requires ChatGPT authentication`,并持续输出 `Reloading auth` / `Reloaded auth`。 - 设置 `CODEX_INTERNAL_APP_SERVER_REMOTE_CONTROL_DISABLED=1` 后:状态为 `desired_state=Disabled`,5 秒观察窗口内不再出现认证重试循环,仅剩少量启动/退出生命周期日志。 - `--disable remote_control` 与 `-c features.remote_control=false` 未达到同等效果。 ## 验证 - `cargo test --bin genarrative-ai-game-creator-shell codex_app_server`:36 passed,1 ignored,0 failed - `cargo check --bin genarrative-ai-game-creator-shell`:通过 - `rustfmt --edition 2021 --check src/agent/codex_app_server.rs`:通过 - `npm run ai-game-creator-shell:typecheck`:通过 - `npm run check:encoding`:通过 - `git diff --check`:通过 Windows 本机不会执行 Unix-only fake app-server 分支;相关 fixture 已更新,交由 Linux CI 覆盖。真实 smoke 只验证启动与认证循环,没有执行模型请求。 安全说明:临时 API Key 仅用于本次隔离 smoke,未写入仓库、提交或 PR;测试完成后应立即撤销/轮换该 Key。 --------- Co-authored-by: 段舒康 <kdletters@qq.com> Reviewed-on: http://192.168.35.82/git/GenarrativeAI/Genarrative/pulls/205 Co-authored-by: 董羽秦 <suzmii@qq.com> Co-committed-by: 董羽秦 <suzmii@qq.com>