E2B:为 AI 智能体打造的云端代码沙箱基础设施

E2B:为 AI 智能体打造的云端代码沙箱基础设施

智能体

📖 简介

E2B 是专为 AI 智能体设计的代码解释沙箱,毫秒级启动一个隔离的云端环境让 Agent 安全地写代码、跑命令、开浏览器,内置文件系统与超时控制,Cursor 等产品的安全代码执行底座。

📝 详细介绍

E2B:为AI智能体打造的轻量级代码执行沙箱

E2B 解决了一个具体问题:让 AI 智能体(Agent)能以每秒级速度启动一个隔离的、可编程的云端环境,并安全地执行任意代码、读写文件、运行命令,用完就销毁。它省掉了自己维护 Kubernetes + 容器安全策略 + 资源调度的负担,把“给 Agent 一个临时电脑”变成了一次 API 调用。

GitHub 数据

指标
Stars7.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。这带来了三个直接收益:

  1. 安全边界硬:Agent 可能执行任意恶意代码,VM 从内核层面隔离,攻击面远小于共享容器的 user-space 隔离。即使逃逸也只是落到一个临时 VM 中。
  2. 细粒度资源控制:每个沙箱有独立 CPU/内存配额,不会出现“某个疯狂 Agent 把宿主机 CPU 占满”的列车事故。配额在启动时直接指定。
  3. 快速冷启: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 项目推荐

智能体
标签
#智能体 #代码沙箱 #云沙箱 #基础设施 #安全执行
浏览
👁️ 8
发布日期
2026-09-09