sandbox
sandbox 是一款专为 AI 智能体打造的一体化沙箱环境,它将浏览器、终端命令行、文件系统、MCP(模型上下文协议)服务以及 VSCode 开发服务器整合在单个 Docker 容器中。传统沙箱往往功能单一,导致浏览器下载的文件无法直接在代码环境中使用,不同工具间的数据流转和协作十分困难。sandbox 通过构建统一的文件系统和安全执行环境,完美解决了这一痛点:用户在浏览器中获取的资源可立即在终端或编辑器中调用,实现了真正的无缝衔接。
该工具特别适合 AI 开发者、研究人员以及需要构建复杂智能体工作流的工程师使用。其核心技术亮点在于“零配置”启动与云原生轻量级架构,支持通过 Python、TypeScript 或 Go 等多种语言的 SDK 快速集成。此外,sandbox 内置了预配置的 MCP 服务和多模态交互界面(如 VNC 浏览器、Jupyter Notebook),不仅保障了代码执行的安全性,还让智能体能够像人类一样灵活操作图形界面和文件系统,大幅降低了开发门槛,是构建下一代自主 AI 代理的理想基础设施。
使用场景
某数据科学团队需要让 AI 助手自动完成“从新闻网站抓取最新行业报告、下载 PDF、提取关键数据并生成可视化图表”的复杂任务。
没有 sandbox 时
- 环境割裂严重:AI 需要在独立的浏览器容器爬取网页,再切换到代码容器处理文件,两者文件系统不互通,导致下载的报告无法被分析脚本直接读取。
- 配置繁琐耗时:开发人员需手动搭建 VNC、Jupyter 和 Shell 多个服务,并编写复杂的脚本进行文件同步和端口映射,调试过程极易出错。
- 安全风险难控:为了让 AI 执行爬虫和代码,往往需开放宿主机权限或关闭安全限制,一旦 AI 生成恶意代码,极易威胁本地开发环境安全。
- 协作流程断裂:当任务卡顿时,开发者难以通过统一界面查看 AI 的实时浏览器操作状态和后台日志,排查问题如同“盲人摸象”。
使用 sandbox 后
- 文件无缝流转:sandbox 将浏览器、Shell 和文件系统整合在同一容器内,AI 在内置浏览器下载的报告可立即被同一环境下的 Python 脚本读取分析,无需任何传输步骤。
- 一键启动环境:只需一条 Docker 命令即可启动包含 VSCode、VNC 浏览器和 Jupyter 的完整环境,预配置的 MCP 服务让 AI 能直接调用工具,零配置即刻运行。
- 原生安全隔离:所有操作均在 Docker 沙箱中进行,即使 AI 执行了危险指令,也被严格限制在容器内部,彻底保护了宿主机的系统安全。
- 全景可视调试:开发者可通过统一的 Web 界面同时查看 AI 的浏览器操作画面、终端输出和代码编辑状态,快速定位并修正任务逻辑。
sandbox 通过构建“浏览器 + 代码 + 文件”一体化的安全沙箱,消除了 AI 代理在多工具协作中的环境壁垒,让复杂自动化任务像单一线程一样流畅执行。
运行环境要求
- Linux
- macOS
- Windows
未说明
最低 2GB (Docker Compose 配置建议)

快速开始
AIO 沙盒 - 多合一智能体沙盒环境
🌐 浏览器 | 💻 终端 | 📁 文件 | 🔧 VSCode | 📊 Jupyter | 🤖 MCP
🌐 官网   |   🔌 API   |   📑 论文   |   🌟 示例   |   📊 评估   

