返回博客列表

Google 开源 AX:用 Kubernetes 的思路编排 Agent,登顶 HN 当日热榜

2026-09-22T14:30:00+08:00
AXGoogleAgent编排器KubernetesAgent Substrate开源

Google 开源 AX:用 Kubernetes 的思路编排 Agent,登顶 HN 当日热榜

看到它第一眼,我的反应是:K8s 的套路用到 Agent 上了。

9 月 20 日,Google 在 GitHub 上开源了 AX(Agentic Orchestrator),一个面向 Agent 场景的编排运行时,当天登顶 Hacker News 热榜(648 分、296 条评论)。仓库 google/ax,Go 语言,Apache-2.0,两天内涨到 7000+ stars。

它解决什么问题?一句话:当企业里的 Agent 从几个涨到几十上百个,谁来管它们的生命周期、隔离、网络边界和资源开销? AX 的答案是——像 Kubernetes 管容器那样管 Agent。如果你用过 kubectl,用 ax 会感觉很熟悉:ax applyax get tasksax watchax ssh

这篇文章拆解 AX 到底是什么、它怎么设计、以及它为什么值得关注。

本文提纲

  1. AX 是什么:Agent 版的 Kubernetes
  2. 四大原语:Task、Workspace、Gateway、Model
  3. 架构拆解:为什么状态放 Redis 不放 etcd
  4. 上手体验:从 apply 到 ssh
  5. 和 LangGraph / Temporal 这些编排框架有什么不同
  6. 该不该用:价值与风险

AX 是什么:Agent 版的 Kubernetes

AX 的全称是 Agentic Orchestrator,官方定位是 high-throughput, declarative orchestrator to run billions of autonomous agent workloads in a cluster——高吞吐、声明式,在集群上运行数十亿自治 Agent 工作负载的编排器。它跑在 Google 开源的 Agent Substrate 之上,后者负责沙箱执行。

先看一个最小例子。声明一个任务,预装 Go 仓库,然后 apply:

# 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: "Ensure that Go tool chain is available and is built from source"
  debug: true   # lets you `ax ssh` into the sandbox
ax apply -f task.yaml
ax watch task test
ax ssh test -- ls -al /workspace

apply 提交声明,watch 看任务状态流转,ssh 钻进沙箱看 Agent 到底在干嘛。整个心智模型就是 Kubernetes 换成了 Agent 负载。

为什么用 K8s 的思路?README 里的 "Why?" 说得很直白:Agent 是一种新类型的负载——它既不是无状态微服务,也不是跑到完成的批处理作业。它会累积状态、需要严格隔离、要调模型 API 和工具服务器、而且如果没人盯着会烧钱死循环。K8s 的声明式 + 生命周期管理 + 资源隔离,正好覆盖这些需求。

四大原语:Task、Workspace、Gateway、Model

AX 只给了四个小原语,全部用 ax.io/v1alpha1 manifest 表达:

原语 解决什么
Task 在隔离沙箱里跑不受信任的 Agent 代码,带 CPU/内存限制
Workspace 预接 Git 仓库、MCP 服务器、Skill 包,让每个 Agent 冷启动即热
Gateway 把出站流量锁到显式主机白名单
Model 配置平台自用的 LLM,凭据从 Kubernetes Secret 读取

Task:刻意做小

Task 是最小隔离执行单元:声明容器镜像和命令、计算请求与限制、环境变量、引用 Gateway 和一个或多个 Workspace。

有意思的是它的设计哲学。README 和 concepts 文档反复强调 Task 要刻意小:

一个 Agent 不是跑一次就结束的进程;它的生命周期里会规划、委派、重试、扇出工作。AX 不试图建模那个形状。它只给你一个便宜创建、隔离、暂停、丢弃的原语,让 Agent 自己按需组合——单个 Task 可以是整个任务,也可以是一个大树形任务组的根节点。

每个节点拿到同样的沙箱、同样的生命周期、同样的工具。这跟"把 Agent 建模成一个有状态的巨无霸进程"是相反的设计路线。

Task 生命周期用 status.phase 表示(Running、Suspended、Failed、Terminating),条件(Conditions)带细节:WorkspaceReady(工作区就绪)、GatewayReady(网络策略已应用)、Ready(真正跑起来)。

