2025 年 10 月 29 日
随着 LLM 的持续演进,AI 的应用形态经历了三代跃迁:
Agent 能够自主感知环境、规划步骤、调用工具,能够像人类一样操作计算机:自动浏览网页收集信息、生成并运行代码分析数据、执行系统命令管理文件,甚至通过可视化界面完成复杂的多步骤操作。这种能力使 Agent 的交付成果接近甚至超越人类专业水准。


一台配置完善的电脑能显著提升人类的办公效率;同样,一个功能强大的沙箱环境也能提升 Agent 的任务质量与执行速度。
一句话介绍:AIO Sandbox 在一个沙盒内中集成浏览器、代码执行、终端、可视化接管、正反向代理、MCP、鉴权等基础功能,可根据需求进行沙盒环境定制,让不同的 Agent “在一个环境容器内中更高效地完成任务”。


/mcp 协议直连沙箱能力,同时提供 API / SDK 定制沙箱工具集。{port}-{domain} 泛域名或 /proxy|/absproxy/{port} 路径映射到沙箱内服务(便于预览/演示)。
| 指令 | 回放 | 截图 |
|---|---|---|
| 帮我设计一个有趣的网站,为在上小学的孩子介绍侏罗纪和白垩纪时期的蜥脚类恐龙。希望网站是卡通风格的。 | Replay | ![]() |
| 搜索关于字节跳动 Seed 1.6 模型的新闻,然后以现代风格编写一个网页并部署 | Replay | ![]() |
| 根据这张 OSWorld 图片,请在互联网上查找最新信息并为其设计一个现代化的网站。 | Replay | ![]() |
| 玩 Poki 2048 游戏 | Replay | ![]() |
一键部署 All-in-One Sandbox 应用--函数服务-火山引擎

前置需要安装 Docker,一键本地启动:

AIO Sandbox 面向 Agent 提供 Browser、File、Shell、Code 等基础能力,提供可扩展性支持开发者根据 Agent 需求组合与定制专属沙箱(如AIO Sandbox for 移动端/医疗/法务/金融/科研)。
沙箱定制程度依次递增:
/mcp 接入点对 Agent 即插即用,适用于快速 PoC Agent 验证。web_search搜索);同时扩展出 Skills 实现特定沙盒任务的自动化处理。FROM aio.sandbox基础镜像,安装特定的基础依赖(如多媒体/图像处理等),挂载自定义服务(例如 /custom_tools/ocr 图像识别)。

面向 Agent 的浏览器环境,核心在于提供出 CDP 和 VNC,主流 Browser Use 框架都可以直接使用; AIO 提供了基于 x11 的浏览器 GUI 视觉操作接口,可以与 CDP 方式组合出更高效、更低风控率的 Browser Use 方案。

CDP (Chrome Devtools Protocol)是一种用于与 Chrome 或 Chromium 浏览器通信的协议,通过 WebSocket 提供浏览器控制 API,可以执行导航与加载、DOM 操作、JS 执行/调试、网络拦截与模拟、截图与渲染、安全与权限等。 为更直观了解,以下示例是用 CDP 发起一个 navigate 页面导航指令:
访问 http://localhost:9222/json/version,其中webSocketDebuggerUrl就是 CDP 地址:
与 CDP 建立 WebSocket 连接后,就可以执行浏览器指令:

