最近在做 AI Agent 相关的东西时,我越来越频繁地遇到一个问题:
如果 Agent 可以执行 Shell、安装依赖、修改文件、运行测试,甚至启动一个 Web 服务,那么这些操作到底应该在哪里执行?
最简单的答案可能是:
给它一台服务器。
但真正做起来以后,你会发现,这可能是一个比较危险的操作。
因为今天的 Agent,已经和几年前的 Chatbot 完全不是一回事了。
以前的 AI,大部分时候是在:

现在一个真正能够完成任务的 Agent,工作流可能已经变成:

它不再只是"告诉你应该怎么做"。
它开始动手操作了。
于是一个以前没那么重要的问题,突然变得非常重要:
我们到底应该把 Agent 的行动边界放在哪里?
我现在越来越觉得:
Agent 真正需要的,可能不只是一堆 Tool,而是一个真正属于它自己的 Runtime。
这也是我最近重新理解和分析"云沙箱"的原因。
一. 了解云沙箱
1.Agent 最危险的地方,恰恰是它真的能干活
假设你给一个 Coding Agent 这样的任务:
帮我把这个 Python 项目的依赖升级一下,运行测试,如果失败就继续修。
它可能会自主完成:
bash
git clone ...
pip install -r requirements.txt
pip install -U xxx
pytest
发现测试失败以后:
bash
修改 xxx.py
pytest
继续失败:
bash
pip install xxx
pytest
最后甚至可能:
bash
python app.py
curl localhost:8000
从 Agent 的角度看,这是一套非常正常的工作流。
但如果所有命令都直接发生在你的开发机、CI 主机甚至业务服务器上,问题就来了。
它可能修改宿主机文件、安装大量依赖、改变系统配置、启动长期进程、占满 CPU 和内存,甚至读取本来不应该接触的环境变量和网络资源。
更麻烦的是:
Agent 并不知道哪些操作对你的基础设施来说"太危险"。
它看到的只是一个目标。
为了完成目标,它会不断尝试下一步。
所以真正的问题其实不是:
Agent 到底够不够聪明?
而是:
当 Agent 越来越有行动能力以后,我们应该把它放在哪里?
2.第一反应通常是:Docker 不就行了吗?
很多开发者第一次接触 Agent Sandbox 时,都会冒出同一个想法:
不就是隔离环境吗?Docker 不就解决了吗?
这个判断不能说错。
Docker 确实已经提供了很多非常重要的基础能力:
text
Namespace
Cgroup
Filesystem
Image
Network
Process Isolation
我们完全可以:
bash
docker run ...
然后把 Agent 丢进去执行命令。
问题是:
"启动一个容器"和"提供一个 Agent Runtime",其实是两件事。
当你真的开始做这套系统,很快会发现容器启动只是第一步。
你还需要处理:

如果是多 Agent:
text
Agent A → Sandbox A
Agent B → Sandbox B
Agent C → Sandbox C
Agent D → Sandbox D
...
事情会继续变复杂。
怎么调度?
怎么限制资源?
怎么避免 Agent 之间互相影响?
沙箱异常以后怎么办?
工作结果怎么保存?
任务中断以后是否需要恢复?
生命周期怎么控制?
忘记销毁的环境怎么自动清理?
这些问题,本质上都是 Agent Runtime 需要回答的。把它们画出来,大概是这样的:

所以我现在更倾向于这么理解:
Docker 是构建 Sandbox 的一种底层技术,而 Sandbox 本身是一个 Runtime 问题。
容器解决的是"怎么隔离一个进程"。
Agent Runtime 需要解决的是:
怎么让一个 Agent 安全、持续、可观察地完成一整个任务。
3.云沙箱真正解决的,其实不是"执行代码"
如果你的需求只是:
text
代码
↓
执行
↓
返回结果
那它本质上更接近一个 Code Execution API。
比如:
http
POST /execute
输入一段 Python:
python
print(sum([1, 2, 3]))
返回:
text
6
这个模型很简单。
但真正的 Agent 通常不是这么工作的。
它更像:

