Fragments:用 E2B 沙箱把 AI 生成的应用跑起来
Open-source Next.js template for building apps that are fully generated by AI. By E2B.
秒懂
- 它是什么?
- Fragments 是一个开源的 Next.js 模板,用于构建类似 Claude Artifacts 或 v0 的 AI 生成应用。它把代码生成与安全执行分开,用 E2B 沙箱运行 AI 产出的代码,适合想快速搭建原型或自托管类似产品的开发者。
- 适合谁用?
- Fragments 适合那些想快速搭建一个 AI 生成应用原型的团队,尤其是已经熟悉 Next.js 和 shadcn/ui 的开发者。它把代码生成与执行环境解耦,用 E2B 沙箱来隔离 AI 产出的代码,省去自己维护容器安全的麻烦。
- 能商用吗?
- 可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 6 天前。
- 用什么语言写的?
- 主要是 TypeScript(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决什么问题,谁需要它
Fragments 解决的是 AI 生成应用时最麻烦的一环:如何安全地执行 AI 写的代码。Claude Artifacts 和 v0 这类产品,用户看到的是 AI 实时生成并渲染的界面,背后其实是一个受控的执行环境。Fragments 把这个模式开源了,让你能用 Next.js 14 和 E2B SDK 搭一个自己的版本。目标用户不是普通终端用户,而是想快速验证 AI 应用概念的开发者,或者需要在内部搭建类似工具的团队。它不提供完整的产品功能,比如用户管理或计费,它给的是一个可扩展的起点。
核心机制:沙箱与代码生成的分离
Fragments 的架构核心在于把两个职责分开。LLM 负责生成代码,E2B 沙箱负责运行代码。当你在聊天里输入需求,后端会调用你配置的模型提供商,比如 OpenAI 或 Anthropic,得到代码片段。然后这个代码被发送到 E2B 的沙箱环境中执行。沙箱是一个隔离的容器,支持安装 npm 和 pip 包,所以 AI 可以自由使用第三方库。UI 通过流式传输实时显示执行结果,用户看到的是接近原生应用的交互。这个分离意味着你不需要在自己的服务器上直接运行 AI 生成的代码,降低了被注入恶意命令的风险。但要注意,沙箱的安全性取决于 E2B 的隔离实现,而不是模板本身。
运行前的准备:两个 API Key 是硬门槛
要跑起来,你得先有 E2B API Key 和一个 LLM Provider 的 Key。README 里明确列出了步骤:先 git clone,然后 npm i,再在 .env.local 里填环境变量。最小的配置是 E2B_API_KEY 加上至少一个模型提供商的密钥,比如 OPENAI_API_KEY 或 ANTHROPIC_API_KEY。开发服务器用 npm run dev 启动,构建用 npm run build。可选的环境变量包括 MORPH_API_KEY,它用于启用 Morph 的 Apply 模型,README 声称这个模型在做代码编辑时更节省 token 且更准确。如果你不想用 Morph,可以不加这个 key,但要注意它是默认开启的。此外还有速率限制的配置项 RATE_LIMIT_MAX_REQUESTS 和 RATE_LIMIT_WINDOW,以及用于短链接和限流的 Vercel/Upstash KV。
扩展方式:模板与模型都可插拔
Fragments 的扩展点很清晰。要加一个新的应用类型,比如 Streamlit 或 Gradio,你需要先安装 E2B CLI,然后新建一个 sandbox-templates 下的文件夹,用 e2b template init 初始化一个 Dockerfile。接着在 e2b.toml 里指定启动命令,比如 streamlit run app.py。构建模板用 e2b template build --name <template-name>,完成后会得到一个模板 ID。最后在 lib/templates.json 里注册这个模板,写上依赖列表、入口文件和端口。模型侧的扩展在 lib/models.ts 里,你可以加一个新条目,指定模型 ID、显示名称和提供商。如果要加新的提供商,需要在 providerConfigs 里写一个函数,返回 createOpenAI 或类似的客户端实例。这个设计让 Fragments 不局限于默认的 Python 或 Next.js 场景。
一个真实的坑:默认模板与自定义模板的差距
README 里提供了添加自定义 persona 的完整流程,但这里有一个隐含的坑。默认的沙箱模板是 E2B 预先构建好的,你直接用就能跑。但如果你要加自己的模板,必须自己写 Dockerfile,并且要保证容器里的环境和 LLM 的指令一致。比如你写了一个 Streamlit 模板,但 instructions 字段写得不够详细,模型可能会生成不兼容的代码。另外,模板构建需要 E2B CLI 并登录,这意味着你的 CI/CD 流程得依赖 E2B 的命令行工具。如果 E2B 服务出现故障,或者你的网络环境不允许访问它的构建端点,整个流程就会卡住。文档没有说明离线构建或本地测试沙箱的方法,这是一个明显的限制。
替代方案:v0 与自建容器的取舍
如果你不想用 E2B,最直接的替代是 Vercel 的 v0,但它是闭源托管服务,你无法控制执行环境。另一个方向是自己用 Docker 或 gVisor 跑容器,配合开源的代码解释器项目,比如 Open Interpreter。区别在于,v0 提供的是端到端的托管体验,你只需要调用 API,但无法定制沙箱镜像。自建容器则给了你完全的控制权,但你需要自己处理网络隔离、资源限制和镜像构建,工作量会大很多。Fragments 选择了一个中间路线:沙箱由 E2B 托管,但模板和模型配置开放给你。如果你对沙箱的隔离级别有严格要求,比如需要合规审计,E2B 的托管方案可能不够透明,这时候自建容器更合适。文档里没有提供任何关于沙箱内部安全机制的细节,这也是一个需要你自己去查证的点。
维护与升级成本,许可证要点
Fragments 的仓库显示最近一次推送是 2026 年 9 月,但没有发布任何 release 版本。这意味着你无法通过版本号来追踪变更,只能依赖 main 分支的提交历史。对于生产环境,这是一个潜在的不稳定因素。升级时你需要自行对比 commit 之间的差异,尤其是 lib/templates.json 和 lib/models.ts 这类配置文件,因为它们的格式可能会变。许可证是 Apache-2.0,这意味着你可以自由使用、修改和分发,包括商用,但需要保留版权声明。如果你修改了代码,不需要开源你的改动,但如果你分发的是二进制或源码,必须附带许可证副本。这比 GPL 类许可证更宽松,适合内部工具或商业产品的二次开发。不过,Apache-2.0 不包含对商标的保护,所以你不能随意使用 E2B 的 Logo 或名称来暗示官方认可。
编辑结论
Fragments 适合那些想快速搭建一个 AI 生成应用原型的团队,尤其是已经熟悉 Next.js 和 shadcn/ui 的开发者。它把代码生成与执行环境解耦,用 E2B 沙箱来隔离 AI 产出的代码,省去自己维护容器安全的麻烦。但如果你需要完全离线运行,或者不想依赖第三方沙箱服务,这个模板就不合适。在采用之前,先确认你的 E2B API Key 和 LLM Provider Key 是否可用,并检查 lib/templates.json 中默认的沙箱模板是否满足你的场景。如果你是做生产级产品,务必审查沙箱的隔离边界和速率限制配置,因为模板默认的设置未必符合你的安全要求。
社区笔记