一、LangChain Deep Agents 支持的主要沙箱 & 开发者
| 沙箱名称 | 开发者 / 公司 | 简介 | 隔离技术 | 主要特点 |
|---|---|---|---|---|
| LangSmith Sandbox | LangChain(官方) | 第一方托管沙箱,无需第三方账号 | 官方管理 | 与 LangSmith 深度集成、支持快照、Auth Proxy、Service URL |
| E2B | E2B(捷克创始人 Vasek Mlejnsky & Tomas Valenta,2023 年成立) | 目前最流行的 AI Agent 沙箱之一 | Firecracker microVM | 启动极快(~150ms)、开源、高安全隔离、Fortune 100 广泛使用 |
| Daytona | Daytona(克罗地亚,Ivan Burazin 等,2023 年成立,后转向 Agent 基础设施) | 可编程、可组合的计算环境 | 容器 / Kata / gVisor 等 | 冷启动极快(~90ms)、支持 GPU、持久化、开源友好 |
| Modal | Modal Labs | 无服务器 AI 计算平台,沙箱是其能力之一 | gVisor | 原生 GPU 支持强、适合机器学习工作负载 |
| Runloop | Runloop AI(旧金山,约 2024–2025 年) | 专为 AI Coding Agent 设计的 Devbox | microVM + 容器 | 企业级、快照/蓝图、高性能 |
| Vercel Sandbox | Vercel | Vercel 平台原生沙箱 | Firecracker microVM | 与 Vercel 生态深度集成、按活跃 CPU 计费 |
| AgentCore | AWS(Bedrock AgentCore Code Interpreter) | AWS 官方代码解释器沙箱 | AWS 基础设施 | 适合已在 AWS 生态的用户 |
此外还可通过自定义方式接入其他提供商(如 NVIDIA OpenShell 等)。
二、让 Agent 在沙箱中运行的具体方式(两种模式)
LangChain 推荐的是Sandbox as Tool模式(Agent 跑在你这边,沙箱只负责执行):
1. Python 代码方式(最常用)
以几个主流提供商为例:
LangSmith(官方推荐入门)
fromdeepagentsimportcreate_deep_agentfromdeepagents.backendsimportLangSmithSandboxfromlangsmith.sandboximportSandboxClientfromlangchain_anthropicimportChatAnthropic client=SandboxClient()ls_sandbox=client.create_sandbox()# 可加 name、idle_ttl_seconds 等参数backend=LangSmithSandbox(sandbox=ls_sandbox)agent=create_deep_agent(model=ChatAnthropic(model="claude-sonnet-4-6"),system_prompt="You are a Python coding assistant with sandbox access.",backend=backend,# 关键:把沙箱后端传进去)try:result=agent.invoke({"messages":[{"role":"user","content":"写一个小包并跑 pytest"}]})finally:client.delete_sandbox(ls_sandbox.name)# 务必清理E2B
frome2bimportSandboxfromlangchain_e2bimportE2BSandbox e2b_sandbox=Sandbox.create()backend=E2BSandbox(sandbox=e2b_sandbox)agent=create_deep_agent(...,backend=backend)# 用完后e2b_sandbox.kill()Daytona
fromdaytonaimportDaytonafromlangchain_daytonaimportDaytonaSandbox sandbox=Daytona().create()backend=DaytonaSandbox(sandbox=sandbox)agent=create_deep_agent(...,backend=backend)# 用完后sandbox.stop()Modal / Runloop / Vercel写法类似,只是创建沙箱的 SDK 不同。
2. Deep Agents Code CLI 方式(命令行快速启动)
# 安装对应依赖后dcode--sandboxlangsmith dcode--sandboxe2b dcode--sandboxdaytona dcode--sandboxmodal dcode--sandboxrunloop dcode--sandboxvercel# 常用附加参数dcode--sandboxdaytona --sandbox-setup ./setup.sh# 创建后先跑初始化脚本dcode--sandboxrunloop --sandbox-id dbx_abc123# 复用已有沙箱dcode--sandboxlangsmith --sandbox-snapshot-name my-snap# 使用/创建快照三、配置参数有哪些、怎么配置、字段含义
配置分两层:
A. 创建沙箱时的参数(各提供商略有差异)
LangSmith 常见参数
name:沙箱名称(方便后续查找/复用)idle_ttl_seconds:空闲多少秒后自动清理(强烈建议设置)ttl_seconds:总生命周期template_name/snapshot_id:从模板或快照启动vcpus/mem_bytes/fs_capacity_bytes:CPU、内存、磁盘配额env_vars:注入环境变量(不建议放敏感密钥)
Daytona 常见参数
language:"python"/"typescript"/"javascript"timeout:命令默认超时(秒)target:区域(us/eu)image:自定义 Docker 镜像snapshot:从快照创建resources:{cpu, memory, disk}(需配合 image)autoStopInterval:空闲自动停止分钟数(0 = 永不自动停)envVars、initialFiles、labels
Modal 常见参数
app/appNameimage/imageNamecpu、memory(MiB)gputimeout/idleTimeoutMsblockNetwork:是否阻断网络(安全相关)env、secrets、volumes
E2B
- 主要通过
Sandbox.create()的 template、timeout、metadata 等 - 支持自定义环境变量、文件预置
B. Deep Agents / CLI 层面的配置
CLI Flags
| 参数 | 含义 |
|---|---|
--sandbox TYPE | 指定提供商(langsmith / e2b / daytona 等) |
--sandbox-id ID | 复用已有沙箱(跳过创建和清理) |
--sandbox-setup PATH | 创建后执行的初始化脚本路径 |
--sandbox-snapshot-name NAME | 使用或创建快照 |
配置文件方式(~/.deepagents/config.toml)
[sandboxes] default = "daytona" [sandboxes.providers.myprovider] class_path = "mypackage.provider:MyProvider" working_dir = "/workspace" supports_sandbox_id = true supports_snapshot_name = false [sandboxes.providers.myprovider.params] region = "us-east-1" # 其他传给 get_or_create 的参数C. 作用域配置(Lifecycle)
- Thread-scoped(默认):每个对话线程独立沙箱
- Assistant-scoped:同一 Assistant 的所有线程共享一个沙箱(状态会累积,需注意清理)
四、关键安全提醒(配置时务必注意)
- 永远不要把真实 API Key、数据库密码等密钥直接注入沙箱(环境变量、文件、secrets 都不安全)。
- 优先使用「宿主机侧工具 + 网络代理注入凭证」的方式。
- 能关网络就关(
blockNetwork等参数)。 - 用完一定要
delete/kill/stop/terminate,并设置合理的 TTL。 - 对 Agent 的工具调用开启 Human-in-the-loop 审批更安全。