P.S. 推荐一个大神的教程给想要了解或者学习人工智能知识的读者,这个教程里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏教程,请点击下方链接查看, 传送门https://blog.csdn.net/qq_74013365

1 先说个痛:给 Agent 搭环境的每一天

给 AI Agent 搭执行环境,听起来很高级,做起来就是个纯体力活。

你要浏览器自动化?好,起一个容器。你要跑代码?行,再起一个容器。你要存文件?没问题,第三个服务安排上。

三个服务,各过各的,谁也不搭理谁。浏览器刚下载好的文件,Shell 那边压根不知道这东西存在。像极了合租室友:冰箱里我的酸奶你永远别碰,碰了就是一场世界大战。

于是你每天的工作就变成了写胶水代码,把文件从 A 搬到 B,再从 B 搬到 C。搬着搬着我开始怀疑人生:我到底是程序员,还是码头搬运工?还是那种连叉车都没有的搬运工?

直到我看见了今天的主角——AIO Sandbox。

2 AIO Sandbox 到底是个啥

2.1 一句话说人话

把浏览器、Shell、文件操作、MCP 服务、VSCode Server 全部塞进同一个 Docker 容器,大家共用一套文件系统。

通俗点说,就是让所有工具搬进同一套房,共用同一个冰箱。你下载的文件,我 Shell 直接就能拿,不用再隔着门缝递纸条。

2.2 硬数据先摆一摆

  • GitHub Stars:6000+
  • Forks:534
  • Watchers:32
  • 提交次数:130(主分支)
  • 协议:Apache-2.0
  • 所属组织:agent-infra

6000 多颗星,这可不是我朋友圈集赞集出来的。

2.3 官方定位

官方说法叫"统一了浏览器、Shell、文件、MCP 操作与 VSCode Server 的一体化 Agent 沙箱环境"。

翻译成人话就是:Agent 干活需要的家伙事儿,这里全给你备齐了,还给你收拾进了同一个屋。

3 没有它之前的日子

先看看传统方案长什么样:

没有 AIO Sandbox 的 Agent 环境搭建:
浏览器自动化 → 用 Playwright/Puppeteer 容器 A
代码执行     → 用 Jupyter/Sandbox Fusion 容器 B
文件存储     → 用独立的文件服务 C
↑ 三者互不相通,浏览器下载的文件要手动搬运才能给容器 B 用
↑ 每接入一个新工具,都要重新写一遍跨容器数据传递逻辑

每接入一个新工具就要重写一遍数据传递逻辑。这玩意儿写多了,你会产生一种幻觉:我不是在开发 Agent,我是在给三个互不信任的国家当中间人,还是那种两头不讨好的。

AIO Sandbox 的做法是:

AIO Sandbox 的做法:
浏览器 + Shell + 文件 + MCP + VSCode 全部塞进同一个容器
↓ 统一文件系统作为底层共享层
浏览器下载文件 → Shell 命令直接读 → Jupyter 直接处理 → 文件 API 直接写回
所有工具看见的是同一份文件系统,无需搬运

3.1 官方示例工作流

官方给了一个典型例子,你可以感受一下:

1. 用 Playwright 通过 CDP 连接沙箱的浏览器,抓取一个网页
2. 网页内容 → 直接写入沙箱文件系统
3. 调用 Jupyter 里的 markdownify,把 HTML 转换成 Markdown
4. 转换结果 → 通过文件 API 直接读回

传统方案里,第 2 步到第 3 步之间,文件要经历一场跨国旅行:volume mount、对象存储中转、或者把文件内容塞进 API payload 当人质。

在 AIO Sandbox 里?就是同一张饭桌上递个碗的事。没有传输层,也就没有额外的失败点——少一个环节,就少一个让你深夜改 bug 的理由。

3.2 同容器 vs 跨容器

这个设计的关键在于:它不是把多个独立服务用网络接口拼起来,而是让它们在同一进程环境和文件系统命名空间内运行。

省掉了跨容器通信的序列化开销,也省掉了一致性问题。"浏览器容器写的文件,Shell 容器到底啥时候能读到?"这种分布式系统的经典送命题,在这里根本不存在——因为压根就没有第二个容器。

4 架构:四层楼,一个户口本

浏览器 + VNC 层(可视化)
        ↓
VSCode Server + Shell 终端 + 文件操作 层(开发层)
        ↓
MCP Hub + Sandbox Fusion 层(集成层)
        ↓
Preview Proxy + 服务监控 层(基础设施层)

所有层共享同一个容器和同一套文件系统。

这设计有意思的地方在于:它不是四栋楼之间拉网线搞互联互通,而是四个人住一个户口本,共享一个厨房。谁做了饭,全屋飘香,谁都能吃一口。