Workspace:让 Agent 冷启动即热

把 Agent 弄到能开始干活,是很繁琐的:克隆仓库到正确 revision、挂载数据源、装好它该用的工具和 skills。每个需要同样环境的任务都要重复一遍,每个 Agent 框架都在重复造轮子。

Workspace 就是把这个过程声明式化、只做一次。声明一次,任意多 Task 绑定;runner 会在命令启动前把它物化进每个沙箱:Git 仓库克隆到 workspace 路径下的子目录、MCP 服务器和 registry、Skill registry 和 skills 的物化路径。

Workspace 绑定还能带一个 goal——用自然语言描述任务需要的环境。首次启动时 runner 把这个 goal 交给一个 Agent 去完成环境准备(装工具链、装依赖),让任务自己的命令在就绪环境里开始。

Gateway:网络边界

Gateway 是 Task 的网络边界。它声明 Task 暴露的监听器(listeners)和一个出站白名单(egress allowlist of hosts and ports)——沙箱只能访问白名单里的主机。你可以把 Agent 限制到只连你的 LLM 提供商和 Git 主机。对"Agent 会不会乱访问外网"这个担忧,这是个直接的回答。

Model:配置即资源

Model 不是一个模型,是一个命名模型配置:调哪个提供商、用哪个模型 ID、temperature 等生成参数、以及指向存 API key 的 Kubernetes Secret 的引用。

把它声明成资源,是为了跨集群可管理:配置集中在一处,而不是散在每个 Agent 的环境变量里。轮换 key、固定新模型版本、收紧参数,都是一次 ax apply 的事。AX 自己的组件也会读它——比如用 goal 规划 workspace 的时候。

架构拆解:为什么状态放 Redis 不放 etcd

AX 的架构值得单独讲,因为有一个很反直觉的设计决策。

状态存在 Redis,不用 Kubernetes CRD。 DESIGN.md 说得很直接:

把数百万短命任务存成 Kubernetes CRD,会把 etcd 推过它的舒适区——etcd 有单位数 GB 的存储限制、写速率瓶颈、控制面退化。

所以 AX 的状态和事件流走 Redis + Redis Streams,把它当 API server 和水平扩展 controller 池之间的工作队列。

ax apply -f task.yaml
        │
        ▼
    ax-server
  (gRPC API + /healthz)
        │
 store & publish event
        ▼
      Redis
(Task Hashes + Event Streams + PubSub)
        │
 XREADGROUP (Streams)
        ▼
  ax-controller
(Horizontally Scaled Workers)
        │
 gRPC (Control API)
        ▼
  Agent Substrate
┌───────────────────────────────┐
│ Atespace Provisioning         │
│ Actor Creation & Activation   │
│ Worker Assignment             │
│ Egress Policy Filtering       │
└───────────────────────────────┘

组件拆成四个:

组件 角色
ax 开发者 CLI,apply/manifest/inspect/tunnel
ax-server 无状态 gRPC API(8080),校验 manifest、持久化到 Redis、发事件
ax-controller 调和 worker,消费 Redis stream,在 Agent Substrate 上 provision atespaces 和 actors、应用出口策略、驱动任务到期望状态;加副本即可扩展
ax-task-runner 每个任务容器里的入口,引导 workspace、提供 metadata、跑 agent 命令

所有资源都住在 atespace 里(默认 default)——这是 AX 的命名空间概念。CLI 刻意做成 kubectl 的形状:applygetdescribewatchdelete,加上 Agent 专属动词 sshsuspendresume。还兼容 kubectx:跟着当前 K8s 上下文走,切换集群时 ax 会在后台自动解析并隧道到那个集群的控制面。

上手体验:从 apply 到 ssh

# 安装 CLI
go install github.com/google/ax/cmd/ax@latest

# 部署控制面(需要 K8s 集群 + ko + 容器仓库 + Agent Substrate Control API)
make deploy AX_IMAGE_REPO=

# 跑第一个任务
ax apply -f examples/task.yaml
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              # checkpoint 并暂停
ax resume task task123               # 原样恢复

