博客 · 指南 · 2026年10月28日

用 Firecracker 自托管 AEGIS:文档描述的配置,以及今天能运行的东西

其他语言: English, Español, Português, 日本語, Deutsch, Français, 한국어, Italiano, हिन्दी · 全部中文指南

声明:AEGIS 由 100monkeys.ai 开发,因此请把这篇指南当作开发方的说明来读。它由我们的一个 AI 智能体根据公开的 AEGIS 文档(英文)起草,主要是 Firecracker Deployment、What are Agents?、Infrastructure Requirements 和 Podman Deployment,并经公司审阅;这个简体中文版是英文原版指南的译文。每条命令和每个配置块都原样复制自这些页面,引文保留英文原文,译文附在旁边。为写这篇指南,我们一条都没有运行。

AEGIS by 100monkeys.ai, in beta,是一个面向自主智能体的自托管编排器。它的文档把 Firecracker microVM 描述为加固生产环境的隔离方式。在购买硬件之前,先读那一页的第一行:"Firecracker support is planned for a future release and is not yet available. The Docker and Podman runtimes are the current deployment targets."(Firecracker 支持计划在未来的版本中提供,目前尚不可用。当前的部署目标是 Docker 和 Podman 运行时。)本指南讲的是今天能做的事:检查主机,阅读文档为计划中的运行时给出的配置,并运行现在已经发布的 Podman 路径。

为什么是 Firecracker,用文档的话说

"Docker containers share the host kernel: a container escape vulnerability could give a malicious prompt-injected agent code execution on the host. Firecracker provides hardware-level isolation via KVM."(Docker 容器共享主机内核:一个容器逃逸漏洞就可能让遭到提示注入的恶意智能体在主机上执行代码。Firecracker 通过 KVM 提供硬件级隔离。)该页的对比给每个智能体 "a dedicated guest kernel per agent"(每个智能体一个专用的客户机内核),逃逸时的影响范围 "bounded to single microVM"(限于单个 microVM),存储走 virtio-fs,"shared memory, no network"(共享内存,不经网络),而容器用的是 NFS。它说明的代价是约 125 ms 的启动时间,而容器约为 100 ms。

这一设计让智能体在不同运行时之间保持不变:"Switching a node from Docker to Podman or Firecracker requires only a config change: no agent manifest changes needed."(把一个节点从 Docker 切换到 Podman 或 Firecracker 只需要修改配置:不需要修改智能体清单。)所以现在做准备并不是白费功夫。

第 1 步:检查主机的 KVM

Firecracker 需要 KVM,文档说这意味着 "bare-metal Linux servers with Intel VT-x or AMD-V CPU virtualization extensions"(带有 Intel VT-x 或 AMD-V CPU 虚拟化扩展的裸金属 Linux 服务器),或者是裸金属、或支持嵌套虚拟化的云实例。它 "NOT supported on standard EC2 instances without bare-metal, most VMs (including standard VMs on most cloud providers), and macOS (Docker Desktop)."(不支持非裸金属的标准 EC2 实例、大多数虚拟机(包括多数云厂商的标准虚拟机)以及 macOS(Docker Desktop)。)文档的检查命令,原样复制:

# Check for KVM device nodes
ls -la /dev/kvm

# Verify CPU virtualization extensions
grep -cw vmx /proc/cpuinfo   # Intel (should return > 0)
grep -cw svm /proc/cpuinfo   # AMD  (should return > 0)

如果某台云虚拟机上没有 /dev/kvm,那么无论它还有什么,等 Firecracker 运行时发布后,这台主机也运行不了它。

第 2 步:检查内核

运行 uname -r,与文档对照。两个页面给出了两个最低版本:What are Agents? 列出 "Bare-metal or KVM-passthrough host, Linux kernel 5.10+"(裸金属或 KVM 直通主机,Linux 内核 5.10 及以上),Infrastructure Requirements 列出 "Linux kernel 5.15+"(Linux 内核 5.15 及以上),并注明 "KVM support for Firecracker (planned later phase)"(Firecracker 的 KVM 支持(计划在后续阶段))。按 5.15 或更高来规划,两者都能满足。

第 3 步:阅读文档给出的配置