这时候你真正需要的已经不是:
一个执行代码的 API。
而是:
一个可以临时交给 Agent 使用的计算环境。
也就是:
Agent Runtime。
这个方向现在已经非常明显。
阿里云在 2026 年 6 月正式发布 FC Agent Sandbox,官方将它定义为面向 AI Agent、代码执行、命令执行、文件处理和临时服务等场景的云端隔离执行环境。开发者可以创建 Sandbox,在其中运行命令、处理文件、执行代码和启动服务,再按生命周期释放。
腾讯云的 Agent 沙箱服务 AGSX 也明确面向 AI 智能体,并已经把沙箱从纯 Code Execution 扩展到了 Code、Browser、Computer、Mobile 等执行环境。
所以我觉得一个越来越明显的趋势是:
Sandbox 正在从"执行代码的地方",变成"Agent 工作的地方"。
二. 认识云沙箱
1.一次性任务和会话型任务,其实是两种完全不同的东西
理解 Agent Runtime,我觉得有一个很重要的区分:
一次性任务 和会话型任务。
比如:
帮我计算这份 CSV 的平均值。
可能只需要:
text
创建 Sandbox
↓
上传 CSV
↓
执行 Python
↓
输出结果
↓
销毁 Sandbox
整个环境用一次就结束。
它很像一个函数:
text
input
↓
function
↓
output
所以我更愿意把它理解成:
一次性 Sandbox = Function。
非常适合:
- 代码执行
- 数据分析
- 文件转换
- CI 任务
- 自动化脚本
- AI 生成代码验证
- 一次性的 Agent Tool
任务来了,创建环境。
任务结束,环境消失。
这和传统 Serverless 的思路其实非常接近。
2.Coding Agent 完全是另一回事
再看另一个任务:
帮我修复这个 GitHub 项目里的一个 Bug。
Agent 可能需要:

这里最大的问题是什么?
状态。
如果每执行一条命令都重新创建一个环境:
text
Command 1 → Sandbox 1
Command 2 → Sandbox 2
Command 3 → Sandbox 3
Command 4 → Sandbox 4
那么:
text
刚刚 clone 的项目没了
刚刚安装的依赖没了
刚刚修改的文件没了
刚刚启动的进程也没了
这显然不符合 Agent 的工作方式。
真正合理的模型应该是:

也就是说:
Agent 需要的不只是一次执行,而是一段有状态的计算会话。
所以我很喜欢一个简单的类比:
一次性任务像函数,会话型 Sandbox 更像进程。
这是 Agent Runtime 和传统 Code Execution 之间一个非常关键的区别。
3.Workspace 可能比 Command 更重要
进一步想,会发现 Agent 真正工作的对象其实也不是"某一条命令"。
而是:Workspace
例如一个 Coding Agent 真正面对的是:
text
/workspace
├── package.json
├── src/
├── tests/
├── README.md
└── node_modules/
它真正做的事情是:
也就是说:
Command 只是 Agent 操作 Workspace 的手段。
真正需要持续存在的,是 Workspace 本身。
这也是为什么我觉得,一个真正适合 Agent 的 Sandbox,接口模型不应该只围绕:
text
POST /execute
而应该围绕,这样架构图来设计:

这才更接近 Agent 实际完成任务的方式。
4.Agent Runtime 的核心,其实是"状态"
传统 Code Execution 最关心的问题是:
这段代码执行成功了吗?
但 Agent Runtime 还要回答很多别的问题:
- 当前环境还活着吗?
- 刚才安装的依赖还在吗?
- Agent 修改了哪些文件?
- 有没有进程正在运行?
- 当前命令执行到哪里了?
- 这个 Web 服务监听在哪个端口?
- 还有多少生命周期?
- 什么时候应该销毁?
- 任务结束后哪些结果需要保存?
这背后本质上都是同一个关键词: State
所以如果让我把一个 Agent Sandbox 拆开来看,应该是这样:
隔离只是其中一部分。
真正难的是:
如何在隔离的前提下,让 Agent 拥有一个短暂但完整的计算世界。
5.实时输出也不是"小功能"
还有一个特别容易被低估的能力:
Streaming。
比如 Agent 执行:
bash
npm install
或者:
bash
npm run build
如果整个命令执行十分钟,你显然不会希望十分钟以后才拿到一坨 stdout。
因为对于 Agent 来说,输出本身就是下一次决策的输入。
例如:

