2.6 KiB
2.6 KiB
自建 AppContainer 沙盒移除记录(2026-10-20)
范围
按用户要求移除 YCode 自建的 Windows AppContainer / Job Object 执行沙盒,包括:
- 主进程沙盒实现:
src/main/sandbox - 原生执行器与文件/Git/工作区组件:
native/sandbox - 随包资源与内置 MinGit:
resources/sandbox - 工具适配:
src/main/agent/tools/sandbox-git.ts、src/main/agent/tools/sandbox-workspace.ts - 共享契约:
src/shared/sandbox.ts - 构建、供应、维护和回归脚本:
scripts/build-sandbox.mjs、scripts/vendor-sandbox-git.mjs、scripts/verify-sandbox-app.cjs、scripts/sandbox-* package.json中sandbox:build、test:sandbox:*、sandbox:maintain与沙盒 extraResources.gitignore中沙盒产物规则release/win-unpacked/resources/sandbox本地构建产物
保留项
- Electron 渲染进程隔离继续使用
webPreferences.sandbox、contextIsolation和无nodeIntegration。 - 对话页“默认权限 / 完全访问”开关保留,因为它是现有权限交互契约;
default-sandbox只是枚举名称,不代表仍有自建 AppContainer 后端。 - 历史沙盒设计、验收和取证文档未删除,仍可作为先前工作记录;其中的能力结论不再适用于当前代码。
行为变化
npm run build不再编译原生沙盒,也不再要求 Visual Studio C++ Build Tools。- 安装包与免安装目录不再包含
ycode-sandbox.exe、沙盒 Node/Python 适配器或内置 MinGit 资源。 execute_command继续使用宿主 Shell;YCode 不再提供自建 OS 级命令、文件写回、Git 或长期工作区隔离。- 普通文件工具原有的工作区路径约束和变化检查不受影响。
验证
npm run typecheck:通过。npm run build:通过(TypeScript、Electron main/preload/renderer)。out/main/index.mjs:未发现windows-appcontainer、sandbox_workspace、sandbox_git、ycode-sandbox、executeSandboxCommand、sandboxStatus。src、scripts、package.json、.gitignore:未发现上述自建沙盒标识。git status显示相关受控文件均为删除;唯一既有未跟踪文件为in,未修改。
限制
- 本次没有重新生成 NSIS 安装包;发布前需要重新执行
npm run dist:installer,并核对新产物不包含resources/sandbox。 - 历史
.tmp测试记录和用户数据目录中可能残留旧沙盒测试状态,不参与当前运行,也不会被打包。 - 移除 AppContainer 后,若需要操作系统级强制隔离,应作为新方案重新设计和取证,不能引用本仓库旧沙盒结论。