google/ax
GitHub: google/ax
AX 是一个分布式 agent 运行时,通过提供状态管理、隔离执行和自动恢复能力,解决长时间运行的自主 agent 在生产环境中的编排与可靠性问题。
Stars: 1889 | Forks: 108
# Agent Executor (AX)
AX 是 Agent Executor 的缩写,是一个分布式测试框架运行时。
它通过可挂起/恢复的镜像动态配置隔离环境,
以执行测试框架和 agent。
AX 专为可靠性而设计,原生支持恢复
和执行续接,即使在分布式环境中也是如此。
## 功能
- **分布式运行时**:测试框架、技能、工具和 agent 可以在隔离环境中执行
- **续接**:从故障或中断中自动恢复
- **内置测试框架**:支持前沿测试框架和自定义实现
- **审计与策略**:所有用户和 agent 的调用均由通用控制器协调,易于控制和审计整体执行以及技能/工具/agent 调用
- **可移植性**:随处运行,可扩展至大大小小的部署
- **可定制性**:不依赖于特定的测试框架和模型
内置一致性和可恢复性功能:
- **单写入者架构**:单一控制器确保一致的状态管理
- **事件日志**:持久的执行状态,支持自动恢复
- **高级续接**:在兼容平台上支持计算层 actor 续接
## 演示
[](https://www.youtube.com/watch?v=L5Iw1IrZ6Nc)
观看我们的演示,了解 AX 部署在 [Agent Substrate](https://github.com/agent-substrate/substrate) 上是如何工作的。
## 概述
```
%%{init: {"flowchart": {"diagramPadding": 80}}}%%
graph LR
Client
subgraph Cluster[" "]
Server["AX Server
(multi-tenant)"] DB[("Event Log"
Storage)] ControlService["Control API"] Actor["AX Harness Server
(stateful session-tenant)"] end SnapshotService["Snapshots"] HarnessService["Harness or model
service"] MCPServer["MCP server"] Client <-->|resumable stream| Server Server <-->|scan/append| DB Server --> ControlService ControlService -->|resume/suspend| Actor Server <-->|resumable stream| Actor ControlService <-->|read/write| SnapshotService Actor -.-> HarnessService Actor --> MCPServer Actor -.-> Environment ``` 随着 agent 从简单的助手演变为自主的长时间运行工作进程, 开发者需要一个健壮的运行时来管理状态、确保可靠性 并审计执行。随着我们正在从单体 agent 转向 分布式测试框架(即工具、技能和 agent 作为 隔离的 actor 部署),一个能够动态生成隔离 工作进程的分布式运行时变得必不可少。AX 提供了填补这些空白的基础层。 虽然不依赖于特定的计算平台,但 AX 旨在 Kubernetes 上提供最佳 体验。 我们期望每个复杂的 agentic 应用都需要 AX 提供的这些功能。 我们正在将这一层构建为一个广泛可用基础, 使开发者能够专注于构建他们的应用程序,而 不是基础设施。我们决定公开构建这个项目,以便 在发布稳定版本之前验证每一个设计决策。 我们非常鼓励您向我们提供反馈。 ## 安装说明 直接从代码库安装 ax CLI: ``` go install github.com/google/ax/cmd/ax@latest ``` ### 验证安装 检查 ax 是否已正确安装: ``` ax --help ``` 您应该会看到 ax CLI 的使用说明。 ### Kubernetes AX 在 Kubernetes 上的 [Agent Substrate](https://github.com/agent-substrate/substrate) 中原生受支持,这是推荐的生产环境 部署选项。有关设置和配置的更多详细信息,请参阅 [部署指南](./manifests/README.md)。 阅读更多关于[这个新层级](https://cloud.google.com/blog/products/containers-kubernetes/bringing-you-agent-sandbox-on-gke-and-agent-substrate) 的信息,它为 Kubernetes 上的 agentic 工作负载提供了更高的密度。 ## 快速开始 ### 1. 执行 CLI 提供了一种简单的执行方式,可以使用 已链接到 AX 二进制文件中的 agent 和内置工具。 ``` # 使用默认 ax.yaml ax exec --input "Can you list me this directory?" # 在 AX server 上使用 exec ax exec --input "Can you list me this directory?" --server localhost:8494 ``` 对话可以随时继续: ``` ax exec \ --conversation d85a4b4e-c53b-4c84-b879-f10d905bce40 \ --input "Show me the contents of README.md" ``` 如果客户端断开连接,请传递它看到的最后一个序列号以 重放它错过的事件。这会让客户端追上进度;它不会 回滚对话。 在这个例子中,我们从序列号 12 开始让客户端追上进度: ``` ax exec \ --conversation d85a4b4e-c53b-4c84-b879-f10d905bce40 \ --last-seq 12 \ --resume ``` 除了运行默认的测试框架外,您还可以开始执行 任何已注册的测试框架: ``` ax exec \ --harness antigravity \ --input "Can you write me a simple HTTP server in Python?" ``` 如果在执行 agent 期间出现任何问题, 您可以在对话中恢复未完成的执行: ``` ax exec \ --conversation edf98ef5-4bb1-4a9e-a091-3a77e03727e6 \ --harness antigravity \ --resume ``` ## 用法 `ax` 命令提供了几个子命令: ### 执行 ``` ax exec \ [--input] \
[--conversation ] \
[--harness ] \
[--server ] \
[--config ] \
[--resume] \
[--last-seq ]
```
执行新的测试框架执行,或自动恢复现有的执行。如果对话 ID 已经存在,执行将从其上次的状态恢复。
选项:
- `--input`:发送给 agent 的输入消息(如果设置了 `--resume` 则可选,否则必填)
- `--conversation`:对话 ID(可选,如未提供则生成 UUID,如果存在则恢复)
- `--harness`:要使用的测试框架 ID(可选,默认为默认测试框架)
- `--server`:gRPC 控制器服务器地址(可选。如未提供,则使用本地内置 AX 服务器运行)
- `--config`:YAML 配置文件的路径(仅与本地内置 AX 服务器一起使用,默认:"ax.yaml")
- `--resume`:在没有输入的情况下恢复对话(可选,与 `--input` 互斥)
- `--last-seq`:客户端从中恢复的已查看的最后一个序列号(可选)。服务器会重放后续的任何事件,以便客户端在断开连接后能够追上进度。
**示例:**
```
# 执行一个新的 execution
ax exec --input "Hello agents!"
# 使用新输入恢复现有 execution
ax exec --conversation a53d4db3-1165-4925-87da-be6c72bbdeb1 --input "Ok, now let's do something else..."
# 使用 server mode 执行
ax exec --server localhost:8494 --input "Hello agents!"
# 使用自定义 agent 执行
ax exec --harness coding --input "Hello coding agent, write me a cool Go program!"
```
### 服务
```
ax serve [--config ]
```
使用 YAML 配置文件将控制器作为 gRPC 服务器启动。
选项:
- `--config`:YAML 配置文件的路径(默认:"ax.yaml")
示例配置文件(`ax.yaml`):
```
version: v1alpha
server:
address: ":8494"
eventlog:
sqlite:
filename: "eventlog/log.sqlite"
```
示例:
```
# 使用默认 config (ax.yaml) 启动 server
ax serve
# 使用自定义 config 启动 server
ax serve --config my-config.yaml
```
### 认证
内置的 Antigravity agent 支持使用 Google AI Studio 或 Vertex AI 进行身份验证:
```
# 基于 AI Studio API key 的身份验证。
export GEMINI_API_KEY="your-api-key"
# 基于 Vertex AI 的身份验证,请确保 application
# default credentials 已设置,gcloud auth application-default login。
export GOOGLE_CLOUD_PROJECT="your-project-id"
export GOOGLE_CLOUD_LOCATION="us-central1"
export GOOGLE_GENAI_USE_VERTEXAI=True
```
## 扩展
### 测试框架
AX 提供了内置的测试框架(例如 Antigravity),但您可以通过实现 `HarnessService` 来提供
您自己的测试框架实现。在受支持的
计算服务(例如 Agent Substrate)上,AX 会自动
在隔离环境中运行测试框架,并支持自动恢复和挂起。
传统 agent(例如工具使用或工作流 agent),或者
语言模型都可以作为测试框架来实现。
### 技能
像 Antigravity 这样的内置测试框架包含了对
Agent Skills 的内置支持。详情请参阅 [Skills](examples/skills)。
### MCP 工具
像 Antigravity 这样的内置测试框架支持在配置完成后发现
并调用 MCP 工具。
## AX 不是什么?
* 托管服务。AX 是自托管的,而不是托管服务。
我们的目标是让用户能够轻松地在其
Kubernetes 集群上部署和运维它。
* Agentic 框架。AX 不依赖于用于
构建 agent 的框架。
* 特定的测试框架,例如特定的编码 agent(如 Antigravity)。
AX 提供了围绕测试框架的服务层,并且不依赖于
测试框架的实现。很快,我们将允许用户接入自己的
测试框架。
* 特定模型的控制器。AX 不依赖于所使用的模型。
## 路线图
以下是我们即将推出的功能和计划变更的概述:
1. 支持 Antigravity 之外的更多前沿测试框架
2. 支持 BYOH (Bring Your Own Harness)
3. 支持来自测试框架的工具调用审批
4. 对恢复协议的改进
5. 从事件日志和快照中进行分叉
6. 轨迹展示
7. 更好的遥测展示
8. 针对策略、审计等的集成
## 历史
多年来,Google 内部的各个团队构建并运维了多个
分布式执行引擎。随着这些系统的演进,某些
架构模式经受住了时间的考验。
各个团队意识到他们在重复解决类似的
编排问题,这促使人们推动将这些
经验教训提取到一个通用的运行时层中。
在这个通用层逐渐成型的同时,AI 领域经历了
一场巨大的变革。应用程序正从
无状态的工具使用 agent 过渡到自主的、长时间运行的、自我改进的
agent,这些 agent 通常需要隔离的、可恢复的执行环境。
此外,从效率的角度来看,agentic 工作负载本质上是突发性的。
一个 agent 可能会密集计算一分钟,然后闲置
数小时或数天等待人类批准。在这些漫长的
闲置期间让有状态的 actor 保持活动是极其低效的,并且在
大规模下成本高昂。
在过去的 10 年里,Kubernetes 已成为
大规模作业编排的标准,但它的根本设计是为了
无状态的微服务或可预测的批处理作业 --
而不是为了挂起和恢复有状态的、沙盒化的 agent actor。
在这双重挑战的驱动下,我们决定构建一个健壮、通用的
agentic 编排器,专门为我们正在 Kubernetes 上开发的
新计算层而设计。我们的目标是简化
agent 的生产化,让开发者和研究人员
专注于构建和评估他们的
应用程序,而不是应付底层基础设施。
AX 由积极开发 Google 内部运行时的团队
开发和维护。尽管这两个项目今天在
不同的层级上运作,但我们每天都在将我们的知识
和见解应用于公共领域的 AX。
## 致谢
我们感谢 Google DeepMind 在分布式测试框架方面所做的早期工作,这些
工作对 AX 产生了深远的影响。
我们感谢 Google Kubernetes Engine 团队关于
隔离、恢复和作业调度方面的深度贡献。
## 许可证
Apache 2.0
(multi-tenant)"] DB[("Event Log"
Storage)] ControlService["Control API"] Actor["AX Harness Server
(stateful session-tenant)"] end SnapshotService["Snapshots"] HarnessService["Harness or model
service"] MCPServer["MCP server"] Client <-->|resumable stream| Server Server <-->|scan/append| DB Server --> ControlService ControlService -->|resume/suspend| Actor Server <-->|resumable stream| Actor ControlService <-->|read/write| SnapshotService Actor -.-> HarnessService Actor --> MCPServer Actor -.-> Environment ``` 随着 agent 从简单的助手演变为自主的长时间运行工作进程, 开发者需要一个健壮的运行时来管理状态、确保可靠性 并审计执行。随着我们正在从单体 agent 转向 分布式测试框架(即工具、技能和 agent 作为 隔离的 actor 部署),一个能够动态生成隔离 工作进程的分布式运行时变得必不可少。AX 提供了填补这些空白的基础层。 虽然不依赖于特定的计算平台,但 AX 旨在 Kubernetes 上提供最佳 体验。 我们期望每个复杂的 agentic 应用都需要 AX 提供的这些功能。 我们正在将这一层构建为一个广泛可用基础, 使开发者能够专注于构建他们的应用程序,而 不是基础设施。我们决定公开构建这个项目,以便 在发布稳定版本之前验证每一个设计决策。 我们非常鼓励您向我们提供反馈。 ## 安装说明 直接从代码库安装 ax CLI: ``` go install github.com/google/ax/cmd/ax@latest ``` ### 验证安装 检查 ax 是否已正确安装: ``` ax --help ``` 您应该会看到 ax CLI 的使用说明。 ### Kubernetes AX 在 Kubernetes 上的 [Agent Substrate](https://github.com/agent-substrate/substrate) 中原生受支持,这是推荐的生产环境 部署选项。有关设置和配置的更多详细信息,请参阅 [部署指南](./manifests/README.md)。 阅读更多关于[这个新层级](https://cloud.google.com/blog/products/containers-kubernetes/bringing-you-agent-sandbox-on-gke-and-agent-substrate) 的信息,它为 Kubernetes 上的 agentic 工作负载提供了更高的密度。 ## 快速开始 ### 1. 执行 CLI 提供了一种简单的执行方式,可以使用 已链接到 AX 二进制文件中的 agent 和内置工具。 ``` # 使用默认 ax.yaml ax exec --input "Can you list me this directory?" # 在 AX server 上使用 exec ax exec --input "Can you list me this directory?" --server localhost:8494 ``` 对话可以随时继续: ``` ax exec \ --conversation d85a4b4e-c53b-4c84-b879-f10d905bce40 \ --input "Show me the contents of README.md" ``` 如果客户端断开连接,请传递它看到的最后一个序列号以 重放它错过的事件。这会让客户端追上进度;它不会 回滚对话。 在这个例子中,我们从序列号 12 开始让客户端追上进度: ``` ax exec \ --conversation d85a4b4e-c53b-4c84-b879-f10d905bce40 \ --last-seq 12 \ --resume ``` 除了运行默认的测试框架外,您还可以开始执行 任何已注册的测试框架: ``` ax exec \ --harness antigravity \ --input "Can you write me a simple HTTP server in Python?" ``` 如果在执行 agent 期间出现任何问题, 您可以在对话中恢复未完成的执行: ``` ax exec \ --conversation edf98ef5-4bb1-4a9e-a091-3a77e03727e6 \ --harness antigravity \ --resume ``` ## 用法 `ax` 命令提供了几个子命令: ### 执行 ``` ax exec \ [--input
标签:AI智能体, EVTX分析, Python工具, 事件日志, 分布式运行时, 可扩展架构, 子域名突变, 容错恢复, 执行环境, 日志审计