使用说明
项目简介
Arrakis 是一个安全、可定制且自托管的沙箱解决方案,专为代码执行和计算机使用而设计。它利用轻量级虚拟化技术 MicroVMs (基于 cloud-hypervisor) 为 AI Agent 提供隔离的运行环境,有效防止恶意代码攻击宿主机。Arrakis 支持快照和恢复功能,使得 AI Agent 能够回溯到之前的状态,这对于需要多步骤计划和回溯的智能体尤其有用。
主要功能点
- 安全沙箱环境: 每个沙箱运行在 MicroVM 中,与宿主机和其他沙箱隔离,保障安全。
- 灵活定制: 基于 Dockerfile 的 rootfs 定制,方便用户添加软件包和工具。
- REST API 接口: 提供 REST API 用于沙箱的创建、启动、停止、销毁和管理。
- 快照与恢复: 支持沙箱状态快照和恢复,便于 AI Agent 进行状态回溯和实验。
- GUI 访问: 每个沙箱内置 VNC 服务器和 Chrome 浏览器,支持图形界面操作。
- 端口转发: 自动设置端口转发,方便从宿主机访问沙箱内的服务,包括 VNC GUI。
- Python SDK: 提供 Python SDK (py-arrakis) 方便程序化地管理和操作沙箱。
安装步骤
- 安装 Golang: 确保宿主机已安装 Golang (>= 1.23)。
- 克隆仓库: 'git clone https://github.com/abshkbh/arrakis'
- 安装 Golang 依赖: 进入仓库目录,运行 'go mod tidy' 安装依赖。
- 安装 Cloud Hypervisor: 根据 cloud-hypervisor 官方文档安装 Cloud Hypervisor 二进制文件,并将其路径添加到 'config.yaml' 配置文件中。
- 下载预置镜像: 运行 './install-images.py' 脚本下载 Cloud Hypervisor 镜像和 Guest Kernel。 或者手动下载 arrakis-images 仓库中的 'guest/kernel/vmlinux.bin' 并放置到 'resources/bin' 目录。
- 编译: 运行 'make all' 编译项目,编译后的二进制文件位于 'out' 目录。 或者从 官方 releases page 下载预编译的二进制文件。
服务器配置
MCP 客户端需要配置 Arrakis 服务器的启动命令和参数以建立连接。以下是一个 MCP 客户端的服务器配置示例 (JSON 格式):
{ "server_name": "arrakis_server", "command": "./out/arrakis-restserver", "args": [], "description": "Arrakis 沙箱服务器" }
配置参数说明:
- server_name: 服务器名称,可以自定义。
- command: Arrakis 服务器的启动命令。 假设您已按照安装步骤编译或下载了二进制文件, 并且在 Arrakis 仓库根目录下启动 MCP 客户端, 则此处命令为 './out/arrakis-restserver' 。 请根据实际 'arrakis-restserver' 二进制文件的路径进行调整。
- args: 启动命令参数, Arrakis 服务器默认读取当前目录下的 'config.yaml' 配置文件, 通常无需额外参数。 如果您需要指定配置文件路径, 可以添加 '--config <配置文件路径>' 参数。
- description: 服务器描述信息, 可自定义。
注意: MCP 客户端通常还需要配置 MCP 服务器的地址 (host) 和端口 (port) 信息, 但 Arrakis 服务器的地址和端口是在 'config.yaml' 文件中配置的, MCP 客户端无需在此处重复配置。 MCP 客户端通过 HTTP 与 Arrakis 服务器的 REST API 进行通信, 地址和端口信息已在 'config.yaml' 中设定, 默认地址为 '127.0.0.1', 端口为 '7000'。
基本使用方法
-
启动 Arrakis 服务器: 在宿主机上,打开终端,进入 Arrakis 仓库根目录,运行命令 'sudo ./out/arrakis-restserver' 启动服务器。 首次运行需要 'sudo' 权限进行网络配置。
-
使用 Arrakis 客户端: 在另一个终端窗口,可以使用 'arrakis-client' 命令行工具或 'py-arrakis' Python SDK 与 Arrakis 服务器交互。
- 创建并启动沙箱: './out/arrakis-client start -n <沙箱名称>' 例如: './out/arrakis-client start -n my-sandbox'
- 查看沙箱信息: './out/arrakis-client list -n <沙箱名称>'
- 在沙箱中运行命令: './out/arrakis-client run -n <沙箱名称> -c "echo hello world"'
- 停止沙箱: './out/arrakis-client stop -n <沙箱名称>'
- 销毁沙箱: './out/arrakis-client destroy -n <沙箱名称>'
- 创建沙箱快照: './out/arrakis-client snapshot -n <沙箱名称> -o <快照名称>'
- 从快照恢复沙箱: './out/arrakis-client restore -n <恢复后的沙箱名称> --snapshot <快照名称>'
- 更多操作: 请参考 'arrakis-client' 的帮助信息 './out/arrakis-client --help'
-
通过 GUI 访问沙箱: 启动沙箱后, 使用 VNC 客户端连接到 'http://<宿主机IP>:<VNC端口>' 即可访问沙箱的图形界面。 VNC 端口信息可以通过 './out/arrakis-client list -n <沙箱名称>' 命令查看, 端口转发列表中 "description": "gui" 对应的 "host_port" 即为 VNC 端口。
注意: Arrakis 服务器需要以 root 权限运行才能进行网络配置 (例如 iptables 规则设置和 tap 设备创建)。
信息
分类
AI与计算