计划中的运行时在 aegis-config.yaml 的 runtime.firecracker 下配置。该页的配置块,原样复制:

runtime:
  type: firecracker
  firecracker:
    # Path to the jailer binary
    jailer_binary: /usr/local/bin/jailer
    # Path to the Firecracker VMM binary
    firecracker_binary: /usr/local/bin/firecracker
    # User/group for the jailed process
    uid: 65534   # nobody
    gid: 65534
    # Kernel image for microVMs
    kernel_image_path: /opt/aegis/vmlinux
    # Root filesystem for agent microVMs (minimal Linux + Python)
    rootfs_path: /opt/aegis/agent-rootfs.ext4
    # CPU and memory limits
    vcpu_count: 2
    mem_size_mib: 512
    # cgroup version (v1 or v2)
    cgroup_version: v2

从中读出它对主机的要求:一个 jailer 和一个 Firecracker 可执行文件,一个无特权的 uid 和 gid,一个客户机内核镜像,一个智能体根文件系统,以及每个虚拟机的 CPU 和内存。jailer "drops privileges before starting the VMM"(在启动 VMM 之前降低权限):一个 chroot 牢笼,预先创建的 tap 接口和 cgroup,以及 seccomp 过滤器。每个 microVM 有自己的 tap 设备,并且 "outbound traffic from the microVM is routed through the orchestrator proxy (SEAL), not directly to the internet."(microVM 的出站流量经由编排器代理(SEAL)路由,而不是直接访问互联网。)

今天不要部署这个配置块。文档没有说明内核镜像和根文件系统从哪里来,而读取它们的运行时被描述为 "in development"(开发中)。

第 4 步:今天先在 Podman 上运行 AEGIS

对于现在的生产环境,文档指向 aegis-deploy 仓库:"aegis-deploy is the recommended production deployment path. It includes OpenBao (secrets management), TLS via Caddy, and full observability."(aegis-deploy 是推荐的生产部署路径。它包括 OpenBao(密钥管理)、通过 Caddy 实现的 TLS,以及完整的可观测性。)它的快速开始,原样复制(命令中的注释保留原文):

# Clone the deployment repo
git clone https://github.com/100monkeys-ai/aegis-deploy.git
cd aegis-deploy

# Copy and edit environment configuration
cp .env.example .env
# Edit .env with your values (GHCR credentials, passwords, LLM API keys)

# Install system dependencies (Ubuntu)
make setup

# Authenticate with GitHub Container Registry
make registry-login

# Generate SEAL signing keys
make generate-keys

# Deploy the full stack
make deploy PROFILE=full

# Validate all services are healthy
make validate

# Bootstrap secrets
make bootstrap-secrets

Podman 以 rootless 方式运行智能体,文档认为这消除了 "the privileged daemon"(特权守护进程),并把容器内的 root 映射 "to an unprivileged host UID"(到一个无特权的主机 UID)。如果只是在一台机器上评估,100monkeys.ai 上给出的一行安装命令是 curl -fsSL https://get.100monkeys.ai | bash,它会启动本地 Docker 栈;文档把这个栈标注为 "for local testing and evaluation only"(仅用于本地测试和评估)。

第 5 步:让切换只是一次配置修改

编写智能体清单时不要固定隔离方式,让节点来决定。清单字段 isolation 接受 inherit、firecracker、docker 和 process,默认值是 inherit,即 "from node config"(来自节点配置)。配置参考中的示例把节点的 default_isolation 设为 docker,这个值 "works with both Docker and Podman runtimes"(在 Docker 和 Podman 运行时下都可用)。Firecracker 发布时,要改的是节点,而不是每个智能体。

第 6 步:关注进展

该页最后写道:"Monitor progress on Firecracker support in the aegis-orchestrator GitHub repository."(请在 aegis-orchestrator GitHub 仓库中关注 Firecracker 支持的进展。)带有这个运行时的版本发布时,会在那里公布。

文档尚未回答的问题

下一步

要安装评估用的栈,并在审批之后运行第一个智能体,请阅读在全新的 Ubuntu VPS 上安装 AEGIS,并运行你的第一个经批准的任务。

从 100monkeys.ai 安装 AEGIS