Quicksand(GitHub 仓库)
摘要
微软开源 Quicksand,一个用于启动、控制和快照 QEMU 虚拟机的异步 Python API,专注于为 AI 智能体提供沙箱环境,无需 root 权限或 Docker 即可运行。
查看缓存全文
缓存时间: 2026/10/09 18:22
microsoft/quicksand
来源: https://github.com/microsoft/quicksand
Quicksand
PyPI (https://pypi.org/project/quick-sandbox/) 变更日志 (https://github.com/microsoft/quicksand/blob/main/CHANGELOG.md) 文档 (https://microsoft.github.io/quicksand/) 许可证: MIT
Quicksand
Quicksand 是一个异步 Python API,用于启动、控制和快照 QEMU (https://www.qemu.org) 虚拟机,特别专注于为 AI 智能体提供沙箱环境。Quicksand 提供了预构建的 Ubuntu 和 Alpine 发行版 Linux 虚拟机,支持 x86_64 和 ARM64 架构,可运行在 macOS、Linux 和 Windows 上。运行沙箱不需要 root 权限或 Docker;在支持的平台上安装 QEMU 和镜像扩展包即可获得内置运行时。
安装
pip install 'quick-sandbox[qemu,alpine]'
或者安装核心包,再单独添加 QEMU 和镜像:
pip install quick-sandbox
quicksand install qemu alpine
使用
Hello, World!
import asyncio
from quicksand import Sandbox
async def main():
async with Sandbox(image="ubuntu") as sb:
result = await sb.execute("echo 'Hello from the sandbox!'")
print(result.stdout)
asyncio.run(main())
运行命令
result = await sb.execute("apt update && apt install -y python3")
print(result.stdout, result.exit_code)
挂载宿主机目录
可以在启动时或运行时将宿主机目录共享到虚拟机中。
# 启动时挂载
async with Sandbox(
image="ubuntu",
mounts=[Mount("./workspace", "/mnt/workspace")],
) as sb:
...
# 或在运行中的沙箱上动态挂载
handle = await sb.mount("/tmp/data", "/mnt/data")
await sb.execute("ls /mnt/data")
await sb.unmount(handle)
配置网络
沙箱默认网络隔离。通过 NetworkMode.FULL 选择启用互联网访问和端口转发。
async with Sandbox(
image="ubuntu",
network_mode=NetworkMode.FULL,
port_forwards=[PortForward(host=8080, guest=80)],
) as sb:
...
多 Linux 用户
在单个沙箱虚拟机中为多个智能体分配独立的 Linux 用户账户。
async with Sandbox(image="ubuntu") as sb:
alice = await sb.create_user("alice")
bob = await sb.create_user("bob")
await alice.execute("cat > hello.txt", stdin="Hello from Alice!\n")
await bob.execute("cat > hello.txt", stdin="Hello from Bob!\n")
for user in (alice, bob):
result = await user.execute("whoami && pwd && cat hello.txt")
print(result.stdout)
await sb.delete_user(user.name)
保存与加载
将虚拟机的磁盘状态保存到目录中。之后可以加载,即使在不同的机器上。
await sb.execute("pip install numpy pandas")
await sb.save("my-env") # 虚拟机继续运行
# 之后加载
async with Sandbox(image="my-env") as sb:
await sb.execute("python3 -c 'import numpy; print(numpy.__version__)'")
检查点与回滚
捕获完整的虚拟机状态,出错时可以回滚。
await sb.checkpoint("before-experiment")
await sb.execute("apt install -y something-risky")
await sb.revert("before-experiment") # 虚拟机回滚到检查点状态
控制桌面
桌面镜像提供完整的 Xfce4 图形环境和浏览器。使用 quicksand install ubuntu-desktop 或 quicksand install alpine-desktop 安装。
async with Sandbox(image="ubuntu-desktop", enable_display=True) as sb:
await sb.screenshot("screen.png")
await sb.type_text("hello world")
await sb.press_key(Key.RET)
await sb.mouse_move(500, 300)
await sb.mouse_click("left")
配置
以下是所有 Sandbox 配置选项:
Sandbox(
# 要启动的镜像或保存名称
image="ubuntu",
# 客户机内存(默认:"512M")
memory="2G",
# 虚拟 CPU 核心数(默认:1)
cpus=4,
# 启动时共享到虚拟机的宿主机目录
mounts=[Mount("/host", "/guest")],
# NONE、MOUNTS_ONLY(默认)或 FULL 互联网访问
network_mode=NetworkMode.FULL,
# 将宿主机 TCP 端口转发到客户机
port_forwards=[PortForward(host=8080, guest=80)],
# 启动时扩展客户机文件系统
disk_size="10G",
# 挂载虚拟 GPU、键盘和鼠标,用于截图/输入文字/鼠标控制
enable_display=True,
# 停止时自动保存虚拟机状态
save="my-save-name",
)
可用镜像
| 镜像 | 类型 | 包大小 | 安装命令 | 说明 |
|---|---|---|---|---|
ubuntu | 基础镜像 | ~309-357 MB | quicksand install ubuntu | Ubuntu 24.04 无头版 |
alpine | 基础镜像 | ~82-85 MB | quicksand install alpine | Alpine 3.23 无头版(启动更快) |
ubuntu-desktop | 叠加镜像(基于 ubuntu) | ~273-281 MB | quicksand install ubuntu-desktop | Ubuntu 24.04 + Xfce4 + Firefox |
alpine-desktop | 叠加镜像(基于 alpine) | ~346-363 MB | quicksand install alpine-desktop | Alpine 3.23 + Xcef4 + Chromium |
quicksand-agent | 叠加镜像(基于 ubuntu) | ~306-335 MB | quicksand install quicksand-agent | Ubuntu + Python 3.12、uv、build-essential、requests、pyyaml、ddgs、markitdown |
quicksand-cua | 叠加镜像(基于 quicksand-agent) | ~489-500 MB | quicksand install quicksand-cua | 智能体沙箱 + Xvfb、x11vnc、noVNC、Playwright、Chromium |
大小为 2026 年 9 月 14 日发布的完整镜像包下载大小的近似值,因架构而异。叠加镜像的大小不包含其基础镜像。
从源码构建
git clone https://github.com/microsoft/quicksand.git
cd quicksand
uv sync
uv run uvr build --all-packages
文档
贡献指南
| 指南 | 适用场景 |
|---|---|
| 创建镜像 | 构建新的基础镜像或叠加镜像包 |
| 扩展沙箱 | 添加方法、操作系统、架构或 QEMU 参数 |
| 测试 | 运行或编写测试 |
| 发布 | 发布新版本 |
相似文章
@nash_su: 昨晚还在跟 @i5ting 聊 Sandbox 是 agent 不可或缺的重要组成,今天就看到腾讯开源的这个 Cube Sandbox 1. 极速启动 (< 60ms) — 得益于快照克隆和资源池预热 2. 硬件级安全 — KVM 微虚拟…
Tencent open-sources Cube Sandbox, a KVM-based micro-VM for agents that boots in <60 ms, runs in <5 MB RAM, and is E2B-compatible.
@AravSrinivas:虽然沙箱已是标准化商品,但要在生产级流量下提供数百万个沙箱,仍需处理大量细节才能扩…
Perplexity 开源了其沙箱平台 SPACE(智能体代码执行沙箱平台),该平台基于 Firecracker 微虚拟机,为 Perplexity Computer 上运行的所有智能体提供隔离的代码执行环境,支持通过 HTTP API 管理沙箱生命周期。
@HowToPrompt__:中国开源了一个沙盒,它:→ 启动只需60毫秒(Docker需要200毫秒)→ 每个实例仅用5MB内存→ 可运行数千…
中国开源了 CubeSandbox,这是一个用于AI智能体的硬件隔离沙盒,冷启动时间低于60毫秒,每个实例仅需5MB内存开销,只需替换一个URL即可替代Docker和E2B。它可以在硬件层面在一台机器上运行数千个智能体。
TencentCloud/CubeSandbox
TencentCloud的CubeSandbox是一个开源、高性能的安全沙箱服务,专为AI智能体设计,基于RustVMM和KVM构建,提供硬件级隔离、低于60毫秒的启动时间,并兼容E2B SDK。
@NFTCPS: App Sandbox 这玩意儿有点东西,免费开源,Windows 11 家庭版不用开 Hyper-V 就能跑 Win11、Ubuntu、macOS 虚拟机,还带 GPU 加速。 最骚的是有 headless API 加 Python S…
App Sandbox 是一个免费开源的虚拟机管理工具,支持在 Windows 11 家庭版上运行 Windows、Ubuntu 和 macOS 虚拟机,无需 Hyper-V,具备 GPU 加速和 headless API/Python SDK,可编程化批量管理 VM,适合 AI agent 等自动化场景。