综合介绍
Arrakis 是一个专为 AI 智能体设计,提供安全、可自定义的沙盒环境。它由 Abhishek Bhardwaj 开发,托管在 GitHub 上,使用 AGPL v3 许可证。Arrakis 通过轻量级虚拟机(MicroVM)技术隔离 AI 代码,确保主机安全。每个沙盒内置 Ubuntu 系统,启动时自带代码执行服务和 VNC 服务器,支持图形界面操作。工具提供 Python SDK 和 REST API,方便开发者管理沙盒。它还支持快照和回溯功能,AI 出错时可恢复到之前状态。Arrakis 适合需要安全运行代码或测试多步流程的开发者。
功能列表
- 安全隔离:使用 MicroVM 技术隔离 AI 代码,保护主机和其他任务。
- 快照与回溯:支持保存沙盒状态并恢复,方便 AI 测试多步任务。
- Python SDK:提供
py-arrakis
,可编程控制沙盒。 - REST API:通过
arrakis-restserver
提供接口,管理沙盒。 - 图形界面:每个沙盒内置 VNC 服务器和 Chrome,支持 GUI 操作。
- 网络配置:自动设置网络,支持端口转发和 SSH 访问。
- 自定义环境:通过
Dockerfile
调整沙盒软件和配置。 - MCP 兼容:支持 MCP 客户端(如 Claude Desktop),便于集成。
使用帮助
Arrakis 的安装和使用需要一些步骤。以下是详细说明,帮你快速上手。
安装流程
- 检查系统要求
Arrakis 只支持 Linux 系统,因为它依赖/dev/kvm
虚拟化。你可以用命令检查虚拟化支持:
stat /dev/kvm
如果返回错误,说明主机不支持,需要启用虚拟化。
- 下载安装
在 Linux 上运行以下命令下载预构建文件:
curl -sSL https://raw.githubusercontent.com/abshkbh/arrakis/main/setup/setup.sh | bash
下载后会生成 arrakis-prebuilt
文件夹,包含二进制文件和镜像。
- 启动 REST 服务器
进入文件夹并启动服务:
cd arrakis-prebuilt
sudo ./arrakis-restserver
服务默认运行在 127.0.0.1:7000
。需要 sudo
因为涉及虚拟机管理。
- 安装 Python SDK(可选)
如果想用 Python 控制沙盒,安装 SDK:
pip install py-arrakis
主要功能操作
创建沙盒
- 用 CLI
创建一个沙盒:
./arrakis-client start -n my-sandbox
返回沙盒的 IP 和状态信息。
- 用 Python
用 SDK 创建:
from arrakis_client import SandboxManager
manager = SandboxManager('http://127.0.0.1:7000')
sandbox = manager.start_sandbox('my-sandbox')
print(sandbox.info())
运行代码
- CLI 方式
在沙盒中执行命令:./arrakis-client run -n my-sandbox --cmd "echo Hello World"
- Python 方式
用 SDK 运行:sandbox.run_cmd('echo Hello World')
输出会返回到终端。
使用图形界面
每个沙盒启动时自带 VNC 服务器和 Chrome。获取连接信息:
- 用 CLI:
./arrakis-client info -n my-sandbox
返回类似
port_forwards: [{'host_port': '3000', 'guest_port': '5901', 'description': 'gui'}]
。 - 用 Python:
print(sandbox.info()['port_forwards'])
- 连接 VNC:
用 VNC 客户端(如 noVNC)连接主机IP:3000
,即可看到图形界面。
快照与回溯
- 保存快照
用 CLI:./arrakis-client snapshot -n my-sandbox -o snap1
用 Python:
snapshot_id = sandbox.snapshot('snap1')
- 恢复快照
先销毁沙盒:./arrakis-client destroy -n my-sandbox
再恢复:
./arrakis-client restore -n my-sandbox --snapshot snap1
或用 Python:
sandbox.destroy() sandbox = manager.restore('my-sandbox', snapshot_id)
自定义沙盒
- 找到
rootfs/Dockerfile
。 - 编辑添加软件,例如:
RUN apt-get update && apt-get install -y vim
- 重启沙盒:
./arrakis-client start -n my-sandbox --rootfs custom-rootfs
SSH 访问
每个沙盒支持 SSH:
- 获取 IP:
./arrakis-client info -n my-sandbox
返回类似
ip: "10.20.1.2/24"
。 - 登录:
ssh elara@10.20.1.2
默认用户
elara
,密码elara0000
。
操作流程示例
想让 AI 在沙盒中写文件并测试回溯:
- 启动沙盒:
./arrakis-client start -n test-sandbox
- 运行命令:
./arrakis-client run -n test-sandbox --cmd "echo '第一步' > /tmp/test.txt"
- 保存快照:
./arrakis-client snapshot -n test-sandbox -o step1
- 修改文件:
./arrakis-client run -n test-sandbox --cmd "echo '第二步' > /tmp/test.txt"
- 恢复快照:
./arrakis-client destroy -n test-sandbox ./arrakis-client restore -n test-sandbox --snapshot step1
- 检查文件:
./arrakis-client run -n test-sandbox --cmd "cat /tmp/test.txt"
输出应为
第一步
。
更多细节请查看 GitHub 的 README.md
。
应用场景
- AI 代码调试
开发者用 Arrakis 运行不可信代码,隔离风险。出错后回溯,检查问题。 - 教学实验
老师搭建沙盒给学生练习 AI 编程,学生可随意操作,不影响主机。 - 多步任务测试
企业用 Arrakis 测试 AI 自动化流程,如网页操作或文件处理,支持快照恢复。
QA
- Arrakis 支持 Windows 吗?
不支持,目前只在 Linux 上运行,因为依赖cloud-hypervisor
。 - 如何停止沙盒?
用./arrakis-client stop -n 名称
停止,或destroy
删除。 - 快照占多少空间?
取决于沙盒内容,通常几百 MB。建议清理不用的快照。