ESC
开源 3 分钟阅读

ax:Google 开源智能体编排运行时

Google 开源智能体编排运行时 ax:声明式、高吞吐的编排器,用于在集群中运行数十亿自主智能体工作负载,体验类似 Kubernetes。ax 构建于 Agent Substrate 之上,提供 Task、Workspace、Gateway、Model 四大原语,涵盖沙箱隔离、工作区预配置、网络白名单与模型配置,支持 ax ssh 调试与任务暂停恢复。

来源:GitHub日榜

AX axolotl AX

[!WARNING] 我们仍在积极打磨核心概念、协议与规范。在稳定版发布之前,可能会引入重大破坏性变更。

通过工作区和网关规范声明一个智能体任务。AX 会将其沙箱化、接好工作区、隔离其网络,并帮助大规模运行。

AX 是一个高吞吐、声明式的编排器,用于在集群中运行数十亿个自主智能体工作负载。它构建于 Agent Substrate 之上以实现沙箱化执行,设计目标是在单个集群中运行数十亿任务。如果你用过 Kubernetes,ax 会让你感到似曾相识。

# task.yaml
apiVersion: ax.io/v1alpha1
kind: Workspace
metadata:
  name: golang
spec:
  git:
    - repo: https://github.com/golang/go.git
      branch: "my-fix"
---
apiVersion: ax.io/v1alpha1
kind: Task
metadata:
  name: test
spec:
  workspaces:
    - name: golang
      goal: "确保 Go 工具链可用且由源码构建"
  debug: true   # 允许你 `ax ssh` 进入沙箱

然后 apply 它,看着它启动,并“越过智能体的肩膀”围观它工作:

ax apply -f task.yaml
ax watch task test
ax ssh test -- ls -al /workspace

为什么?

智能体是一种全新的工作负载类型。它们既不是无状态微服务,也不是一次性运行的批处理作业。它们会累积状态、需要严格隔离、需要调用模型 API 和工具服务器,而且如果无人看管,可能会在循环中不断烧钱。AX 提供四个小巧的原语,以声明式方式处理这一切:

你想要…AX 提供
在隔离沙箱中运行不受信任的智能体代码,并限制 CPU/内存Task
预先接好 Git 仓库、MCP 服务器和技能包,让每个智能体热启动Workspace
将出站流量锁定为显式的主机白名单Gateway
配置平台自身使用的 LLM,凭据来自 Kubernetes secretModel
暂停空闲智能体,并从原处精确恢复ax suspend / ax resume
Shell 进入运行中的智能体,看看它在做什么ax ssh

一切都通过 ax.io/v1alpha1 清单表达,并用一条命令应用。

快速开始

1. 安装 CLI

go install github.com/google/ax/cmd/ax@latest

这会将 ax 二进制文件放入 $(go env GOPATH)/bin。请确保该目录在 PATH 中。

2. 部署控制平面

你需要一个 Kubernetes 集群、ko(brew install ko)、一个集群可拉取镜像的容器仓库,以及可访问的 Agent Substrate Control API(集群内默认地址:api.ate-system.svc.cluster.local:443)。

make deploy AX_IMAGE_REPO=<your-registry>

这会先部署 Redis,然后用 ko 构建并部署控制平面镜像。所有组件都会落在 ax-system 命名空间中。

3. 运行你的第一个任务

ax apply -f examples/task.yaml       # 一个文件包含 Task + Workspace + Gateway + Model
ax get tasks
# NAME      ATESPACE   PHASE     ACTOR           WORKER-IP    AGE
# task123   default    Running   task123         10.20.3.67   1m

ax watch task task123                # 实时输出阶段与条件变化
ax ssh task123 -- ls -la /workspace  # 在沙箱内四处查看
ax suspend task task123              # 做检查点并暂停
ax resume task task123               # 从中断处继续

想看完整的端到端生命周期?运行 ./demo.sh。它会应用一个自定义工作区、等待就绪、通过 ax ssh 执行命令,并挂起任务。

文档

指南阅读目的…
概念了解 Task、Workspace、Gateway 和 Model 各自的作用,以及任务如何经历各阶段与条件。
清单编写你自己的 YAML,每种类型都附有带注释的示例。
沙箱了解 runner 在启动时做什么,以及你的命令可以依赖什么:元数据服务器、来宾服务、环境。
Runner理解控制平面与任务容器之间的契约,并构建你自己的 runner 镜像替换默认版本。
网络从集群、你的笔记本或 gRPC 客户端通过 atenet 路由器访问运行中的任务。
架构理解控制平面如何组织,以及 API 参考。
开发构建、测试并发布对 AX 本身的修改。
路线图查看核心规范、actor 架构、智能体环境与治理方面的规划里程碑。

CLI 用法

ax 通过 gRPC 与控制平面通信。它刻意采用 kubectl 式的形态:apply、get、describe、watch、delete,外加少量智能体专属动词。

日常命令

# 应用任何内容(多文档 YAML、文件或 stdin)
ax apply -f examples/task.yaml

# 任务
ax get tasks                          # 列表
ax get tasks -a my-atespace           # 列出另一个 atespace 中的任务
ax get task task123                   # 完整 spec + 实时状态(YAML 格式)
ax describe task task123              # 人类可读的详细信息
ax watch task task123                 # 实时输出状态与条件转换
ax suspend task task123               # 对 actor 状态做检查点并暂停
ax resume task task123                # 恢复已挂起的任务
ax delete task task123

# Shell 进入运行中的沙箱
ax ssh task123                        # 交互式 shell(任务需要 spec.debug: true)
ax ssh task123 -- ls -la /workspace   # 一次性命令
ax ssh task123 -- python3 main.py

# Gateway、workspace、model 遵循相同的模式
ax get gateways
# NAME              ATESPACE   LISTENERS             EGRESS-HOSTS
# default-gateway   default    8494/gRPC,8080/HTTP   *
ax describe gateway default-gateway
ax delete gateway default-gateway

ax get workspaces
# NAME                ATESPACE   GIT-REPOS   MCP-SERVERS
# default-workspace   default    1           1
ax describe workspace default-workspace
ax delete workspace default-workspace

ax get models
# NAME            ATESPACE   PROVIDER   MODEL
# default-model   default    google     gemini-3.8-flash
ax describe model default-model
ax delete model default-model

# 连接相关
ax ctx                                # 当前的 kube 上下文以及 ax 如何连接控制平面
ax tunnel list                        # 后台隧道(状态保存在 ~/.ax/tunnels)
ax tunnel stop
ax version

与 kubectx 配合使用

ax 会跟随你当前激活的 Kubernetes 上下文。切换集群后,ax 会在后台解析并建立通往该集群控制平面的隧道。

kubectx staging-cluster
ax get tasks

kubectx prod-cluster
ax get tasks

# 或者不切换上下文直接指定目标
ax --context=dev-cluster get tasks

全局标志

标志描述默认值
-a, --atespace命令的 atespace 范围default
-n, --namespaceAX 安装所在的 Kubernetes 命名空间ax-system
--context要定位的 Kubernetes 上下文激活的 kubectx / current-context
--server控制平面地址,绕过自动检测由 kube 上下文推导,或 $AX_SERVER

许可证

Apache License 2.0。详情见 LICENSE。