
前记:当我们谈论 AI Agent 时,大多数目光聚焦于模型能力、Prompt 工程和编排逻辑。但有一个底层问题常常被忽视——智能体到底运行在哪里? 本文将从运行环境与沙盒的视角,拆解智能体基础设施的设计哲学与工程实践。
在展开之前,需要先区分两个容易混淆的概念:
智能体运行环境(Agent Runtime) 是智能体实际执行的整体基础设施,包括模型推理、工具调用、内存管理、消息传递等核心能力。它是智能体"活着"并工作的完整系统。
智能体沙盒(Agent Sandbox) 是运行环境中的一个隔离子系统,专门用于安全地执行智能体的高风险操作(如运行任意代码、操作文件系统)。
打个比方:运行环境像是一栋办公大楼的整体运营体系(包括任务调度、沟通渠道、办公设施),而沙盒像是大楼里的一间独立实验室——你可以在里面自由实验,但实验产生的影响被限制在这个房间内,不会波及整栋大楼。
从运行环境需求的角度,智能体可以按执行特征分为五大类:
类型 | 典型场景 | 关键特征 |
|---|---|---|
对话型 | 客服、知识问答、咨询助手 | 无副作用、无状态、高并发、低延迟 |
工具调用型 | API 编排、数据查询、流程自动化 | 有外部调用、可能有写入副作用 |
代码执行型 | 数据分析、代码生成与运行 | 执行任意代码、安全风险最高 |
多步规划型 | 复杂推理、任务拆解、长链执行 | 执行时间长、中间状态多 |
多智能体协作型 | 角色分工、会议模拟、协同决策 | 多 Agent 并行、权限边界不同 |
对智能体运行环境进行分类时,业界存在两套体系——一套按"跑在哪里"分,另一套按"隔离多强"分。理解它们的关系,是做出正确架构选型的前提。
部署形态 | 说明 | 典型场景 |
|---|---|---|
本地进程环境 | 宿主机直接运行,CLI 工具 / 脚本 | OpenClaw 跑在 Mac Mini 上 |
浏览器环境 | WebAssembly / JS,前端集成 | LangChain 的 Pyodide 沙盒 |
沙箱环境 | 隔离执行,受限权限 | Dify 的 DifySandbox |
容器 / VM 环境 | Docker / K8s,强隔离可复现 | LangGraph 的 Agent Sandbox |
云服务环境 | 托管基础设施,弹性伸缩 | LangGraph Platform 托管版 |
边缘 / IoT 环境 | 设备端推理,低延迟离线可用 | 嵌入式设备上的轻量 Agent |
层级 | 隔离手段 | 启动延迟 | 安全强度 |
|---|---|---|---|
L1 · 进程内 | 线程 / 协程,共享宿主进程 | ~0ms | 最弱 |
L2 · 容器沙盒 | namespace / cgroup / Seccomp | ~1-5s | 较强 |
L3 · microVM | gVisor / Firecracker,内核级隔离 | ~3-10s | 很强 |
L4 · 完整 VM | 独立 OS 内核,硬件级隔离 | ~10-60s | 最强 |
关键认知:这两个维度是正交的,不是互相替代的。同一种部署形态可以实现不同的隔离等级,同一个隔离等级也可以出现在不同的部署形态中。在做架构决策时,需要先根据场景选择部署形态,再根据 Agent 的行为风险选择隔离等级。
L1 · 进程内运行环境
线程或协程级隔离,共享宿主进程。启动延迟约 0ms,无额外资源开销,但隔离最弱。适合对话型智能体这种无副作用、纯推理的场景。
L2 · 容器化沙盒
独立容器,通过 namespace 和 cgroup 实现隔离。启动延迟约 1-5 秒,资源消耗中等,隔离较强。这是大多数需要代码执行的智能体的标准选择。
L3 · microVM 沙盒
使用 Firecracker 或 gVisor 等技术,在容器基础上增加内核级隔离。启动延迟约 3-10 秒,安全性显著优于普通容器。适合执行完全不可信的用户代码或有合规要求的场景。
L4 · 完整虚拟机沙盒
独立 VM,完整 OS 内核,硬件级隔离。启动延迟约 10-60 秒,资源消耗最高,但隔离最强。仅在极端合规要求(金融、医疗、政务)下才需要引入。
智能体类型 | L1 进程内 | L2 容器 | L3 microVM | L4 完整VM |
|---|---|---|---|---|
对话型 | ✅ 最佳 | 可用 | 不适合 | 不适合 |
工具调用型 | 推荐* | ✅ 最佳 | 可用 | 不适合 |
代码执行型 | ❌ | ✅ 最佳 | 推荐** | 可用*** |
多步规划型 | 可用 | ✅ 最佳 | 推荐 | 可用 |
多智能体协作型 | 可用 | ✅ 最佳 | 推荐 | 可用 |
* 工具可信时;** 不可信代码;*** 合规场景
决策树:
对于企业级场景,答案是混合模式——维护一个弹性热池,同时支持溢出时按需创建:
AgentSandbox CRD,Operator 负责 Pod 的创建、回收、健康检查,比直接调 K8s API 更声明式、更可控。Dify 是当下最受欢迎的低代码 LLM 应用开发平台之一(GitHub Stars 超 100K)。其设计哲学一句话概括:部署简洁度优先,用进程级隔离换取零冷启动。
服务 | 角色 | 运行环境层级 |
|---|---|---|
api | Flask 编排引擎,处理会话、工具编排、模型调用 | L1 进程内 |
worker | Celery 异步任务处理 | L1 进程内 |
sandbox | DifySandbox,代码执行沙盒 | L2 单容器 |
plugin_daemon | 插件生命周期管理 | L1 子进程 |
ssrf_proxy | Squid 出口代理 | 网络隔离层 |
关键设计决策:单容器 + 多任务,而非每个代码执行请求创建一个新容器。在单个容器内部做多层进程级隔离:
第一层:Seccomp 系统调用白名单 — 拦截所有系统访问尝试,只允许白名单中的 syscall(白名单而非黑名单)。
第二层:chroot 文件系统隔离 — 将进程根目录更改为临时目录,每个代码执行任务拥有独立的文件系统视图。
第三层:权限降级 — 进入用户代码逻辑前,将进程的用户/组切换为非 root,防止 chroot 逃逸。
第四层:网络隔离 — 沙盒运行在 Docker 的 internal 网络中,所有网络请求必须通过 Squid 代理容器转发,由代理做出口白名单控制。
✅ 优点
部署极简,冷启动为零,代码执行延迟低。Seccomp + chroot 在大多数场景下安全性足够。
⚠️ 局限
隔离强度低于 K8s Pod 级方案,共享宿主内核。高合规场景(金融、医疗)可能不够用。社区版不支持水平扩展。
LangGraph 的运行环境设计分为三个清晰的层次。
LangGraph 的核心运行时基于 Google 的 Pregel 算法实现,采用 BSP(批量同步并行) 执行模型:
阶段 | 说明 |
|---|---|
Plan | 确定本轮需要执行的 Actor(图节点) |
Execution | 并行执行所有 Actor,直到完成或超时 |
Update | 用 Actor 的输出更新通信 Channel |
关键设计是 Checkpoint 机制——每步执行后将图的状态快照异步写入 PostgreSQL,支持崩溃恢复和 Time Travel(回到任意历史步骤重放)。
模式 | 架构 | 适用场景 |
|---|---|---|
Single host | API Server 直接管理任务队列 | 开发环境 |
Split API + Queue | API 与 Worker 分离,Redis 做信令 | 生产环境 |
Distributed runtime | 编排与执行进程完全分离 | 大规模场景 |
LangGraph 的沙盒已作为 Kubernetes SIG Apps 的正式子项目启动,托管在 kubernetes-sigs/agent-sandbox。每个沙盒实例 = 独立 Pod + PVC + NetworkPolicy,是真正的 Pod 级隔离。
四大核心组件:
Templates(模板)
沙盒的"蓝图",定义容器镜像、资源限制(K8s 单位)、存储卷和 Auth Proxy 规则。
Warm Pools(预热池)
通过专用 CRD 维护预热 Pod 池,沙盒被消费后自动补充。冷启动延迟可降到一秒以内,比冷启动快 90%。
Auth Proxy(认证代理)
让沙盒内可以安全调用外部 API(OpenAI、GitHub 等),无需硬编码密钥。比 Dify 的 Squid 代理更精细——不仅控制域名访问,还自动注入认证凭证。
Sandbox SDK
Python / TypeScript 编程接口,支持命令执行(带超时)、文件读写、流式输出、非阻塞执行和 TCP 隧道。
维度 | LangGraph | Dify |
|---|---|---|
核心运行时 | Pregel(BSP 算法),确定性并发 | Flask + Celery,队列化工作流 |
代码沙盒 | L2 独立 K8s Pod(每沙盒 = Pod + PVC) | L2 单容器多任务(Seccomp + chroot) |
冷启动方案 | Warm Pool CRD,自动补充 | 无冷启动(进程级创建) |
网络隔离 | K8s NetworkPolicy + Auth Proxy | Docker internal + Squid 代理 |
状态持久化 | Checkpoint(每步快照 + Time Travel) | PostgreSQL + Redis |
K8s 原生度 | K8s SIG 子项目级标准 | Docker Compose 为主 |
适合场景 | Coding Agent、长运行任务、高安全要求 | 低代码工作流、轻量代码节点 |
OpenClaw 是 2025 年底发布的开源自主 AI 智能体,2026 年 1 月正式更名后迅速走红,不到四个月 GitHub 获得超过 25 万星标,超越 React 成为最受关注的软件项目。Nvidia CEO 黄仁勋称其"可能是有史以来最重要的软件发布之一"。
它是一个罕见的全类型智能体——同时覆盖对话型、工具调用型、代码执行型、多步规划型,可以读写文件、运行 shell 命令、浏览网站、发送邮件、控制 API、跨应用自动化任务。
OpenClaw 通常运行在 Mac Mini 或 VPS 上,是一个 Node.js 进程,直接跑在用户的操作系统上。读写的是真实文件系统,执行的是真实 shell。没有容器隔离,没有 Seccomp 过滤,没有 chroot,没有网络白名单。
攻击链:处理外部内容(邮件/网页/文档)→ Prompt Injection 攻击 → 诱导 LLM 执行恶意指令 → 操作系统级权限 → 读取任意文件、窃取凭证。
Nvidia 在 GTC 2026 发布了 NemoClaw 栈,核心组件 OpenShell 本质上就是给 OpenClaw 补上运行环境隔离层——包含沙盒的运行时,通过执行安全、网络和隐私护栏使自主智能体更安全地部署和扩展。这完美验证了:一个拥有代码执行和系统操作能力的智能体,必须有运行环境隔离。
第一阶段 · 无隔离时代
早期 LLM 应用本质上是 API 调用封装,"运行环境"概念不存在——因为不需要。
第二阶段 · 进程级隔离
Code Interpreter 范式兴起,安全问题浮出水面。Dify 的 DifySandbox 是代表——Seccomp + chroot,务实地解决大部分安全问题,保持部署简洁。
第三阶段 · 容器/Pod 级隔离 + OpenClaw 教训
Coding Agent 出现(Devin、Cursor Agent 等),每个 Agent 会话需要独立容器。LangGraph Agent Sandbox 代表这个方向。OpenClaw 的爆红与安全危机从反面证明:智能体的能力边界,必须有对应的安全边界来约束。
第四阶段 · K8s 原生标准化(当前进行时)
Google 主导的 kubernetes-sigs/agent-sandbox 将沙盒管理提升为 K8s 社区级标准,沙盒正像 Deployment、Service 一样成为 K8s 原生概念。
kubernetes-sigs/agent-sandbox 标志着沙盒正从"各自实现"走向"行业标准"。未来开发者不再需要关心隔离的实现细节。参考资料