E2B(仓库 e2b-dev/e2b,最近提交 2026-10-28)是一个开源的云沙箱基础设施:你的 AI 智能体生成了代码,不敢直接在本机跑?E2B 给它在云端开一个一次性、隔离的 Linux 沙箱,把命令、文件、浏览器都关在里面跑,跑完即销毁。GPT-5、Claude、Devin 这类"会写代码的 AI"背后,几乎都离不开 E2B 这类沙箱。
本文严格对照官方 README 给出 Python / JavaScript SDK 的完整接入与自托管方式。
一、项目介绍与适用场景
E2B 官方定位:"open-source infrastructure that allows you to run AI-generated code in secure isolated sandboxes in the cloud"——用 JavaScript SDK 或 Python SDK 启停沙箱、在里面跑命令、跑代码、甚至开桌面。
适用场景:
- AI 编程智能体:让 AI 生成的 Python/JS 代码在隔离沙箱里执行,避免污染本机;
- 数据科学助手:用户上传 CSV,AI 写 pandas 脚本,在沙箱里跑出图表;
- Web 浏览智能体:用 Desktop SDK 在沙箱里开 Chrome、截图、点鼠标;
- 自动批改 / 评测:批量跑学生提交的代码,互不干扰。
二、核心功能逐条拆解
- 云沙箱 API:
Sandbox.create()一行开一个临时 Linux 环境。 - 命令执行:
sandbox.commands.run('...')在沙箱里跑 shell 命令。 - Code Interpreter:
pip install e2b-code-interpreter后用run_code()直接跑 Python 代码片段。 - Desktop 桌面:
pip install e2b-desktop后可在沙箱里开 Chrome、截图、鼠标键盘。 - 多语言 SDK:Python(PyPI)与 JavaScript(npm
e2b)双 SDK。 - Cookbook:官方仓库 e2b-cookbook 提供与各种 LLM / Agent 框架的集成示例。
- 自托管运行时:通过 e2b-dev/runtime 仓库的 Embed 方案,可用 Terraform 部署到 AWS / GCP / Azure / 通用 Linux 机器。
三、全套官方链接
| 类型 | 链接 |
|---|---|
| GitHub 仓库 | https://github.com/e2b-dev/e2b |
| 官方文档 | https://e2b.dev/docs |
| 官方 Demo | 无独立 Demo,见 cookbook |
| License | Apache-2.0(仓库 LICENSE 确认) |
四、硬件与环境前置要求
官方 README 未列出硬性硬件门槛。SDK 本身极轻量,主要消耗在云端沙箱。
- Python 3.9+ 或 Node.js 18+;
- 一个 E2B 账号 + API Key(去 https://e2b.dev/dashboard?tab=keys 申请);
- 网络:能访问 E2B 云 API;
- 自托管:若用 Terraform 自托管,需一台可跑 Docker 的 Linux 机器(Embed 模式)或 AWS/GCP/Azure 账号。
五、多平台部署步骤
5.1 安装 SDK(官方 Quickstart)
Python:
pip install e2b
官方 README 原文。JavaScript/TypeScript:
npm i e2b
5.2 配置 API Key
官方 README 步骤:
- 注册 E2B 账号;
- 在 https://e2b.dev/dashboard?tab=keys 拿 API Key;
- 设环境变量:
export E2B_API_KEY=e2b_你的key
5.3 启动第一个沙箱并执行命令(官方示例)
Python 官方原文:
from e2b import Sandbox
with Sandbox.create() as sandbox:
result = sandbox.commands.run('echo "Hello from E2B!"')
print(result.stdout) # Hello from E2B!
逐段解释:
Sandbox.create():向 E2B 云端申请一个临时 Linux 沙箱;with块结束自动销毁沙箱;sandbox.commands.run('echo ...')在沙箱里执行 shell 命令;result.stdout拿到标准输出。
JavaScript 官方原文:
import Sandbox from 'e2b'
const sandbox = await Sandbox.create()
const result = await sandbox.commands.run('echo "Hello from E2B!"')
console.log(result.stdout) // Hello from E2B!
5.4 安装 Code Interpreter 跑 Python 代码
官方 README:
pip install e2b-code-interpreter # Python
# npm i @e2b/code-interpreter # JS
官方 JS 示例:
import { Sandbox } from '@e2b/code-interpreter'
const sandbox = await Sandbox.create()
const execution = await sandbox.runCode('x = 1; x += 1; x')
console.log(execution.text) // outputs 2
5.5 安装 Desktop SDK 开浏览器
官方 README:
pip install e2b-desktop # Python
# npm i @e2b/desktop # JS
官方 JS 示例:
import { Sandbox } from '@e2b/desktop'
const desktop = await Sandbox.create()
await desktop.launch('google-chrome')
const screenshot = await desktop.screenshot()
5.6 自托管运行时(Embed,官方提供)
官方 README 指向 e2b-dev/runtime 仓库的 embed/README.md,用 Terraform 部署。支持:
- AWS 🟢
- Google Cloud 🟢
- Azure 🟢
- 通用 Linux 机器(via Embed)🟢
官方未提供一键 Docker 镜像,自托管需按 runtime 仓库的 Terraform 方案执行,本文不展开其内部参数。
六、配置文件全部参数解释
| 参数名 | 作用 | 可选值 | 默认值 | 配置示例 | 改错后果 |
|---|---|---|---|---|---|
E2B_API_KEY |
云沙箱鉴权 | e2b_ 前缀的 key |
无 | export E2B_API_KEY=e2b_... |
未设置则 Sandbox.create() 401 |
Sandbox.create() 超时/生命周期 |
沙箱存活时长 | 官方 SDK 文档参数 | 5 分钟 | 见 SDK 文档 | 超时后沙箱自动销毁 |
其他 SDK 高级参数(env vars、metadata、template)以官方文档 https://e2b.dev/docs 为准,本文不臆造。
七、启动、后台常驻与开机自启
E2B 是 SDK 而非常驻服务,无 systemd 部署。若你要把它包成一个长期运行的微服务,可在你自己的后端里 pip install e2b,然后用 systemd 跑你的服务:
[Unit]
Description=My E2B Backend
After=network.target
[Service]
Type=simple
User=ubuntu
Environment="E2B_API_KEY=e2b_..."
WorkingDirectory=/home/ubuntu/myapp
ExecStart=/home/ubuntu/.venv/bin/python app.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
开机自启:sudo systemctl enable --now myapp。
八、功能实操教程
第 1 步:pip install e2b,export E2B_API_KEY=...。
第 2 步:写一个 test.py,粘贴 5.3 的 Python 示例,python test.py。
第 3 步:终端打印 Hello from E2B!,说明沙箱已成功在云端创建并执行命令。
第 4 步:把命令换成 pip list,看看沙箱预装了哪些包;换成 python --version 看沙箱 Python 版本。
第 5 步:装 e2b-code-interpreter,写一个"用户上传 CSV → AI 写 pandas → 沙箱跑出均值"的脚本,验证代码隔离执行。
第 6 步:装 e2b-desktop,按 5.5 开 Chrome 截图,验证桌面级自动化。
九、全套报错故障排查
-
报错:
Sandbox.create()401 / Unauthorized。 原因:E2B_API_KEY没设或写错。 解决:echo $E2B_API_KEY确认;去 dashboard 重新生成 key。 -
报错:
pip install e2b超时。 原因:PyPI 慢。 解决:换清华镜像-i https://pypi.tuna.tsinghua.edu.cn/simple。 -
报错:
commands.run超时。 原因:沙箱里跑的命令耗时超过默认等待时间。 解决:在 SDK 调用里加大超时参数(以官方 SDK 文档为准),或把长任务改后台跑。 -
报错:沙箱里没有某条命令。 原因:基础镜像不含该工具。 解决:先
sandbox.commands.run('apt install -y ...')装,或自建 template(见官方文档)。 -
报错:自托管 Embed 起不来。 原因:Terraform 依赖云账号权限。 解决:严格按 e2b-dev/runtime 的 embed/README.md 执行;本地机器需 Docker 可用。
十、升级、回滚与卸载
- 升级:
pip install -U e2b e2b-code-interpreter e2b-desktop。 - 回滚:
pip install e2b==<旧版本>。 - 卸载:
pip uninstall e2b e2b-code-interpreter e2b-desktop;沙箱是云端临时资源,无需清理。
十二、进阶:沙箱镜像、文件传输与多沙箱并发
自定义沙箱模板:默认沙箱是精简 Linux 镜像,缺的工具每次都 apt install 很慢。官方支持基于基础镜像打自定义 template(预装 pandas、ffmpeg、特定 Python 包),后续 Sandbox.create(template=...) 秒级启动,具体命令以 https://e2b.dev/docs 文档为准。
文件上传下载:SDK 提供 sandbox.files.write() 与 sandbox.files.read(),可以把用户上传的 CSV 推到沙箱里,跑完再把生成的图表下载回来。常见模式:前端传文件 → 你的后端存临时目录 → 调 E2B 沙箱执行 → 拉回结果给前端。
多沙箱并发:每个 Sandbox.create() 是独立隔离环境,天然支持并发。批量跑 100 个用户请求时,用 Python asyncio.gather 同时开 10–20 个沙箱,每个跑自己的任务;注意 E2B 云端有并发上限,大批量任务建议排队。
网络与出网控制:默认沙箱允许出网,AI 生成的代码可以 pip install、访问外网。生产环境如果你不信任 AI 生成的代码,配合 E2B 自托管 Embed 方案 + 云厂商安全组做网络白名单,避免沙箱被当成跳板。
十一、商用许可与合规风险提示
E2B 开源 SDK 采用 Apache-2.0,商用友好。
注意:
- 云沙箱按秒计费:自托管 Embed 方案免费,但托管在 AWS/GCP/Azure 会产生云资源费用;E2B Cloud 按沙箱时长计费。
- 代码安全:沙箱是隔离边界,但不要把生产密钥写进沙箱里跑;AI 生成的代码仍可能有恶意行为,建议配合网络策略。
- 数据合规:用户代码出了本机进入云端,涉及敏感数据时建议自托管 Embed 方案。
参考链接
- 官方 README:https://github.com/e2b-dev/e2b
- 官方文档:https://e2b.dev/docs
- 自托管 Embed:https://github.com/e2b-dev/runtime/blob/main/embed/README.md
- Cookbook:https://github.com/e2b-dev/e2b-cookbook