🚀 快速开始
30秒内即可启动并运行:
docker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 ghcr.io/agent-infra/sandbox:latest
适用于中国大陆用户:
docker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 enterprise-public-cn-beijing.cr.volces.com/vefaas-public/all-in-one-sandbox:latest
如需指定版本,可使用 agent-infra/sandbox:${version} 格式,例如使用 1.0.0.150 版本:
docker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 ghcr.io/agent-infra/sandbox:1.0.0.150
# 或者中国大陆用户
docker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 enterprise-public-cn-beijing.cr.volces.com/vefaas-public/all-in-one-sandbox:1.0.0.150
运行后,可通过以下地址访问各个功能:
- 📖 文档:http://localhost:8080/v1/docs
- 🌐 VNC 浏览器:http://localhost:8080/vnc/index.html?autoconnect=true
- 💻 VSCode Server:http://localhost:8080/code-server/
- 🤖 MCP 服务:http://localhost:8080/mcp
🎯 什么是 AIO 沙盒?
AIO 沙盒是一个多合一的智能体沙盒环境,将浏览器、Shell、文件操作、MCP 服务以及 VSCode Server 集成于一个 Docker 容器中。基于云原生轻量级沙盒技术构建,为 AI 智能体和开发者提供统一且安全的执行环境。
为什么选择 AIO 沙盒?
传统沙盒通常是单一用途的(仅限于浏览器、代码或 Shell),这使得文件共享和功能协同变得极为困难。而 AIO 沙盒则通过以下方式解决了这一问题:
- ✅ 统一文件系统:在浏览器中下载的文件可立即在 Shell 和文件操作中使用。
- ✅ 多接口支持:VNC、VSCode、Jupyter 和终端在一个统一环境中无缝衔接。
- ✅ 安全执行:沙箱化的 Python 和 Node.js 执行,确保安全性。
- ✅ 零配置:预配置的 MCP 服务器和开发工具,开箱即用。
- ✅ 智能体友好:兼容 MCP 的 API,便于 AI 智能体的无缝集成。
📦 安装
SDK 安装
|
Python
|
TypeScript/JavaScript
|
Golang
|
基本使用
|
Python 示例
|
TypeScript 示例
|
🌟 核心特性
🔗 统一环境
所有组件运行在同一容器内,共享文件系统,实现无缝工作流:
🌐 浏览器自动化
通过多种接口实现全面的浏览器控制:
- VNC:通过远程桌面进行可视化浏览器交互。
- CDP:利用 Chrome 开发者工具协议进行程序化控制。
- MCP:提供高级别的浏览器自动化工具。
💻 开发工具
集成的开发环境包括:
- VSCode Server:在浏览器中享受完整的 IDE 体验。
- Jupyter Notebook:交互式的 Python 环境。
- 终端:基于 WebSocket 的终端访问。
- 端口转发:用于 Web 应用的智能预览功能。
🤖 MCP 集成
预配置的 Model Context Protocol 服务器:
- 浏览器:用于网页自动化和爬取。
- 文件:用于文件系统操作。
- Shell:用于命令执行。
- Markitdown:用于文档处理。
📚 完整示例
将网页转换为包含嵌入式截图的 Markdown:
import asyncio
import base64
from playwright.async_api import async_playwright
from agent_sandbox import Sandbox
async def site_to_markdown():
# 初始化沙盒客户端
c = Sandbox(base_url="http://localhost:8080")
home_dir = c.sandbox.get_context().home_dir
# 浏览器:自动化下载 HTML
async with async_playwright() as p:
browser_info = c.browser.get_info().data
page = await (await p.chromium.connect_over_cdp(browser_info.cdp_url)).new_page()
await page.goto("https://example.com", wait_until="networkidle")
html = await page.content()
screenshot_b64 = base64.b64encode(await page.screenshot()).decode('utf-8')
# Jupyter:在沙盒中将 HTML 转换为 Markdown
c.jupyter.execute_code(code=f"""
from markdownify import markdownify
html = '''{html}'''
screenshot_b64 = "{screenshot_b64}"
md = f"{{markdownify(html)}}\\n\\n"
with open('{home_dir}/site.md', 'w') as f:
f.write(md)
print("Done!")
""")
# Shell:列出沙盒中的文件
list_result = c.shell.exec_command(command=f"ls -lh {home_dir}")
print(f"沙盒中的文件:{list_result.data.output}")
# 文件:读取生成的 Markdown
return c.file.read_file(file=f"{home_dir}/site.md").data.content
if __name__ == "__main__":
result = asyncio.run(site_to_markdown())
print(f"Markdown 已成功保存!")
🏗️ 架构
┌─────────────────────────────────────────────────────────────┐
│ 🌐 浏览器 + VNC │
├─────────────────────────────────────────────────────────────┤
│ 💻 VSCode 服务器 │ 🐚 Shell 终端 │ 📁 文件操作 │
├─────────────────────────────────────────────────────────────┤
│ 🔗 MCP 中心 + 🔒 沙盒融合 │
├─────────────────────────────────────────────────────────────┤
│ 🚀 预览代理 + 📊 服务监控 │
└─────────────────────────────────────────────────────────────┘
🛠️ API 参考
核心 API
| 端点 | 描述 |
|---|---|
/v1/sandbox |
获取沙盒环境信息 |
/v1/shell/exec |
执行 shell 命令 |
/v1/file/read |
读取文件内容 |
/v1/file/write |
写入文件内容 |
/v1/browser/screenshot |
截取浏览器屏幕截图 |
/v1/jupyter/execute |
执行 Jupyter 代码 |
MCP 服务器
| 服务器 | 可用工具 |
|---|---|
browser |
navigate, screenshot, click, type, scroll |
file |
read, write, list, search, replace |
shell |
exec, create_session, kill |
markitdown |
convert, extract_text, extract_images |
🚢 部署
Docker Compose
version: '3.8'
services:
sandbox:
container_name: aio-sandbox
image: ghcr.io/agent-infra/sandbox:latest
volumes:
- /tmp/gem/vite-project:/home/gem/vite-project
security_opt:
- seccomp:unconfined
extra_hosts:
- "host.docker.internal:host-gateway"
restart: "unless-stopped"
shm_size: "2gb"
ports:
- "${HOST_PORT:-8080}:8080"
environment:
PROXY_SERVER: ${PROXY_SERVER:-host.docker.internal:7890}
JWT_PUBLIC_KEY: ${JWT_PUBLIC_KEY:-}
DNS_OVER_HTTPS_TEMPLATES: ${DNS_OVER_HTTPS_TEMPLATES:-}
WORKSPACE: ${WORKSPACE:-"/home/gem"}
HOMEPAGE: ${HOMEPAGE:-}
BROWSER_EXTRA_ARGS: ${BROWSER_EXTRA_ARGS:-}
TZ: ${TZ:-Asia/Singapore}
WAIT_PORTS: ${WAIT_PORTS:-}
Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
name: aio-sandbox
spec:
replicas: 2
selector:
matchLabels:
app: aio-sandbox
template:
metadata:
labels:
app: aio-sandbox
spec:
containers:
- name: aio-sandbox
image: ghcr.io/agent-infra/sandbox:latest
ports:
- containerPort: 8080
resources:
limits:
memory: "2Gi"
cpu: "1000m"
🤝 集成示例
浏览器使用集成
import asyncio
from agent_sandbox import Sandbox
from browser_use import Agent, Tools
from browser_use.browser import BrowserProfile, BrowserSession
from browser_use.llm import ChatOpenAI
sandbox = Sandbox(base_url="http://localhost:8080")
print("sandbox", sandbox.browser)
cdp_url = sandbox.browser.get_info().data.cdp_url
browser_session = BrowserSession(
browser_profile=BrowserProfile(cdp_url=cdp_url, is_local=True)
)
tools = Tools()
async def main():
agent = Agent(
task='访问 https://duckduckgo.com 并搜索 "browser-use founders"',
llm=ChatOpenAI(model="gcp-claude4.1-opus"),
tools=tools,
browser_session=browser_session,
)
await agent.run()
await browser_session.kill()
input("按 Enter 键关闭...")
if __name__ == "__main__":
asyncio.run(main())
LangChain 集成
from langchain.tools import BaseTool
from agent_sandbox import Sandbox
class SandboxTool(BaseTool):
name = "sandbox_execute"
description = "在 AIO 沙盒中执行命令"
def _run(self, command: str) -> str:
client = Sandbox(base_url="http://localhost:8080")
result = client.shell.exec_command(command=command)
return result.data.output
OpenAI Assistant 集成
from openai import OpenAI
from agent_sandbox import Sandbox
import json
client = OpenAI(
api_key="your_api_key",
)
sandbox = Sandbox(base_url="http://localhost:8080")
# 定义一个在沙盒中运行代码的工具
def run_code(code, lang="python"):
if lang == "python":
return sandbox.jupyter.execute_code(code=code).data
return sandbox.nodejs.execute_nodejs_code(code=code).data
# 使用 OpenAI
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "计算 1+1"}],
tools=[
{
"type": "function",
"function": {
"name": "run_code",
"parameters": {
"type": "object",
"properties": {
"code": {"type": "string"},
"lang": {"type": "string"},
},
},
},
}
],
)
if response.choices[0].message.tool_calls:
args = json.loads(response.choices[0].message.tool_calls[0].function.arguments)
print("args", args)
result = run_code(**args)
print(result['outputs'][0]['text'])
🤝 贡献
我们欢迎贡献!请参阅我们的 贡献指南 以获取详细信息。
📄 许可证
AIO 沙盒根据 Apache License 2.0 发布。
🙏 致谢
由 Agent Infra 团队用心打造。特别感谢所有贡献者及开源社区。
📞 支持
- 📖 文档
- 💬 GitHub 讨论区
- 🐛 问题追踪器
准备好革新你的 AI 开发工作流了吗?
⭐ 在 GitHub 上为我们加星 •
📚 阅读文档 •
🐛 提交问题
版本历史
v1.0.0.1522025/11/12v1.0.0.1512025/11/07v1.0.0.1502025/11/04v1.0.0.1452025/10/30v1.0.0.1442025/10/29v1.0.0.1432025/10/23v1.0.0.1422025/10/23v1.0.0.1402025/10/21v1.0.0.1392025/10/16v1.0.0.1382025/10/16v1.0.0.1322025/10/14v1.0.0.1282025/10/10v1.0.0.1272025/10/09v1.0.0.1262025/09/30v1.0.0.1252025/09/29v1.0.0.1232025/09/29v1.0.0.1212025/09/24常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
OpenHands
OpenHands 是一个专注于 AI 驱动开发的开源平台,旨在让智能体(Agent)像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点,通过自动化流程显著提升开发速度。 无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员,还是需要快速原型验证的技术团队,都能从中受益。OpenHands 提供了灵活多样的使用方式:既可以通过命令行(CLI)或本地图形界面在个人电脑上轻松上手,体验类似 Devin 的流畅交互;也能利用其强大的 Python SDK 自定义智能体逻辑,甚至在云端大规模部署上千个智能体并行工作。 其核心技术亮点在于模块化的软件智能体 SDK,这不仅构成了平台的引擎,还支持高度可组合的开发模式。此外,OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩,证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能,支持与 Slack、Jira 等工具集成,并提供细粒度的权限管理,适合从个人开发者到大型企业的各类用户场景。