去掉 AGC 对 DirectProject Codex 的原生能力限制

DirectProject 改用 danger-full-access 与 never 审批并直接接受交互请求
开启原生 live web search 并取消 DirectProject feature flag 禁用
移除 Codex 版本审批协议门禁
同步放开 DirectProject 提示词与项目结构 Skill 路径限制
更新内置 Skill 清单指纹、技术方案与决策记录
This commit is contained in:
2026-09-22 19:46:07 +08:00
parent da0df57ebc
commit b2db863ce0
10 changed files with 92 additions and 149 deletions
@@ -9427,3 +9427,11 @@ CI 上 `background_agent_runtime_recovers_stale_running_before_pending_task` 在
- 影响面:`apps/ai-game-creator-shell/src/view/project-development/chat/{conversation/directThreadChat.ts,controller/useDirectThreadChatSubscription.ts,controller/useDirectProjectChatController.ts}``apps/ai-game-creator-shell/tests/{directThreadChat.test.ts,appSurface/chat-composer.suite.ts}`
- 验证:reducer 新增 2 条用例(兜底收口后同名 `turn.started` 不复活且真终态仍能补上结束时间;身份不同的回合不动),appSurface 新增 `stops claiming the turn is running when a failed send left turn.started open`;变异验证:拿掉 controller 里的兜底收口调用后该用例变红(界面仍显示「陶泥儿正在处理」),恢复即绿。
- 边界(未做):根因仍在宿主侧——要在进程内保证开闭配对,应由 Rust 在回合函数退出(含 panic / 任务中止)时补一条终态事件(drop 守卫);本次只做到前端不再跟着说谎。另:兜底收口的回合没有终态时间,仍会落进「`finished` 但拿不到终态时间」那个已知缺口(终态文案要不要藏,见 `DirectProjectTurn.tsx``DirectChatTurnState` 注释里的 A 项)。
## 2026-09-22 DirectProject Codex 原生能力去限制
- 背景:`485ed50b2` 为统一宿主执行预算,将 DirectProject 从 `danger-full-access` / `never` 改回 `read-only` / `untrusted`,同时按 feature flag 关闭原生 web search、子 Agent、Apps、插件、hooks、Goals、Workspace Dependencies、Tool Suggestion、浏览器/电脑控制等能力;用户要求去掉 AGC 对 Codex 的这些限制。
- 决策:DirectProject 恢复完整 Codex 原生能力。thread 使用 `sandbox="danger-full-access"`turn 使用 `sandboxPolicy.type="dangerFullAccess"`,审批策略为 `never`,文件变更、命令、权限和 tool call 交互请求直接接受;DirectProject 启动参数设置 `web_search="live"`,且不再为任何 Codex feature 传 `--disable`,不再关闭 `tools.update_plan` / `request_user_input`。ToolHost 与 DirectHome 继续维持被动只读。
- 保留边界:AGC `agc_tools`、provider proxy、工具桥 URL、项目身份、计费幂等、资源登记和交付审计仍是客户端自有业务/凭据边界,不随 Codex 原生能力开放而移除;shell 环境继续排除 AGC 凭据。
- 影响范围:`apps/ai-game-creator-shell/src-tauri/src/agent/codex_app_server/mod.rs`、相关定向测试、`docs/technical/【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md``docs/technical/【技术方案】AI游戏创作Agent Runtime V1.1-2026-07-12.md`
- 验证方式:`cargo test --locked -p genarrative-ai-game-creator-shell --bin genarrative-ai-game-creator-shell -- direct_project``npm run check:encoding``git diff --check`;真实客户端受登录态与 Codex CLI 条件限制时单独说明。
@@ -5298,6 +5298,7 @@ Cocos Creator 根目录由 `package.json.creator.version` 与普通 `assets/`
- 原因:Codex 的用户 Skill 发现根是 OS HOME,不是 `CODEX_HOME``dynamicTools=[]` 也只清空宿主动态工具,不会移除 Codex 内建工具。read-only/network off 是副作用防线,不等于从模型工具目录删除能力。
- 处理:同时隔离 `HOME / USERPROFILE / APPDATA / LOCALAPPDATA`,并在临时 workspace 创建空 `.git` 作为仓库发现边界,防止继续向父目录(例如 `/tmp`)发现 `.codex/.agents`;启动前设置 `web_search="disabled"``agents.enabled=false`,并关闭 shell/unified exec/browser/plugin/image/workspace dependency 等原生 feature;接收 `item/started` 时只允许消息、计划、推理和压缩等被动 item,其余立即 interrupt。配置中的 `webSearchEnabled=true` 必须失败关闭并提示切 `provider`
- 验证:fake app-server 检查 argv 不含 Key、专用 Key 只在环境、继承 `CODEX_API_KEY` 被移除、HOME 指向临时目录、web/multi-agent/shell 关闭;另覆盖 turn-start 回包前 drop 最终只发一次对应 interrupt。
- 2026-09-22 更新:该限制清单只继续适用于 ToolHost / DirectHomeDirectProject 已恢复完整 Codex 原生能力,见 `decision-log.md` 的「DirectProject Codex 原生能力去限制」。
## 2026-09-12 app-server `other` 不代表 dev 上游故障
@@ -1762,4 +1762,4 @@ V1.54 的公共编排层可以在运行前构造动态 DAG,但 LLM 在执行
本文中 V1.1/V1.52 关于 app-server 全局关闭 native shell、network、browser、plugin 和 multi-agent 的表述继续适用于 ToolHost/DirectHome 与 legacy Runtime;不再作为 DirectProject 的现行实现。DirectProject 恢复原生文件/搜索/命令、图片查看和 Skill,始终注入审核后的 `agc_tools` MCP,并可在启动时从客户端扩展仓库接入用户已启用的独立第三方 MCP 配置;第三方配置不进入全局 Codex home,不开启完整 Plugin Runtime。平台美术、资源投影、浏览器试玩、受控搜索、付费副作用和 durable delegation 仍必须走 AGC 权威链路。
DirectProject 的历史写入根规则由 2026-09-14 覆盖:现使用 `danger-full-access` sandbox,取消 `workspaceWrite(writableRoots=...)` 与文件变更批准根白名单;项目根继续作为 cwd、连接池和审计身份根。审批策略为 `never`原生命令网络随完整 sandbox 开放;联网资料仍可走受控 `agc_web_search`shell 使用 Codex `shell_environment_policy` 的 glob 排除 API key、proxy、loopback bridge 和受控开关。配置了 AGC LLM Key 或可解析的 `OPENAI_API_KEY` 登录态时,真实 provider 凭据只由 AGC 本地 provider proxy 持有,Codex 仅获得连接级随机代理令牌;无法安全代理的 OAuth `auth.json` 继续关闭 native shell/unified exec。Codex 原生子 Agent、Apps、插件、hooks、图片生成、Goals、Workspace Dependencies、Tool Suggestion 以及未接入 AGC 证据链的浏览器/电脑控制保持关闭。系统提示词只传入最小身份、工作区、Skill 索引和副作用边界,不再批量注入源码快照或 Skill 正文。sandbox writableRoots 不提供 deny-read`.agent``../assets` 的不可读约束仍需通过 prompt/Skill 行为合同和真实 smoke 验证,不能误称为 OS 强制隔离
DirectProject 的 Codex 原生能力由 2026-09-22 口径覆盖:thread 使用 `danger-full-access` sandboxturn 使用 `dangerFullAccess`,审批策略为 `never`,文件变更、命令、权限和 tool call 交互请求直接接受;项目根继续作为 cwd、连接池和审计身份根,但不再作为原生文件或命令的能力边界。原生命令网络随完整 sandbox 开放Codex 原生 web search 设为 `live``agc_web_search` 仅作为客户端受控搜索备选。DirectProject 不再通过 `--disable` 关闭 Apps、Plugins、hooks、Goals、图片生成、Workspace Dependencies、Tool Suggestion浏览器电脑控制、子 Agent、shell 或 unified exec,也不再关闭 `tools.update_plan` / `request_user_input`。shell 仍使用 `shell_environment_policy` 排除 AGC provider proxy token、工具桥 URL、proxy 和其它宿主凭据;这是 AGC 自有凭据隔离,不是 Codex 能力限制。AGC `agc_tools`、项目身份、付费幂等、资源登记和宿主交付审计保持原有业务合同
@@ -1,5 +1,17 @@
# AI 游戏创作智能体 App 实施计划
## 2026-09-22 DirectProject Codex 原生能力去限制
本节覆盖下文所有针对 DirectProject 的沙箱、审批、feature flag、原生 web search 和原生命令 lease 口径。ToolHost、DirectHome 仍保持被动只读对话;AGC `agc_tools`、项目身份、凭据代理和宿主交付审计继续作为 AGC 自有业务边界存在,不属于对 Codex 原生能力的限制。
| 要求 | 现行行为 | 完成证据 |
| --- | --- | --- |
| 完整文件与命令权限 | DirectProject thread 使用 `sandbox="danger-full-access"`turn 使用 `sandboxPolicy.type="dangerFullAccess"`;不再按项目根、`.agent` 或敏感路径裁剪原生操作 | `codex_app_server::tests::direct_project_protocol_uses_full_access_without_host_approval` |
| 无审批阻塞 | thread / turn 使用 `approvalPolicy="never"`;文件变更、命令执行、权限和 tool call 交互请求直接接受 | 同上、`codex_app_server::tests::direct_project_interactions_are_accepted_without_host_adapter` |
| 原生能力全开 | DirectProject 不再通过 `--disable` 关闭 apps、plugins、hooks、goals、image generation、browser、computer use、shadow agents、unified exec 等 feature,也不再关闭 `tools.update_plan` / `request_user_input` | `codex_app_server::tests::direct_project_command_keeps_all_native_codex_features_enabled` |
| 原生联网 | DirectProject 设置 `web_search="live"`,原生命令网络随完整 sandbox 开放;`agc_web_search` 仅保留为客户端受控搜索备选 | `direct_project_command_configures_the_reviewed_agc_tools_bridge`、真实客户端 smoke |
| 保留的宿主边界 | provider proxy session token、工具桥 URL 等 AGC 自有凭据不注入 shell 环境;AGC 工具的登录、计费、幂等、资源登记和交付合同仍由客户端负责 | `direct_project_command_keeps_all_native_codex_features_enabled`、现有 AGC 工具契约测试 |
## 2026-09-21 Godot 工作区发现放宽与内置插件行去掉手动启动
本节覆盖下文“打开项目自动识别 Godot”中的旧口径:判定从「唯一命中」放宽为「确定性命中」,`project.godot` 从「必须是普通文件」放宽为「按链接目标判定」。