注:AIO Sandbox 不直接暴露 CDP 接口
/json/version,而是通过 uvicorn 服务中转 CDP 并增加了心跳检测,避免出现 ws 断连问题。
截图
不同于基于 CDP 的截图,视觉的截图 /v1/browser/screenshot是带 Tabs(即整个浏览器窗口),操作也是面向整个浏览器窗口。
| GUI 浏览器截图(Tabs) | 基于 CDP 的页面截图(Page) |
|---|---|
![]() | ![]() |
不同于 CDP 的浏览器操作,视觉操作 /v1/browser/actions上模拟人类行为进行点击、输入、滑动等操作,可以减少目标网站的风控策略。
统一动作空间 将 GUI 操作抽象为可组合的最小原子动作,如移动鼠标、点击、拖动、滚动、按键、输入文本,以及额外的工具函数如等待,尽可能对齐 VLM 视觉模型在执行实际动作的一致性。
| action_type | 描述 | 必需参数 | 可选参数 |
|---|---|---|---|
MOVE_TO | 移动鼠标到指定位置 | x, y | - |
MOVE_REL | 移动当前鼠标的相对位置 | x_offset,y_offset | - |
CLICK | 点击操作 | - | x, y, button, num_clicks |
MOUSE_DOWN | 按下鼠标按钮 | - | button |
MOUSE_UP | 释放鼠标按钮 | - | button |
RIGHT_CLICK | 右键点击 | - | x, y |
DOUBLE_CLICK | 双击 | - | x, y |
DRAG_TO | 拖拽到指定位置 | x, y | - |
DRAG_REL | 当前鼠标拖拽的相对位置 | x_offset,y_offset | - |
SCROLL | 滚动操作 | - | dx, dy |
TYPING | 输入文本 | text | - |
PRESS | 按键 | key | - |
KEY_DOWN | 按下键盘按键 | key | - |
KEY_UP | 释放键盘按键 | key | - |
HOTKEY | 组合键 | keys (数组),例如:["ctrl", "c"] | - |
WAIT | 等待 | duration 时间(秒 s) | - |
当 Browser Use 遇到要登录的情况,一般需要人工接管,需要提供可交互的浏览器界面,目前有两种做法:
/vnc/index.html页面,用户可直接交互。
两种接管方式的差异大致如下:
| 对比维度 | VNC | Canvas + CDP(Chrome DevTools Protocol) |
|---|---|---|
| 技术原理 | 远程桌面协议,传输整个屏幕像素 | 通过 CDP 控制浏览器,Canvas 渲染内容 |
| 传输协议 | RFB (Remote Framebuffer) | WebSocket + CDP |
| 传输内容 | 完整浏览器画面(有 Tabs) | 仅浏览器当前 page 内容(默认没有 Tabs,可以单独实现) |
| 带宽占用 | 高(10-50 Mbps) | 低(1-5 Mbps) |
| 延迟 | 较高(50-200ms) | 较低(10-50ms) |
| 稳定性 | 不易断连 | 易断连,需要手动增加与 CDP 心跳,避免断连 |
| CPU占用 | 高(桌面编码) | 低(仅浏览器渲染) |
| 内存占用 | 高(需要完整桌面环境) | 低(仅浏览器进程) |
| 控制范围 | 整个浏览器 | 仅浏览器内部页面 |
| 自动化能力 | 基础(鼠标键盘模拟) | 强大(DOM操作、网络拦截、JS注入等) |
| 多窗口支持 | ✅ 支持 | ❌ 仅单个浏览器窗口 |
| 文件操作 | ✅ 可以操作本地文件 | ❌ 受浏览器沙箱限制 |
对于 Coding Agent,大部分任务都可以通过命令行执行完成。设计 Shell 模块时,以 OpenHands 的 CmdRunAction 为执行引擎,配合 tmux,实现多会话(multi-session)执行能力。

文件/代码编辑只需要两个工具就足够:
文件增改查:封装文件读取/写入/列目录/新建/上传/下载等基础 I/O,配合路径校验与权限控制,覆盖通用文件操作场景。
文本编辑器:实现面向模型的细粒度编辑工具 str_replace_editor,支持:
view(查看文件或目录,含行范围)str_replace(精确字符串替换)insert(按行插入,旧版支持)undo_edit(撤销)
综合权衡语言覆盖与镜像体积,使用 Sandbox Fusion 里的 Python 3.10/3.11/3.12 与 Node.js 22 运行时,并为代码执行提供一体化的安全隔离环境。

通过统一入口 /mcp 聚合多个 MCP Server(例如 chrome-devtools-mcp),支持参数级过滤,并可为工具名添加前缀(namespacing)。

按 search 过滤 MCP Servers,后续将扩展标签(tags)与类别(category)等多维过滤,减少冗余调用并降低模型 token 开销。

在 Agent 沙箱里,一般涉及两类场景,分别对应正反向代理:
正向代理:Browser Use Agent 可访问私有/全球网络
反向代理:Coding Agent 在沙箱内开发的服务对外开放,供用户侧预览
使用 TinyProxy 代理服务器,绕过地理限制、访问受限内容或在企业内网中提供安全访问。

