修复 Codex 隔离用户目录被系统临时路径符号链接阻断
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m31s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m58s
Project CI / Backend tests (pull_request) Successful in 3m57s
Project CI / Frontend tests (pull_request) Successful in 2m14s
Project CI / Native shell tests (pull_request) Successful in 6m8s
Project CI / Repository checks (pull_request) Failing after 56s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 8m49s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m37s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 9m49s

- 临时目录确认是普通目录后先解析真实路径,再创建 codex-home、workspace 和隔离用户目录
- 祖先符号链接检查不放宽,临时目录内部的符号链接仍然拒绝
- 补充一条符号链接祖先与内部链接测试
- 记录决策与排障说明
This commit is contained in:
kdletters
2026-09-29 09:11:33 +01:00
parent eaaab2e006
commit 8b0b6d768c
3 changed files with 111 additions and 4 deletions
@@ -1,5 +1,11 @@
# 决策记录
## 2026-09-29 Codex 私有运行目录先解析系统临时路径上的符号链接
- 决策:新建的 Codex 临时目录确认是普通目录后,先解析为真实路径并去掉 Windows `\\?\` 前缀,再创建 `codex-home`、`workspace` 和隔离用户目录。macOS 的 `/var`、`/tmp` 这类系统符号链接不再阻断 Game Agent 启动。
- 范围:`validate_game_creator_private_path_ancestors` 不放宽。AppData、客户端配置,以及临时目录内部新出现的符号链接,仍然拒绝。
- 关联:`apps/ai-game-creator-shell/src-tauri/src/agent/codex_app_server/mod.rs`。
## 2026-09-29 策划文件工具说明去掉路径硬限制
- 决策:常驻提示词仍要求策划文件放在工作区内并使用相对路径。`read_file`、`write_file`、`list_dir`、`search_text`、`patch_file`、`delete_path` 的工具说明不再写「工作目录内」或「path 使用相对路径」。说明不宣布可以访问绝对路径或工作区外路径。
@@ -1,5 +1,12 @@
# 踩坑与排障记录
## 2026-09-29 Codex 隔离用户目录被系统临时目录的符号链接拦下
- **现象**:Game Agent 回合还没改项目文件就失败。卡片是 `direct-codex-failure:v2 stage=code-generation code=runtime-failure`,摘要为「创建 Codex app-server 隔离用户目录失败:Codex 隔离用户目录 路径不能包含符号链接:<absolute-path>」。诊断文件同样把路径脱敏,看不出是哪一级目录。
- **原因**:临时目录保留 `TMPDIR` 或 `/tmp` 的原始路径。macOS 上 `/var` 指向 `/private/var`,未设置 `TMPDIR` 时 `/tmp` 指向 `/private/tmp`。隔离用户目录会检查全部现存祖先,把这些系统符号链接当成私有目录里的链接拒绝。Linux 和 Windows 只在临时路径上确实有符号链接时同样失败。
- **处理**:临时目录确认是普通目录后先解析成真实路径,再创建 `codex-home`、`workspace` 和 `home`。祖先检查不放宽;临时目录内部的符号链接仍然拒绝。
- **关联**:`apps/ai-game-creator-shell/src-tauri/src/agent/codex_app_server/mod.rs` 的 `canonical_codex_private_runtime_dir`。
## 2026-09-29 dev 渠道改名后,更新路径不会重建快捷方式(旧图标一直指向旧安装)
- **现象**:改名前的 dev 客户端(展示名 `陶泥儿`,0.1.126)点更新后自动启动的是新版(`陶泥儿开发版`,0.1.160),但桌面/开始菜单里的 `陶泥儿.lnk` 打开的还是旧版。`%LOCALAPPDATA%` 下同时留着 `陶泥儿` 与 `陶泥儿开发版` 两个安装目录,`HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall` 下同时留着 `陶泥儿`(0.1.109)与 `陶泥儿开发版`(0.1.160)两个卸载项,而新版一份快捷方式都没有。