ax suspend / ax resume 是 Agent 场景很有用的特性:暂停一个空闲的 Agent,checkpoint 它的状态,之后从原处继续——不用每次重跑。ax ssh 让你能亲眼看到 Agent 在沙箱里干什么,而不是只信它的汇报。

和 LangGraph / Temporal 这些编排框架有什么不同

这里要分清两类"编排",它们解决的不是同一层问题:

  • 工作流/流程编排(LangGraph、Temporal、Prefect):管的是——任务之间怎么连线、状态机怎么流转、人机介入节点、失败重试、DAG 执行。它们在 Agent 进程内部或流程层面建模"业务逻辑怎么走"。
  • 运行时/负载编排(AX、Kubernetes、Nomad):管的是生命周期和资源——负载在哪里跑、怎么隔离、怎么限制资源、怎么重启、怎么暂停恢复。它们在集群层面回答"这些进程怎么活"。

AX 属于后者,而且是刻意只做后者。concepts 文档里那句话是关键:"AX 不试图建模 Agent 的图状形状,只给一个便宜的原语让它自己组合。" 所以拿 AX 和 LangGraph 直接比"谁的工作流能力强",其实是错位竞争——AX 更像是 Agent 的容器运行时,LangGraph 更像 Agent 的应用框架。两者理论上可以叠着用:LangGraph 管业务图,AX 管这些图跑在哪、怎么隔离、怎么扩缩容。

HN 评论里有个很贴切的比喻:"这基本上就是 Kubernetes 的 virtual threads。" 也有人担忧地指出这是 "AI 的 k8s 化"——既是必然,也意味着复杂度的转移。

该不该用:价值与风险

几层实在的判断。

价值在哪? 如果你已经在 K8s 上运营基础设施,AX 的学习曲线几乎是平的——同样的声明式哲学、同样的 CLI 形状、同样的 Secret 体系。它对"Agent 乱访问网络"给了 Gateway 白名单这个硬约束,对"Agent 烧钱死循环"给了资源限制和 suspend/resume,对"Agent 冷启动慢"给了 Workspace 预热。这些是生产级 Agent 平台绕不开的问题。

但要泼几盆冷水:

  1. 明确是实验性项目。 README 开头就是醒目的警告:核心概念、协议、规范还在积极迭代,稳定版之前会有重大破坏性变更。HN 上对 Google 开源项目"维护一段时间然后慢慢放弃"的质疑也很直接——虽然有人举了 Kubernetes、Go、TensorFlow、Chromium 这些反例,但没人能保证 AX 是下一个 K8s 而不是下一个被弃坑。
  2. 技术栈很深。 它不是 pip install 就能用的库,而是要 K8s 集群 + Agent Substrate + Redis + 容器仓库的控制面部署。HN 评论提醒:你 opt in 的是一整套 Agent Substrate 栈(他们的 runner、harness、substrate)。
  3. 撞名混淆。 还有个叫 Ax 的 Agent 开发工具(axllm.dev),名字一样容易搞混。
  4. YAML 争议。 有人不喜欢写一堆 YAML——但也有评论点破:Google 大概预期这些 YAML 会是 Agent 自己写的。

什么时候值得关注? 你在认真构建多 Agent 基础设施、且愿意跟进一个快速迭代的早期项目,AX 值得持续关注——它的"Agent 负载编排独立成层"这个方向,比它目前的代码成熟度更值得注意。企业里 Agent 数量从个位数涨到几十上百,"谁来调度调度器"是真实痛点,编排层正在独立成一个新品类。Google 押注 Agent Substrate + AX 这条开放协议路线,如果生态接受,它有可能成为多厂商 Agent 互操作的公共底座之一。

但生产环境用它,现在还为时过早。等它过了破坏性变更期、社区审查跟上、生态围绕它长起来,再评估不迟。方向对,不代表现在就该上车。

参考链接

你更看好"Agent 负载编排"独立成层,还是觉得 LangGraph 这类流程编排就够了?评论区聊聊你的判断,觉得有用点个赞让更多人看到。


作者: itech001 来源: 公众号:AI人工智能时代(the-ai-era) 网站: https://www.theaiera.top/ 关注每日最新AI新闻和技术博客,主页有更多的文章的AI 技术参考:https://www.theaiera.top

本文首发于 AI人工智能时代,转载请注明出处。

分享给朋友