这意味着 Agent 其实在不断完成:
text
Action
↓
Observation
↓
Reasoning
↓
Action
所以流式日志并不只是为了"让开发者看起来舒服"。
它本身就是 Agent Runtime 的感知通道。
Agent 不只是需要执行命令,还需要观察命令是怎么执行的。
6.再往前一步:Sandbox 本身也可以变成一个 Tool
这也是 MCP 出现以后,我觉得很有意思的一个变化。
传统方式可能是:
text
Agent
↓
自己维护 Shell
↓
自己维护 Docker
↓
自己维护容器池
↓
自己处理生命周期
↓
自己收集日志
而另外一种思路是:
text
Agent
↓
Sandbox Tool
↓
Agent Runtime
对于 Agent 来说,它并不需要理解:
- Docker API
- Kubernetes Pod
- 容器调度
- 宿主机资源
它只需要理解几个高层动作:
- 创建一个执行环境
- 运行命令
- 读取文件
- 写入文件
- 观察输出
- 销毁环境
如果通过 MCP 暴露出来,它甚至可以进一步抽象成 Agent 可以直接选择和调用的 Tool。
于是基础设施复杂度继续往下沉。
我觉得这可能是 MCP 在 Agent 基础设施层一个很有价值的使用方式:
让 Agent 使用的是"能力",而不是底层基础设施。
三. 云沙箱产品调研
最近实际研究这类方案时,我也看了不少云沙箱产品。
相比一上来搭建完整的 Agent 平台,我反而比较关注一种更轻的方式:
先把 Agent 真正需要的 Runtime 抽出来。
百智云目前把 Cloud Sandbox 定义为 Isolated Agent Runtime,核心思路是给 Agent 提供独立的云端执行环境,并提供 API 与 MCP 两种接入方式。官方场景也主要集中在云端 Agent、多 Agent 平台和开放式 Agent 任务。
这和我前面讲的思路比较一致:
text
你的 Agent
│
▼
创建 Sandbox
│
▼
操作 Workspace
│
▼
执行 Command
│
▼
观察结果
│
▼
继续工作
│
▼
最终销毁
它不要求开发者首先接受一整套新的 Agent Framework。
你可以继续使用自己的:
- Claude
- Codex
- OpenCode
- 自研 Agent
- Agent Framework
然后只把"执行环境"这一层交出去。
这也是我觉得这种产品形态比较有意思的地方。
它解决的问题非常具体:
Agent 到底在哪里干活?
想看具体产品形态的话,可以直接查看百智云 Cloud Sandbox 的产品页。百智云云沙箱|Agent 云端运行环境
同时百智云云沙箱,也提供了很自然的接口模型:One-shot + Session
如果把前面的两种任务类型落到 API 上,其实模型非常自然。
对于一次性任务:
text
Agent
↓
Create Execution
↓
Execute
↓
stdout / stderr / workspace
↓
自动释放
例如:
http
POST /openapi/v1/executions/run
任务提交以后直接等待执行结果。
这类接口最适合:
- 运行一段 Python
- 处理一个 CSV
- 执行一个构建脚本
- 转换一个文件
- 验证模型生成的代码
另外一个容易被忽略、但非常工程化的设计是:
Idempotency Key。
假设 Agent 发起任务以后:
text
客户端发送请求
↓
服务端成功执行
↓
网络中断
↓
客户端没收到响应
这时候客户端根本不知道:
"任务失败了",还是"任务成功了但响应丢了"。
如果直接重试,就可能把任务执行两遍。
所以同一个逻辑任务最好有稳定的:
text
idempotency_key
网络异常时复用它。
这种能力听起来一点也不像"AI Feature"。
但真正把 Agent 放进生产环境以后,你会发现:
可靠性往往就是由这些看起来很无聊的基础设施细节组成的。
对于长任务,则完全是另一种模型:
http
POST /openapi/v1/sandboxes
先创建一个 Sandbox。
然后持续在同一个环境里执行:
http
POST /openapi/v1/sandboxes/:id/commands
整个过程可能是:

重点不是 API 长什么样。
而是:这些操作发生在同一个运行环境里
因此:
text
文件还在
依赖还在
中间结果还在
进程还在
Workspace 还在
直到整个 Agent Task 真正结束。
这正是 Coding Agent、Research Agent 这类长任务最需要的东西。
四. 云沙箱展望
1.正在形成新的 Agent 基础设施分层
以前我们讨论 Agent,通常画出来是:
text
Agent
│
┌────────┼────────┐
↓ ↓ ↓
Search Browser Tools
但如果 Agent 开始拥有越来越强的执行能力,我觉得未来可能更接近:
text
Agent
│
┌────────────┼────────────┐
↓ ↓ ↓
Search Browser Runtime
│
▼
Sandbox
│
┌──────────────┼─────────────┐
↓ ↓ ↓
Workspace Commands Network
Search 解决:
Agent 能不能看到外部世界。
Browser 解决:
Agent 能不能操作网页。
Sandbox 解决:
Agent 能不能安全地真正动手。
而且行业里的产品也已经不再只把 Sandbox 当作代码执行器。
腾讯云 AGSX 已经把执行环境扩展到 Code、Browser、Computer、Mobile 等不同形态;阿里云 FC Agent Sandbox 也把 Commands、Filesystem、Code Interpreter、Network 等能力拆成了明确的 Runtime 对象。
这背后其实是一件很值得关注的事情:
Agent 的"行动能力"正在逐渐基础设施化。
2.哪些 Agent 最需要 Sandbox?
我目前觉得最典型的是四类。
- 第一类当然是 Coding Agent:
text
Git Clone
↓
Install
↓
Code
↓
Test
↓
Build
↓
Run
几乎天然需要一个持续存在的 Workspace。
- 第二类是 Code Interpreter / Data Agent:
text
上传 CSV
↓
创建 Sandbox
↓
Python / Pandas
↓
数据分析
↓
生成图表
↓
导出文件
↓
销毁
- 第三类是 Research Agent。
它在研究过程中可能需要下载文件、编写 Python、清洗数据、跑统计程序、转换格式、生成报告。这些行为完全没必要发生在主业务服务器上。
- 第四类是 多 Agent 平台。
如果系统同时运行:
text
Agent A
Agent B
Agent C
Agent D
最自然的架构之一就是:
text
Agent A → Sandbox A
Agent B → Sandbox B
Agent C → Sandbox C
Agent D → Sandbox D
不同任务拥有自己的 Runtime 和 Workspace。
百智云目前也明确把多 Agent 平台列为 Cloud Sandbox 的适用场景之一,即按 Agent 或任务创建独立环境,并集中获取状态、日志和结果。
3.Agent 时代,我们可能要从"它会什么"转向"它能在哪里做什么"
我觉得这是 Sandbox 背后更值得讨论的一件事。
以前评价一个 AI,我们总喜欢问: 它会什么?
会不会写代码?
会不会搜索?
会不会做数据分析?
会不会操作浏览器?
但随着 Agent 能力增强,接下来可能还有一个同样重要的问题:
它能在哪里做这些事?
这两句话其实完全不同。
如果一个 Agent 只有:
text
LLM
+
Prompt
+
Tools
它更像一个会调用外部能力的智能系统。
但如果它逐渐拥有:
text
LLM
+
Tools
+
Memory
+
Workspace
+
Runtime
它就开始拥有一个真正可以持续工作的环境。
这个变化非常关键。
因为 Agent 不再只是:
"生成下一条答案。"
而是在:
维护一个任务状态,并不断作用于外部世界。
4.Server、Function 之后,正在出现第三种计算形态