5 内置四组 MCP Server

沙箱里内置了四组开箱即用的 MCP Server:

MCP Server核心能力
browsernavigate、screenshot、click、type、scroll
fileread、write、list、search、replace
shellexec、create_session、kill
markitdownconvert、extract_text、extract_images

为什么用 MCP 而不是自己定义一套私有 API?

因为任何已经支持 MCP 的 Agent 框架(比如 Claude Code),都能零配置接入沙箱的全部能力,不用为它专门写一层适配代码。

传统模式是什么?每个沙箱一套私有 API,接一个新工具写一次适配层。写到后面你会发现,你适配的不是工具,是寂寞。

6 快速开始

6.1 Docker 一键启动

docker run --security-opt seccomp=unconfined --rm -it \
  -e SANDBOX_API_KEY=your-secret-key \
  -p 127.0.0.1:8080:8080 ghcr.io/agent-infra/sandbox:latest

启动后可以访问:

  • /v1/docs —— API 文档
  • /vnc/index.html —— VNC 远程桌面
  • /code-server/ —— VSCode Server
  • /mcp —— MCP 服务入口

国内用户可以用镜像仓库地址替代 ghcr.io。

生产环境建议用固定版本号(比如 1.11.0),别用 latest。为什么?latest 这玩意儿,就像前女友的心情,你永远不知道明天会变成什么样。

6.2 装 SDK

# Python
pip install agent-sandbox
# TypeScript / JavaScript
npm install @agent-infra/sandbox
# Go
go get github.com/agent-infra/sandbox-sdk-go

Python、TypeScript、Go 全都有。你用什么语言它都接得住,像极了那种"你吃什么我都行"的饭搭子,安全感拉满。

7 部署三件套

部署方式适用场景
Docker(单命令)本地开发、快速试用
Docker Compose数据卷持久化(带 shm_size: "2gb" 等配置)
Kubernetes生产集群(带资源限制,如 memory: "2Gi"、cpu: "1000m")

从本地玩票到生产集群,路径是完整的。你缺的从来不是选项,是那个敢点"部署"按钮的胆子。

8 和主流框架的相处之道

框架集成方式
browser-use把 BrowserSession 连到沙箱的 CDP 端点,复用沙箱里的浏览器
LangChain把 shell.exec_command 包装成自定义 BaseTool 接入工具链
OpenAI Assistants暴露 run_code 工具,路由到沙箱内的 Jupyter 或 Node.js 执行
MiniMax通过 OpenAI 兼容 API(base_url="https://api.minimax.io/v1")调用,注意要求 temperature > 0

这定位很有意思:甘当执行后端,不抢框架的位置。人家不跟你争 C 位,人家是那个默默给你递话筒的人。

顺便说一句,MiniMax 要求 temperature > 0——也就是说 temperature = 0 它不接?

这大概就是 AI 界的"不喝奶茶,我们没法做朋友"。

9 认证:记得锁门

通过 SANDBOX_API_KEY 环境变量启用鉴权,支持 Header、Bearer Token、Query 参数三种方式,统一覆盖 API、JupyterLab 和 VNC 访问。

不设置该变量就保持开放状态,向后兼容。

翻译一下:你不锁门,人家就当你欢迎参观。自己家里还是记得锁门——尤其是养了 Agent 这种好奇心旺盛、看到什么文件都想翻一翻的宠物。

10 这玩意儿适合谁

  • AI Agent 开发者:不想为浏览器自动化、代码执行、文件存储分别搭一套基建。
  • 多框架并用的团队:已经在用 LangChain、Browser Use,想要一个通用执行后端,而不是重新造轮子。
  • 需要可视化调试的场景:通过 VNC / VSCode Server 直接看 Agent 干活,而不是只能蹲在日志前面猜它干了啥。
  • MCP 生态使用者:想要一套开箱即用、覆盖浏览器 / 文件 / Shell 的 MCP Server,不想自己维护。

11 最后说两句

AIO Sandbox 没有试图做一个更聪明的 Agent 框架,它解决的是一个更基础的问题——让 Agent 用到的工具们,至少能看见同一份文件系统。

这让我想到,很多家庭矛盾的根源,不是谁不爱谁,而是冰箱里的东西不共享。

工具孤岛这个问题解决好了,Agent 开发能少掉一大半的头发。反正我是准备把它请进我的工具箱了——毕竟,让 Agent 少搬一次砖,就是让我自己少掉一根头发。

P.S. 推荐一个大神的教程给想要了解或者学习人工智能知识的读者,这个教程里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏教程,请点击下方链接查看,传送门https://blog.csdn.net/qq_74013365

更多推荐