提供商对比
| 提供商 | 隔离方式 | 费用 | 适用场景 |
|---|---|---|---|
| Local | 无(直接在宿主机) | 免费 | 开发、可信代码 |
| Docker | 容器 | 免费 | 测试、可复现环境 |
| Daytona | 云端或自建 | 免费(自建) | 生产、团队环境 |
| E2B | 云端 | $0.15/小时 | 临时任务、CI |
| AgentBay | 阿里云 | ¥1/小时 | 中国区域 |
快速开始
配置提供商
在 Web UI 进入设置 → 沙箱,展开对应提供商的卡片,填写必填字段:
点击保存,配置存储到
| 提供商 | 必填字段 |
|---|---|
| Docker | 镜像名称、挂载路径 |
| E2B | API Key |
| Daytona | API Key、API URL |
| AgentBay | API Key |
~/.leon/sandboxes/<provider>.json。提供商配置
Docker
需要宿主机安装 Docker,无需 API Key。| 字段 | 默认值 | 说明 |
|---|---|---|
docker.image | python:3.12-slim | 使用的 Docker 镜像 |
docker.mount_path | /workspace | 容器内的工作目录 |
on_exit | pause | pause(保留状态)或 destroy(清空) |
E2B
云端沙箱,需要 E2B API Key。uv sync --extra e2b
Daytona
支持 Daytona SaaS 和自建实例。- SaaS
- 自建
uv sync --extra daytona
AgentBay
阿里云沙箱,适用于中国区域。uv sync --extra sandbox
API Key 解析顺序
- 配置文件字段(
e2b.api_key、daytona.api_key等) - 环境变量(
E2B_API_KEY、DAYTONA_API_KEY、AGENTBAY_API_KEY) ~/.leon/config.env
会话生命周期
on_exit 值 | 行为 |
|---|---|
pause | 退出时暂停,下次使用时恢复。文件、包、进程全部保留。 |
destroy | 退出时销毁,下次使用时全新创建。 |
pause — 跨重启保留所有状态。
通过 Web UI 管理会话
在资源页面:- 统一网格展示所有提供商的所有会话
- 点击会话卡片 → 详情面板(指标 + 文件浏览器)
- 通过 UI 或 API 暂停 / 恢复 / 销毁
API 接口
| 操作 | 接口 |
|---|---|
| 列出会话 | GET /api/sandbox/sessions |
| 暂停 | POST /api/sandbox/sessions/{id}/pause?provider={type} |
| 恢复 | POST /api/sandbox/sessions/{id}/resume?provider={type} |
| 销毁 | DELETE /api/sandbox/sessions/{id}?provider={type} |
| 获取指标 | GET /api/sandbox/sessions/{id}/metrics |
架构
沙箱是中间件栈之下的基础设施层:~/.leon/sandbox.db):
| 表 | 用途 |
|---|---|
sandbox_leases | 租约生命周期 — 提供商、期望状态/实际状态 |
sandbox_instances | 提供商侧的会话 ID |
abstract_terminals | 绑定到 Thread + 租约的虚拟终端 |
lease_resource_snapshots | CPU、内存、磁盘指标 |