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>
文档总览
本目录只把当前实现依据、公开契约和仍在维护的专题合同作为入口。代码、当前文档与项目记忆冲突时,以当前代码和最新专题文档为准;未列入下表的材料不作为实现依据。
必读入口
当前产品与平台
- 当前产品与工程约束:现役入口、账号钱包、UI 和后端分层。
- 平台入口与玩法链路:只描述现役平台壳与旧模板退役边界。
- 外部 OpenAPI 与 API Key 接入方案
- External v1 OpenAPI:公开 HTTP 契约唯一机器可读来源。
AI 游戏创作与 Agent Runtime
- AI 游戏创作智能体 App 实施计划:当前 DirectProject、受控语义工具、UI workflow、资源和运行时合同。
- 项目开发工作台 PRD:当前工作台页面和验收边界。
- 立项策划 Agent(Fast GDD):当前策划入口、审批和恢复合同。
- GameAgent 资源自由画板与快速编辑
- UI 工作流资源桥接与 Runtime 执行
- UI 编辑器 Godot 容器布局
- UI 编辑器子节点显示规则
- UI 编辑会话模块边界
图片画布与媒体
- 客户端素材创作无限画布阶段一合同
- 图片画布结构化持久化与迁移回滚
- 编辑器生成结果原子提交与幂等重放
- 画板音乐生成入口:BGM/SFX 共享视图、独立业务规则和当前发布门禁。
- 画布 Agent 对话面板
- 画布 Agent 会话消息存 OSS
- 编辑器模型定价配置
后端、运维与测试
- BgFilter 受限资源调度方案
- SpacetimeDB 连接池取消安全
- Jenkins 容器预览部署控制面
- 浏览器内 AI Web 工程沙箱预览
- AI Web 工程 Runner 安全模型
- npm workspaces 统一依赖边界
- React 组件测试准则
- 宿主壳能力统一协议
- Expo React Native 与 Tauri 宿主壳方案
维护规则
- 当前文档只保留稳定合同、公开契约和仍在推进的专题;一次性计划、实施记录和已关闭实验完成后删除或融合,不再长期堆积。
docs/project-memory/shared-memory/只保存长期有效的概览、决策、流程和踩坑;plans/、todos/仅保存仍开放且有明确下一门禁的事项。- 修改
/api/external/v1必须同步 OpenAPI 和契约测试;修改 SpacetimeDB schema 必须同步 migration、表目录、绑定和 schema 检查。 - 旧模板、旧公开作品、旧运行态和旧后端路线不因历史源码或数据表仍存在而恢复入口。
- 新增 Markdown 使用
【标签名】中文标题-YYYY-MM-DD.md命名;不要把个人配置、密钥、Token、日志或构建产物写入文档。