三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

沙箱有哪些、谁开发的、如何让 Agent 在沙箱中运行,以及配置参数详解

沙箱有哪些、谁开发的、如何让 Agent 在沙箱中运行,以及配置参数详解

一、LangChain Deep Agents 支持的主要沙箱 & 开发者

沙箱名称开发者 / 公司简介隔离技术主要特点
LangSmith SandboxLangChain(官方)第一方托管沙箱,无需第三方账号官方管理与 LangSmith 深度集成、支持快照、Auth Proxy、Service URL
E2BE2B(捷克创始人 Vasek Mlejnsky & Tomas Valenta,2023 年成立)目前最流行的 AI Agent 沙箱之一Firecracker microVM启动极快(~150ms)、开源、高安全隔离、Fortune 100 广泛使用
DaytonaDaytona(克罗地亚,Ivan Burazin 等,2023 年成立,后转向 Agent 基础设施)可编程、可组合的计算环境容器 / Kata / gVisor 等冷启动极快(~90ms)、支持 GPU、持久化、开源友好
ModalModal Labs无服务器 AI 计算平台,沙箱是其能力之一gVisor原生 GPU 支持强、适合机器学习工作负载
RunloopRunloop AI(旧金山,约 2024–2025 年)专为 AI Coding Agent 设计的 DevboxmicroVM + 容器企业级、快照/蓝图、高性能
Vercel SandboxVercelVercel 平台原生沙箱Firecracker microVM与 Vercel 生态深度集成、按活跃 CPU 计费
AgentCoreAWS(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 = 永不自动停)
  • envVarsinitialFileslabels

Modal 常见参数

  • app/appName
  • image/imageName
  • cpumemory(MiB)
  • gpu
  • timeout/idleTimeoutMs
  • blockNetwork:是否阻断网络(安全相关)
  • envsecretsvolumes

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 的所有线程共享一个沙箱(状态会累积,需注意清理)

四、关键安全提醒(配置时务必注意)

  1. 永远不要把真实 API Key、数据库密码等密钥直接注入沙箱(环境变量、文件、secrets 都不安全)。
  2. 优先使用「宿主机侧工具 + 网络代理注入凭证」的方式。
  3. 能关网络就关(blockNetwork等参数)。
  4. 用完一定要delete/kill/stop/terminate,并设置合理的 TTL。
  5. 对 Agent 的工具调用开启 Human-in-the-loop 审批更安全。
← 返回列表