Skip to content

沙箱

在隔离环境中执行代码。

Agent 生成代码、与文件系统交互、运行 shell 命令。沙箱通过创建执行环境与主机系统之间的隔离边界,防止 Agent 访问凭证、文件或网络。

在 Deep Agents 中,沙箱是后端,定义 Agent 操作的环境。与仅暴露文件操作的其他后端不同,沙箱后端还给 Agent 提供了 execute 工具用于运行 shell 命令。

为什么使用沙箱?

沙箱用于安全。它们让 Agent 在隔离环境中执行任意代码、访问文件和使用网络,而不会泄露你的凭证、本地文件或主机系统。

沙箱特别适用于:

  • 编码 Agent — 使用 shell、git、克隆仓库、运行构建和测试
  • 数据分析 Agent — 加载文件、安装数据分析库、运行统计分析

基本用法

python
from deepagents import create_deep_agent
from deepagents.backends import LocalShellBackend

# 本地沙箱(无隔离 - 仅用于开发环境)
agent = create_deep_agent(
    model="openai:gpt-4o",
    backend=LocalShellBackend(
        root_dir=".",
        env={"PATH": "/usr/bin:/bin"},
    ),
)

可用的沙箱提供商

bash
pip install langchain-modal
python
import modal
from deepagents import create_deep_agent
from langchain_modal import ModalSandbox

app = modal.App.lookup("your-app")
modal_sandbox = modal.Sandbox.create(app=app)
backend = ModalSandbox(sandbox=modal_sandbox)

agent = create_deep_agent(
    model="openai:gpt-4o",
    backend=backend,
)

Daytona

bash
pip install langchain-daytona
python
from daytona import Daytona
from deepagents import create_deep_agent
from langchain_daytona import DaytonaSandbox

sandbox = Daytona().create()
backend = DaytonaSandbox(sandbox=sandbox)

agent = create_deep_agent(
    model="openai:gpt-4o",
    backend=backend,
)

Runloop

bash
pip install langchain-runloop
python
from deepagents import create_deep_agent
from langchain_runloop import RunloopSandbox
from runloop_api_client import RunloopSDK

client = RunloopSDK(bearer_token=os.environ["RUNLOOP_API_KEY"])
devbox = client.devbox.create()
backend = RunloopSandbox(devbox=devbox)

agent = create_deep_agent(
    model="openai:gpt-4o",
    backend=backend,
)

生命周期

大多数应用为每个线程创建一个沙箱。沙箱消耗资源,使用后应关闭:

python
try:
    result = agent.invoke({"messages": [...]})
finally:
    sandbox.stop()  # 或 modal_sandbox.terminate() / devbox.shutdown()

下一步

本站为非官方中文学习站点,不代表 LangChain 官方。部分内容参考官方文档并重新整理为中文学习笔记。