E2B:为 AI 智能体打造的云端代码沙箱基础设施
📖 简介
📝 详细介绍
E2B:为AI智能体打造的轻量级代码执行沙箱
E2B 解决了一个具体问题:让 AI 智能体(Agent)能以每秒级速度启动一个隔离的、可编程的云端环境,并安全地执行任意代码、读写文件、运行命令,用完就销毁。它省掉了自己维护 Kubernetes + 容器安全策略 + 资源调度的负担,把“给 Agent 一个临时电脑”变成了一次 API 调用。
GitHub 数据
| 指标 | 值 |
|---|---|
| Stars | 7.2k(以查看时为准) |
| 主要语言 | TypeScript / Go |
| 开源协议 | Apache-2.0 |
| 最近更新 | 2025年3月(持续活跃) |
项目背景
E2B 团队最初在做 AI 编程助手和代码解释器时发现:每次让模型运行代码都像在冒险。直接调本地 subprocess 不可控,扔给 Docker 容器启动太重(数百毫秒到数秒),而常见的“代码解释器”只支持纯 Python 且无法装自定义依赖。Agent 需要的不只是“跑一段代码”,而是一个真正可控的执行环境——能跑 Shell、能安装软件、有持久化文件系统,又能安全回收。
于是他们开发了 E2B:一个专门面向 LLM Agent 的云端沙箱基础设施。通过将执行环境作为一等公民预置在远端,模型通过 SDK 即可立即获得一个完整、隔离、可交互的 Linux 环境。
核心功能解析
瞬时启动的沙箱实例
每个沙箱是一个微型虚拟机(基于 Firecracker),带独立内核网络。最关键的是预置镜像与持久化加密磁盘,使秒级启动成为可能。
# 启动一个沙箱(默认 Python + Node 环境)
from e2b_code_interpreter import Sandbox
sandbox = Sandbox(timeout=300) # 5 分钟无活动自动销毁
print(sandbox.info.id) # 直接获得可用的沙箱 ID
代码与命令执行
支持异步流式返回 stdout/stderr,也可以直接执行 Shell。这比普通 API 返回最终结果的方式更适合生成式 Agent 的逐步推理。
# 在沙箱里跑 bash
exec = sandbox.run_code("""
import subprocess
result = subprocess.run(["pip", "install", "numpy"], capture_output=True, text=True)
print(result.stdout)
""")
print(exec.stdout) # 实时看到安装日志
文件系统与生命周期管理
可以上传/下载文件,或者通过 filesystem API 在沙箱内操作文件。会话状态可持久化,下次创建时恢复现场。
sandbox.filesystem.write("/tmp/data.json", '{"key": "value"}')
content = sandbox.filesystem.read("/tmp/data.json")
# 保存当前快照
# snapshot_id = sandbox.snapshot() # 下次可用该快照恢复状态
快速上手
先注册获取 API Key(匿名试用用 E2B_API_KEY),然后安装官方 SDK:
# 安装 SDK
pip install e2b_code_interpreter
# 环境变量
export E2B_API_KEY="你的key"
# 最小示例
from e2b_code_interpreter import Sandbox
sb = Sandbox()
result = sb.run_code("print('hello from agent sandbox')")
print(result.stdout) # hello from agent sandbox
sb.close()
也可以快速尝试 CLI(需要安装 Node):
npx e2b sandbox spawn --template typescript
技术亮点
架构上最大胆的取舍是“基于微虚拟机而非容器”。E2B 没有选择 Docker/containerd,而是基于 Firecracker 实现每个实例独立 VM。这带来了三个直接收益:
- 安全边界硬:Agent 可能执行任意恶意代码,VM 从内核层面隔离,攻击面远小于共享容器的 user-space 隔离。即使逃逸也只是落到一个临时 VM 中。
- 细粒度资源控制:每个沙箱有独立 CPU/内存配额,不会出现“某个疯狂 Agent 把宿主机 CPU 占满”的列车事故。配额在启动时直接指定。
- 快速冷启:Firecracker 的启动开销极低(通常 100-200ms),配合为 Agent 场景预绘制的根文件系统与内存页面缓存,实际端到端启动能维持在 200-500ms 内,远快于传统 KVM 或 Docker 通常更重的初始类型下。
另一个设计取舍是 执行会话采用“长连接”模型:SDK 会维持一个 WebSocket 连接,将代码提交、文件读写、进程内信号转发都封装为同一协议。这样 Agent 可以通过一次步骤向同一个沙箱发多条指令,保持环境上下文,避免每次都重新初始化依赖。这种有状态沙箱与 LLM 多轮推理是天然搭配。
E2B 还引入了“一次性沙箱”和“持久沙箱”的语义分离。前者适合纯无状态代码执行,后者用于需要跨多轮交互保留工作目录状态的任务。你在代码中只需改动一个参数,底层由宿主机调度器优化资源复用。
此外,它把沙箱控制平面单独做成 Go 服务,SDK 只负责连接与消息序列化。这使服务端升级不破坏客户端兼容,也让官方 SDK(Python/JS/Go)可统一复用同一套协议。
同类对比
| 方案 | 隔离级别 | 启动速度 | 对 Agent 友好性 | 说明 |
|---|---|---|---|---|
| E2B | 微虚拟机 | ~200ms 冷启 | 流式 IO、文件系统 API、持久化快照 | 专为 LLM Agent 设计,SDK 体验好 |
docker exec / 裸容器 | 进程级/容器隔离 | 数百 ms ~ 秒 | 需要自己组装环境、管理生命周期 | 底层可控,但安全模型脆弱 ,且没有 Agent 语义的 API |
| OpenAI Code Interpreter | 黑盒(未知强隔离) | 秒级 | 只能通过官方 API,限制 Python, 不可自定义安装依赖,对工具不可见 | 闭源平台,无法自托管 |
| Modal Sandbox | 容器 + gVisor 可选 | ~1s | 提供 Python/JS SDK,但偏函数式计算, 默认无长期有状态交互 | 适合批处理/函数,对 Agent 的多 轮交互支持不够直接 |
总结
一句话:如果你正在构建一个需要自主执行代码的 AI Agent——比如编程助手、数据分析机器人、自动化测试 Agent,并且你不想重复造轮子来解决“在隔离环境中安全跑代码”这个脏活,那 E2B 值得直接接上。它目前虽处于快速迭代阶段,但架构方向清晰,文档可读性好,完全可以在生产项目里认真考虑。
AI 项目推荐
智能体- 标签
- #智能体 #代码沙箱 #云沙箱 #基础设施 #安全执行
- 浏览
- 👁️ 7
- 发布日期
- 2026-09-09