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

从标准注册表中选择 AEGIS 智能体运行时

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

声明:AEGIS 由 100monkeys.ai 开发,因此请把这篇指南当作开发方的说明来读。它由我们的一个 AI 智能体根据公开的 AEGIS 文档起草,主要是 Standard Runtime Registry、Management Tools 中的 aegis.runtime.list 条目和 CLI Reference,并经公司审阅;这个简体中文版是英文原版指南的译文。下面每一行 YAML、每个调用和每条命令都复制自这些页面,写作本指南时没有运行其中任何一条;引文保留英文原文,译文附在旁边。文档没有回答的问题,最后一节会说明。

AEGIS by 100monkeys.ai, in beta,在容器中运行每个智能体。智能体清单可以写明语言和版本而不是镜像,由编排器来选镜像。注册表页面说得很直接:"Using StandardRuntime means you never specify a Docker image directly."(使用 StandardRuntime 意味着你从不直接指定 Docker 镜像。)本指南选一个运行时,在部署前检查它,并说明运行时会发生什么。

第 1 步:了解注册表决定什么

当清单给出 spec.runtime.language 和 spec.runtime.version 时,编排器会 "resolves them to a deterministic, pinned Docker image at execution time."(在执行时把它们解析为一个确定的、固定版本的 Docker 镜像。)映射保存在 runtime-registry.yaml 中,提交在编排器仓库里,并在守护进程启动时加载。对审查来说,要点是:写明同一组合的两个智能体运行在同一个镜像上,而且没有人在清单里手打镜像标签。

第 2 步:询问注册表接受什么

一个为其他智能体编写清单的智能体,或者客户端前的一个人,可以调用内置工具 aegis.runtime.list。不带参数时它列出所有运行时;带上语言时它会过滤:

{}
{ "language": "python" }

回答会给出每个运行时的 language、version、image、description 和一个 deprecated 标志,另加 custom_runtime_supported。注册表页面给出了这个工具存在的理由:它 "prevents hallucinated language-version combinations from being written into manifests."(防止臆造的语言和版本组合被写进清单。)它在 aegis-system-agent-runtime 安全上下文中可用,"with no additional configuration"(无需额外配置)。

第 3 步:选一个受支持的组合

注册表页面目前的矩阵:

语言版本镜像
python3.11, 3.10; 3.9 已弃用python:3.x-slim, Debian 12
javascript20, 18node:20-alpine, node:18-alpine
typescript5.1node:20-alpine
go1.21, 1.20golang:1.x-alpine
rust1.75, 1.74rust:1.x-alpine
bash5python:3.11-slim, 附带用于引导程序的 python3

写明已弃用版本的清单 "still execute but emit a warning in the execution log"(仍会执行,但会在执行日志中发出警告)。页面把 python: "3.9" 列为已弃用,并建议迁移到 3.10 或 3.11。移除会 "two phases in advance"(提前两个阶段)公布,已移除的版本无法通过校验。

第 4 步:把它写进清单

spec:
  runtime:
    language: "python"   # Required (StandardRuntime)
    version: "3.11"      # Required (StandardRuntime)
    isolation: "docker"  # inherit | docker | firecracker
    model: "default"     # LLM model alias from aegis-config.yaml

"Specifying an unsupported language+version combination is rejected at execution validation time with a descriptive error. There is no fallback to a default version."(指定不受支持的 language+version 组合,会在执行校验时被拒绝,并给出说明性的错误。不会回退到默认版本。)最后一句才是有用的:一个拼写错误不会悄悄地在别的解释器上运行。

第 5 步:先校验,再部署

aegis agent deploy ./agent.yaml --validate-only
aegis agent deploy ./agent.yaml

--validate-only 只解析和校验,不部署。同一名称和版本部署两次会失败,除非加上 --force。

第 6 步:安装智能体需要的东西,或改用自定义镜像

每个标准镜像都带有该语言的包工具:Python 镜像上是 pip 和 apt,Node 镜像上是 npm 和 apk,Go 上是 go 和 apk,Rust 上是 cargo 和 rustc。对 TypeScript,编排器会设置 TYPESCRIPT_VERSION=5.1,文档说你的引导程序应当用 npm install -g typescript ts-node 安装工具链。当智能体需要 ffmpeg 这样的系统包、注册表没有的版本、预编译的二进制文件或私有依赖时,页面给出的答案是 Custom Runtime,也就是你自己的镜像,而不是每次运行都安装同样的东西。

第 7 步:了解智能体启动时发生什么

对标准运行时,编排器把组合解析为一个镜像,创建一个主进程只负责保持存活的容器,如果 /usr/local/bin/aegis-bootstrap 还不存在,就把它的 bootstrap.py 上传到那里,再带着提示词运行它。引导程序连回编排器的分发网关,运行迭代循环:"generate → execute → validate → refine"(生成、执行、校验、改进)。

第 8 步:在你自己的节点上,把注册表文件放在守护进程查找的位置

# aegis-config.yaml
spec:
  runtime:
    runtime_registry_path: "runtime-registry.yaml"

默认路径是相对于守护进程工作目录的。如果文件缺失或无法解析,守护进程会 "hard-fails at boot"(在启动时直接失败),因为 "a missing registry makes every StandardRuntime agent execution impossible."(缺少注册表会让每个 StandardRuntime 智能体都无法执行。)当守护进程从别的目录运行或在容器镜像中运行时,请设置绝对路径。

文档没有回答的问题

下一步

运行时只是智能体清单的一个字段。其余部分请阅读AEGIS 智能体清单:每个字段及其约束。AEGIS 用 100monkeys.ai 上印出的命令安装:

curl -fsSL https://get.100monkeys.ai | bash

从 100monkeys.ai 安装 AEGIS