修复项目文件列举被无关临时锁删除打断
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m8s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m26s
Project CI / Backend tests (pull_request) Successful in 4m21s
Project CI / Frontend tests (pull_request) Successful in 2m19s
Project CI / Native shell tests (pull_request) Successful in 6m35s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 10m35s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 10m43s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m43s
Project CI / Repository checks (pull_request) Successful in 2m16s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m8s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m26s
Project CI / Backend tests (pull_request) Successful in 4m21s
Project CI / Frontend tests (pull_request) Successful in 2m19s
Project CI / Native shell tests (pull_request) Successful in 6m35s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 10m35s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 10m43s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m43s
Project CI / Repository checks (pull_request) Successful in 2m16s
在读取元数据前按目标范围和受保护路径裁剪遍历 跳过枚举后消失的文件和目录并保留其它 IO 错误 补充真实写锁并发、范围过滤、分页与链接边界回归测试 同步 AGC 文件列举契约与共享排障记录
This commit is contained in:
@@ -47,6 +47,12 @@
|
||||
- **判据/取证**:`cargo test --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml --bin genarrative-ai-game-creator-shell direct_thread_delta`——新增 `direct_thread_delta_sanitization_preserves_line_breaks` 钉住「逐段脱敏 == 整段脱敏」,去掉 `split_inclusive` 即红;真实文本的回归用渲染侧夹具复核(修复前 table/li/h2 全 0,修复后与整段脱敏一致:1 个 table / 3 个 th / 4 个 h2)。
|
||||
- **关联**:`apps/ai-game-creator-shell/src-tauri/src/agent/codex_app_server/mod.rs`、`.../agent/generation/prompt_context.rs`、`.../agent/thread_manager/wire.rs`、`apps/ai-game-creator-shell/src/view/project-development/chat/conversation/directThreadChat.ts`、`#384`。
|
||||
|
||||
## 2026-10-01 文件列举被无关临时锁删除打断
|
||||
|
||||
- `read_dir` 返回名字后,文件可能在 `symlink_metadata` 前正常消失;`.agent/project.lock` 的正常释放就能触发这类竞态。不要先全项目扫描再按 Agent 的 `path` 和可见性过滤。
|
||||
- 项目内列举在元数据读取前裁剪范围和受保护路径,只进入目标子树及必要祖先;共享文件树保留自己的可见性策略。枚举后消失的文件/目录仅跳过 `NotFound`,其它 IO 错误仍可诊断,进入排队目录前复核链接/重解析点。
|
||||
- 并发回归用通道协调真实写锁的释放与元数据读取,不靠高频循环碰撞;分页按本次观察到的可见文件排序,不保证跨请求快照。完整合同见 AGC 实施计划“项目文件列举的范围与并发边界”。
|
||||
|
||||
## 2026-09-29 Game Agent 读工具被项目相对路径规则拦住
|
||||
|
||||
- 项目外读取不能只依赖末段 `O_NOFOLLOW`:父目录符号链接可隐藏 `.ssh` 等受保护名字。文件读取和目录列表在访问前逐段检查原始路径,拒绝符号链接与 Windows 重解析点;目录扫描对子目录再次检查。系统临时目录若含平台别名(例如 macOS `/var`),普通读取测试使用临时目录的 canonical 路径,不能通过 canonicalize 待读路径来抹掉待检测链接。
|
||||
|
||||
Reference in New Issue
Block a user