为什么 Chrome 有 --proxy-server 指定代理,为什么要引入 TinyProxy 代理服务器?
在 Chromium 官方文档 写明不会使用任何嵌入在代理设置里的用户名/密码(例如 http://user:pass@host:port 这种),认证要走单独的质询弹窗,影响整个 Browser Use 使用(如下图):

提供两种访问 Sandbox 内部服务端口的方法:
subdomain 泛域名转发(推荐):只要满足 ${port}-${domain} 的域名格式,都会被转发到沙盒内的端口上。

subpath 子路径转发:会遇到非常多问题:对于路由敏感服务(如前端项目)会因为额外的 /proxy|absproxy/${端口} 路径造成资源匹配 404。
Agent 在沙箱里会产生用户数据,为了在不侵入、不修改任何既有业务路由配置、同时不增加未来扩展的路由配置的心智负担的前提下,实现 AIO Sandbox 全局统一鉴权,在内部 Nginx 网关层设计了**“非对称加密 + JWT”** 反向代理架构来实现鉴权:

JWT_PUBLIC_KEY业务服务用私钥生成一个有效期为 1 小时的 JWT,以下是简化的脚本来生成 JWT,实际中业务后端应使用成熟的 JWT 库:
Header 鉴权
短时票据鉴权示例(以 VNC 页面访问为例):直接访问无法通过加 Header 方式完成鉴权,只能通过 ?ticket= 票据以 query 参数方式发起访问。
TICKET_TTL_SECONDS 环境变量配置)${ticket} 变量来构建 VNC URL 并发起访问了。在 AIO 里,会按约定目录方式,自动挂载服务进程(supervisord)和服务路由(Nginx)
/opt/gem/supervisord/*.conf/opt/gem/nginx/*.conf如果在 AIO 镜像基础上定制服务和路由,可参考以下镜像代码:
借助 fern 将 AIO Sandbox 里的接口文档直接转成 Python / Go / Node.js SDK,以 Python 为例,几行代码串联起 AIO Sandbox 里的核心功能:
更多使用示例参考:agent-infra/sandbox#examples
只需增加 4 行代码接入社区的 browser-use:

完整代码见:browser-use#main.py

可使用 API / SDK 来组合 Agent 所需要的高阶工具集,例如 link_reader给 url 地址返回页面内容:
目前最佳的公有云部署形态是函数计算,并基于 Sandbox 指定实例访问能力:一键部署 All-in-One Sandbox 应用--函数服务-火山引擎

AIO Sandbox 提供一体化、可定制的基座环境(Agent Env),使 Agent 能在同一环境内完成浏览、执行代码、运行命令与文件操作等多样化任务,并支持根据不同 Agent 定制专属的领域沙盒。这一沙盒体系也将伴随 Agent 智能上限的提升与开发者创造力的激发,持续进化与扩展。 后续,我们将围绕稳定性、可观测性与生态集成持续打磨,不断完善评测体系与最佳实践,推动 AIO Sandbox 在更多大规模、高要求的 Agent 应用场景中实现稳健落地与高效运行。

| 名词 | 解释 |
|---|---|
| Agent | 在 LLM 语境下,AI Agent 是某种能自主理解意图、规划决策、执行复杂任务的智能体。Agent 并非ChatGPT 升级版,它不仅告诉你“如何做”,更会帮你去做。如果CoPilot是副驾驶,那么Agent就是主驾驶。类似人类“做事情”的过程,Agent的核心功能,可以归纳为三个步骤的循环:感知(Perception)、规划(Planning)和行动(Action)。 |
| Copilot | Copilot 是指一种基于人工智能的辅助工具,通常与特定的软件或应用程序集成,旨在帮助用户提高工作效率。Copilot 系统通过分析用户的行为、输入、数据和历史记录,提供实时建议、自动化任务或增强功能,帮助用户做出决策或简化操作。 |
| AIO | All-In-One,指将多种能力(Browser、Code Execution、Shell、File、可视化接管、鉴权、代理等)在单一镜像/****实例内集成,减少跨环境切换与数据搬运。 |
| Sandbox | 受控、隔离的执行环境。用于运行浏览器、代码或命令行,控制资源与权限,降低对宿主系统的影响与风险。 |
| CDP | CDP (Chrome Devtools Protocol)是一种用于与 Chrome 或 Chromium 浏览器通信的协议。它允许开发人员通过发送命令和接收事件来与浏览器进行交互,以便进行调试、分析和自动化浏览器操作。CDP 提供了一组定义了浏览器行为和功能的 API(Application Programming Interface)。 |
| VNC | VNC 是一套“远程桌面共享/控制”技术与工具族,基于 RFB(Remote Framebuffer)协议 工作。核心思想:把远程主机的屏幕帧缓冲(像素)编码后通过网络传输到客户端,同时把客户端的键盘、鼠标事件回放到远程主机,实现跨平台远程操作。 |
| MCP | Model Context Protocol*(模型上下文协议)* 是一个开放协议,它规范了应用程序如何为LLMs提供上下文。可以将MCP想象为AI应用的USB-C端口。就像USB-C提供了一种标准方式,让你的设备连接到各种外设和配件,MCP也提供了一种标准方式,让你的AI模型连接到不同的数据源和工具。 |
| Browser Use | Agent 通过浏览器完成搜索、登录、点击、表单填写、下载等任务的总称,既可走 CDP 指令,也可走 GUI 视觉操作。 |
| OpenHands | OpenHands 是一个开源的 AI 软件开发代理平台(AI Software Developer Agent Platform),用于训练、评测和运行能够在真实开发环境中“自主编程”的大语言模型(LLM)。它最初以 OpenDevin 名义发布,后更名为 OpenHands,由 All Hands AI 社区维护。 |