Agent开发痛点解决:浏览器、Shell同容器共享文件系统
文章目录
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 | 核心能力 |
|---|---|
browser | navigate、screenshot、click、type、scroll |
file | read、write、list、search、replace |
shell | exec、create_session、kill |
markitdown | convert、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
更多推荐

所有评论(0)