简介
Modal Sandbox 是程序化启动的隔离 Linux 环境 —— 适合跑 agent 生成的代码、微调、不可信用户代码。自定义 Docker 风格镜像、可选 GPU、持久 volume、亚秒级冷启动。适合需要安全执行生成的 Python / shell / Node 代码的 AI agent。需要 Modal SDK(Python)。装机时间 5 分钟。
起一个 sandbox
import modal
app = modal.App("agent-sandbox")
image = modal.Image.debian_slim(python_version="3.12").pip_install("pandas", "numpy", "matplotlib")
@app.function(image=image)
def run_agent_code(code: str):
sb = modal.Sandbox.create(
image=image,
cpu=2.0,
memory=4096,
timeout=300,
app=app,
)
process = sb.exec("python", "-c", code)
stdout = process.stdout.read()
stderr = process.stderr.read()
sb.terminate()
return {"stdout": stdout, "stderr": stderr, "exit_code": process.returncode}带持久存储的 sandbox
volume = modal.Volume.from_name("agent-workspace", create_if_missing=True)
sb = modal.Sandbox.create(
image=image,
volumes={"/workspace": volume},
workdir="/workspace",
)
# 写到 /workspace 的文件跨 sandbox 保留
sb.exec("python", "fetch_data.py")
volume.commit()
# 后面的 sandbox 读同样的文件
sb2 = modal.Sandbox.create(volumes={"/workspace": volume})
sb2.exec("python", "process_data.py")GPU sandbox
sb = modal.Sandbox.create(
image=image,
gpu="A10G", # 或 "H100" / "T4" 等
timeout=3600,
)
sb.exec("python", "train.py")为啥用 Modal Sandbox 而不是本地 Docker
- 启动 <1s,Docker 要几十秒
- 预构建镜像在平台层缓存
- 按执行秒计费
- 同一 SDK 涵盖 Function / Sandbox / Volume / GPU
- 自带监控、日志、仪表盘
FAQ
Q: Modal 免费吗? A: Modal 有免费档(每月 $30 平台 credit)。之后按计算秒(CPU + 内存 + GPU)收费。没有平台费 —— 只算资源用量。
Q: 跟 E2B 啥区别? A: E2B 和 Modal Sandbox 高度重叠。E2B 优化「沙箱即产品」(最快冷启动、默认隔离网络)。Modal 优化整个 Modal 平台(Function / Volume / 队列 / GPU)。都能跑 agent 代码;按生态适配选。
Q: 能在 sandbox 里装自定义包吗?
A: 能 —— 用 modal.Image.debian_slim().pip_install(...) 或 apt_install(...) 或 dockerfile_commands(...) 定义镜像。镜像构建一次,缓存以加速冷启动。