sandbox

GitHub
4.1k 337 简单 1 次阅读 今天Apache-2.0插件Agent
AI 解读 由 AI 自动生成,仅供参考

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
GPU

未说明

内存

最低 2GB (Docker Compose 配置建议)

依赖
notes该工具主要基于 Docker 容器运行,宿主机只需安装 Docker 引擎。启动时必须添加 '--security-opt seccomp=unconfined' 参数以解除安全限制。中国大陆用户可使用指定的国内镜像源。支持通过 Docker Compose 或 Kubernetes 部署,建议为容器分配至少 2GB 共享内存 (shm_size)。
python未说明 (通过 Docker 容器运行,宿主机的 Python/Node/Go 仅用于安装 SDK 客户端)
agent-sandbox (Python SDK)
@agent-infra/sandbox (NPM SDK)
github.com/agent-infra/sandbox-sdk-go (Go SDK)
Docker
sandbox hero image

快速开始

AIO 沙盒 - 多合一智能体沙盒环境

logo

🌐 浏览器 | 💻 终端 | 📁 文件 | 🔧 VSCode | 📊 Jupyter | 🤖 MCP

🌐 官网   |   🔌 API   |   📑 论文   |   🌟 示例   |   📊 评估   

发布版本 许可证 PyPI npm

🚀 快速开始

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

运行后,可通过以下地址访问各个功能:

🎯 什么是 AIO 沙盒?

AIO 沙盒是一个多合一的智能体沙盒环境,将浏览器、Shell、文件操作、MCP 服务以及 VSCode Server 集成于一个 Docker 容器中。基于云原生轻量级沙盒技术构建,为 AI 智能体和开发者提供统一且安全的执行环境。

AIO 沙盒架构

为什么选择 AIO 沙盒?

传统沙盒通常是单一用途的(仅限于浏览器、代码或 Shell),这使得文件共享和功能协同变得极为困难。而 AIO 沙盒则通过以下方式解决了这一问题:

  • 统一文件系统:在浏览器中下载的文件可立即在 Shell 和文件操作中使用。
  • 多接口支持:VNC、VSCode、Jupyter 和终端在一个统一环境中无缝衔接。
  • 安全执行:沙箱化的 Python 和 Node.js 执行,确保安全性。
  • 零配置:预配置的 MCP 服务器和开发工具,开箱即用。
  • 智能体友好:兼容 MCP 的 API,便于 AI 智能体的无缝集成。

📦 安装

SDK 安装

Python

pip install agent-sandbox

TypeScript/JavaScript

npm install @agent-infra/sandbox

Golang

go get github.com/agent-infra/sandbox-sdk-go

基本使用

Python 示例

from agent_sandbox import Sandbox

# 初始化客户端
client = Sandbox(base_url="http://localhost:8080")
home_dir = client.sandbox.get_context().home_dir

# 执行 Shell 命令
result = client.shell.exec_command(command="ls -la")
print(result.data.output)

# 文件操作
content = client.file.read_file(file=f"{home_dir}/.bashrc")
print(content.data.content)

# 浏览器自动化
screenshot = client.browser.screenshot()

TypeScript 示例

import { Sandbox } from '@agent-infra/sandbox';

// 初始化客户端
const sandbox = new Sandbox({ baseURL: 'http://localhost:8080' });

// 执行 Shell 命令
const result = await sandbox.shell.exec({ command: 'ls -la' });
console.log(result.output);

// 文件操作
const content = await sandbox.file.read({ path: '/home/gem/.bashrc' });
console.log(content);

// 浏览器自动化
const screenshot = await sandbox.browser.screenshot();

🌟 核心特性

🔗 统一环境

所有组件运行在同一容器内,共享文件系统,实现无缝工作流:

统一环境

🌐 浏览器自动化

通过多种接口实现全面的浏览器控制:

  • VNC:通过远程桌面进行可视化浏览器交互。
  • CDP:利用 Chrome 开发者工具协议进行程序化控制。
  • MCP:提供高级别的浏览器自动化工具。

浏览器自动化

💻 开发工具

集成的开发环境包括:

  • VSCode Server:在浏览器中享受完整的 IDE 体验。
  • Jupyter Notebook:交互式的 Python 环境。
  • 终端:基于 WebSocket 的终端访问。
  • 端口转发:用于 Web 应用的智能预览功能。

VSCode Server

🤖 MCP 集成

预配置的 Model Context Protocol 服务器:

  • 浏览器:用于网页自动化和爬取。
  • 文件:用于文件系统操作。
  • Shell:用于命令执行。
  • Markitdown:用于文档处理。

MCP 集成

📚 完整示例

将网页转换为包含嵌入式截图的 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![Screenshot](data:image/png;base64,{{screenshot_b64}})"
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 团队用心打造。特别感谢所有贡献者及开源社区。

📞 支持


准备好革新你的 AI 开发工作流了吗?
⭐ 在 GitHub 上为我们加星📚 阅读文档🐛 提交问题

版本历史

v1.0.0.1522025/11/12
v1.0.0.1512025/11/07
v1.0.0.1502025/11/04
v1.0.0.1452025/10/30
v1.0.0.1442025/10/29
v1.0.0.1432025/10/23
v1.0.0.1422025/10/23
v1.0.0.1402025/10/21
v1.0.0.1392025/10/16
v1.0.0.1382025/10/16
v1.0.0.1322025/10/14
v1.0.0.1282025/10/10
v1.0.0.1272025/10/09
v1.0.0.1262025/09/30
v1.0.0.1252025/09/29
v1.0.0.1232025/09/29
v1.0.0.1212025/09/24

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

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 真正成长为懂上

140.4k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2天前
Agent图像开发框架

OpenHands

OpenHands 是一个专注于 AI 驱动开发的开源平台,旨在让智能体(Agent)像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点,通过自动化流程显著提升开发速度。 无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员,还是需要快速原型验证的技术团队,都能从中受益。OpenHands 提供了灵活多样的使用方式:既可以通过命令行(CLI)或本地图形界面在个人电脑上轻松上手,体验类似 Devin 的流畅交互;也能利用其强大的 Python SDK 自定义智能体逻辑,甚至在云端大规模部署上千个智能体并行工作。 其核心技术亮点在于模块化的软件智能体 SDK,这不仅构成了平台的引擎,还支持高度可组合的开发模式。此外,OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩,证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能,支持与 Slack、Jira 等工具集成,并提供细粒度的权限管理,适合从个人开发者到大型企业的各类用户场景。

70.6k|★★★☆☆|今天
语言模型Agent开发框架