以前我们习惯使用服务器:
text
Server
↓
长期存在
后来 Serverless 把很多工作变成:
text
Request
↓
Function
↓
Execute
↓
Destroy
而 Agent 带来的任务形态有点不一样:
text
任务开始
↓
创建环境
↓
Agent 持续工作
↓
环境保持状态
↓
反复执行和观察
↓
任务完成
↓
保存结果
↓
环境销毁
它既不像一台需要维护几个月甚至几年的服务器。
也不像执行几秒钟就消失的函数。
它更像:
一个跟着任务生命周期存在的临时计算环境。
所以我越来越喜欢一个词:
Session Sandbox。
它介于 Server 和 Function 之间。
对一个 Agent 来说,可能就是:
我的任务还没结束,所以我的电脑还不能关。
5.Sandbox 的安全思路,也和传统"限制能力"不太一样
以前做安全,我们经常想的是:
怎么限制一个程序能做什么?
于是不断禁止:
- 不能执行 Shell
- 不能安装依赖
- 不能访问网络
- 不能启动进程 = 不能写文件
但这和 Agent 的目标其实天然冲突。
因为如果一个 Coding Agent:
- 不能执行 Shell
- 不能安装依赖
- 不能改文件
- 不能运行测试
那它也就很难真正完成工作。
所以 Agent 时代可能需要换一个思路。
不是:
Agent 什么都不能做。
而是:
Agent 可以做很多事情,但这些事情只能发生在一个被限制住的环境里。
比如允许它:
- 执行 Shell
- 安装依赖
- 修改文件
- 运行代码
- 启动服务
- 访问指定网络
但前提是:
text
┌──────────────────────┐
│ Sandbox │
│ │
│ Agent 可以自由工作 │
│ │
└──────────────────────┘
↑
安全边界
换句话说:
我们不一定需要把 Agent 的能力限制得非常小,而可以给它一个足够大的自由空间,然后把"自由空间本身"限制住
我觉得这可能才是 Agent Sandbox 最核心的价值。
五. 总结
所以,现在怎么理解"云沙箱"?
以前我会说:
Sandbox 就是一个安全一点的 Docker。
现在我觉得这个定义太窄了。
对 Agent 来说,更准确的模型应该是这样
它不是单纯:
给 Agent 一个地方执行代码。
而是:
给 Agent 一个临时存在、可以持续操作、并且有明确边界的计算世界。
它很像一台服务器。
但有一个非常重要的区别:
它不是你的服务器。
它是:
Agent 的服务器。
参考阅读
百智云云沙箱|Agent 云端运行环境 定位为独立的 Isolated Agent Runtime,支持 API 与 MCP 接入。 查看百智云 Cloud Sandbox
阿里云 FC Agent Sandbox 面向 AI Agent 和代码执行场景的云端隔离运行环境。 查看阿里云 FC Agent Sandbox 文档
腾讯云 Agent 沙箱服务 AGSX 面向 AI 智能体的沙箱执行环境,覆盖 Code、Browser、Computer、Mobile 等形态。 查看腾讯云 AGSX