Adorable云沙箱深度解析:Freestyle如何隔离运行AI生成的代码

📅 发布时间:2026/8/25 9:34:24
Adorable云沙箱深度解析:Freestyle如何隔离运行AI生成的代码
Adorable云沙箱深度解析Freestyle如何隔离运行AI生成的代码【免费下载链接】AdorableOpen Source Lovable项目地址: https://gitcode.com/gh_mirrors/ad/AdorableAdorable 是一款开源的 AI 应用构建工具Open Source Lovable你用一句话描述需求它就能实时编写代码、启动预览并一键发布。它的核心底气来自 Freestyle 云沙箱所有 AI 生成的代码都在云端虚拟机里隔离运行彻底与你的电脑和服务器隔离。这篇文章带你完整拆解 Adorable 云沙箱的隔离机制看看 Freestyle 是如何安全运行 AI 代码的。一、Adorable 是什么对话式 AI 应用构建 ️简单说Adorable 就是开源版 Lovable。你打开一个网页像聊天一样告诉 AI 你想要什么应用它会在后台自动✍️写代码AI 在沙箱中直接读写文件、安装依赖实时预览内置浏览器即时刷新所见即所得自带终端Web 终端里能看到开发服务器和命令输出一键发布把应用部署到独立的生产域名下面这张截图展示了 Adorable 的整体界面——左侧是对话区右侧是 AI 正在构建的应用与终端技术栈上它采用 Next.js Vercel AI SDK 构建对话层而AI 写代码、跑代码的部分则全部交给 Freestyle 云端沙箱见根目录 README.md。二、Freestyle 云沙箱AI 代码的安全屋 每个项目都获得一台独立虚拟机沙箱的核心入口在 adorable/lib/adorable-vm.ts。当你在 Adorable 中创建一个项目时createVmForRepo函数会为它申请一台专属 VM关键配置包括配置项作用recreate: true每次创建全新干净的虚拟机环境persistence: sticky粘性持久化项目存活期间 VM 状态不丢失git.repos把项目的 Git 仓库挂载到 VM 内的/workspace工作目录domains为预览页、终端分别生成独立的访问域名预装好的三件套开发服务器 双终端同一个文件里定义了adorableVmSpecVM 规格它在虚拟机中预先装配了三样东西开发服务器VmDevServer自动启动 Next.js 模板项目并监听文件变更改完代码立即热更新命令终端VmWebTerminalVmPtySession把开发命令输出暴露为 Web 终端附加终端在/workspace下再开一个自由终端方便 AI 或用户执行额外命令端口分配定义在 adorable/lib/vars.ts预览用3000命令终端3010附加终端3020。每台 VM 还会被分配一个形如uuid-adorable.style.dev的唯一域名预览、终端各占一个子域名——这正是你在界面里看到的实时预览 终端。三、AI 如何被圈在沙箱里干活 聊天请求先过权限关再进虚拟机整个执行链路在 adorable/app/api/chat/route.ts 中鉴权校验当前身份会话对目标 Git 仓库的访问权限越权直接返回 403定位 VM从项目元数据里取出vmId用freestyle.vms.ref拿到那台 VM 的引用注入工具为 LLM 生成一组沙箱工具AI 的每一步操作都必须通过这些工具间接执行所有操作都发生在 VM 内部工具定义在 adorable/lib/create-tools.ts。AI 能调用的bash工具并不是在你的机器上跑 shell而是把命令发给vm.exec在虚拟机里执行——即使 AI 写出一段危险代码最多也只是弄坏那台临时 VM绝不影响宿主机。除了 bash还有文件读写、搜索、git commit 等内置工具且做了路径逃逸防护normalizeRelativePath会拦截以/开头的绝对路径、包含..的相对路径和空字节确保 AI 只能在/workspace工作目录内操作文件。系统提示词给 AI 立好规矩 adorable/lib/system-prompt.ts 中的系统提示词规定了 AI 的工作方式文件操作优先用内置工具只有真正需要时才用 bash装依赖、跑脚本文件变更会触发开发服务器热重载AI 无需手动重启每完成一个任务必须用 commit 工具保存变更——这一步让所有改动进入 Git 仓库四、Git 持久化沙箱会消失代码不会 VM 是临时资源但项目必须永久存活。Adorable 的答案是用 Git 仓库当数据库。adorable/lib/repo-storage.ts每个项目的元数据VM 信息、对话列表、部署记录、生产域名以metadata.json的形式提交在仓库中聊天记录存于conversations/目录——下次打开项目时所有历史完整还原adorable/lib/deployment-status.ts每一次提交commit都可以生成一个形如sha前12位-adorable.style.dev的预览部署点击发布即可提升为生产域名也就是说沙箱负责跑代码Git 负责记代码部署系统负责上线代码三者各司其职。五、快速上手运行你的第一个 Adorable 沙箱 ⚡️git clone https://gitcode.com/gh_mirrors/ad/Adorable cd Adorable/adorable cp .env.example .env.local # 填入你的 OpenAI 或 Anthropic API Key npm install npm run dev打开http://localhost:3000创建第一个项目你就能亲眼看到 AI 在 Freestyle 云沙箱里写代码、跑服务、出预览的全过程。配置细节可参考 adorable/README.md。总结Adorable 的安全不是口号而是一套可拆解的工程实践隔离AI 代码只运行在 Freestyle 云端 VM 中独立域名、独立环境受控AI 的所有能力通过受路径校验的工具暴露越界访问被拦截持久项目即 Git 仓库对话与部署记录全部入库沙箱销毁也不丢可发布commit 到生产域名一步到位预览/测试/发布链路完整这套沙箱 Git 部署的组合正是开源 Lovable 类项目值得借鉴的架构范式。【免费下载链接】AdorableOpen Source Lovable项目地址: https://gitcode.com/gh_mirrors/ad/Adorable创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考