From fc5adf48aa46eab992e7c60fc8af70301dd31f42 Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Thu, 10 Sep 2026 19:34:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95=20AGC=20=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=90=91=E5=AF=BC=E5=8D=95=E6=B5=8B=E7=9A=84=20Windows=20DACL?= =?UTF-8?q?=20=E5=AD=90=E8=BF=9B=E7=A8=8B=E8=B6=85=E6=97=B6=E5=9D=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - pitfalls.md:在「终端真实测试不能混用配置参数、stdin EOF 和持续预览」下补一条测试超时补充,紧接既有的 Windows PowerShell 参数条目。 - 内容:配置向导读路径与写路径都会加固私有目录与配置文件,没拿到 secureWindowsPath 桩时 Windows 上每次调用各拉起一个真实 powershell.exe(本机实测约 0.6s / 次);只桩写不桩读会累计 9 次加固、约 5.5s,稳定撞上 vitest 默认 5000ms 并报 Test timed out in 5000ms。 - 结论口径:只校验配置分层优先级、不校验 ACL 的用例,读写路径必须带同一份 persistenceOptions;确实要覆盖私有 ACL 的用例才保留真实加固并自行留足超时预算。 --- docs/project-memory/shared-memory/pitfalls.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/project-memory/shared-memory/pitfalls.md b/docs/project-memory/shared-memory/pitfalls.md index 542eb6057..c10bf2995 100644 --- a/docs/project-memory/shared-memory/pitfalls.md +++ b/docs/project-memory/shared-memory/pitfalls.md @@ -4166,6 +4166,7 @@ - 处理:GUI 与 `npm run agc:config` 共用系统 AppData `game-creator.config.json`,终端隐藏输入 API Key 并禁止 `--api-key`;更新时保留 `agentLlm`、`editorApi`、`mcpServers` 等其它配置,POSIX 权限维持目录 `0700` / 文件 `0600` 并原子替换。显式 `--config-dir` 必须以 `world.genarrative.ai-game-creator` 为独立叶目录,不能让向导对 `/tmp`、AppData 根或共享目录整体 chmod / 重建 DACL。隐藏输入调用 `stdin.resume()` 后必须记住原 pause 状态,在成功、取消、异常和 `SIGINT / SIGTERM / SIGHUP` 路径恢复 raw mode 并 `pause()`,信号恢复后重发;只移除 `data` listener 会让 `--configure-only`、配置检查失败或 Ctrl+C 保持活动 stdin。缺配置时仅 TTY 人工会话可询问进入向导,非 TTY 立即失败并提示配置命令。 - Windows 密钥复制:`mode: 0o600` 和 POSIX `chmod` 在 Windows 上不能代替 DACL。隔离 AppData 目录必须先设置仅当前用户、禁止继承的 DACL;目标配置文件先以空文件创建并收紧 DACL,之后才允许把 API Key 字节写入。先 `copyFile` 再依赖 Rust 只读检查或事后收紧会留下密钥暴露窗口,也可能因继承 ACL 不满足 Runtime 合同而在首次 `--llm-status` 失败。 - Windows PowerShell 参数:不要把 DACL 目标路径和目录标记直接追加在 `powershell.exe -Command