分布式 Agent 如何把断点恢复、审计策略和执行调度收进同一条链路

一条 可恢复、可审计、可扩展 的执行链把事情串起来。

AX 放在技术栈的哪个位置

先看它在技术栈里的位置。AX 既不是模型层,也不是某个具体框架的替代品。 它插在 Agent 应用和底层基础设施中间,负责把上层的任务意图翻译成一套可追踪的执行过程。

mermaid-01.png

图:AX 位于 Agent 应用与底层执行基础设施之间,负责托住执行过程。

这层位置很关键。它意味着 ​AX 对上层 Agent 实现基本保持中立,对下层模型也不强绑定​。你可以继续用 ADK、LangGraph,甚至是自己的 Harness;也可以换模型,而不必动到 AX 的核心职责。换句话说,它想管的是 ​执行​,不是 ​思考​。

真正的核心不是 Agent,而是 Controller

系统里最重要的组件不是某个 Planner Agent,而是 ​Controller​。因为一旦把 Agent 执行当成生产系统问题,第一优先级就不再是"会不会推理",而是"谁在协调、记账、路由和兜底"。

mermaid-02.png

图:Controller 通过 Executor、Registry 和 Event Log 统一托管执行链。

这里有三个角色值得单拎出来:

Executor 决定这次任务该往哪里跑,什么时候继续,什么时候停。

Registry 把可用的 Agent、Tool、Skill 暴露成一张可查询的能力表,运行时不用写死依赖。

Event Log 不是普通日志,它记录的是 ​执行进度本身​,所以它参与恢复,不只是排错。

这也是 AX 和不少"框架式 Agent 编排器"的分水岭。后者更关心节点之间怎么流转,AX 更关心 ​流转发生以后,系统能不能把整个过程可靠地托住​。

一次任务真正怎么跑完

AX 并不是把所有事塞给单个 Agent,而是把请求拆成几段:​入口路由、Planner 分析、远程 Agent 执行、Tool 调用、状态回写​。中间哪一段出问题,Controller 都能知道当前停在什么位置。

mermaid-03.png

图:一次任务会经过路由、规划、远程执行、工具调用和状态回写。

这条链路里最容易被低估的是 Resumable Stream。如果只是普通 RPC,连接断了就断了,调用方只能重试。AX 把执行过程做成 ​可恢复的流​,等于承认一件很现实的事:长任务在真实环境里就是会被打断,系统应该把"中断"当成常态,而不是异常。

分布式不是卖点,是隔离故障域的手段

很多人一看到"分布式运行时",会先想到扩容。AX 这套设计更实在,它首先解决的是 ​隔离​。Controller、Skills、Tools、Agents 都可以独立部署在不同进程甚至不同节点,远程 Agent 通过 gRPC 和 Controller 通信,失败边界天然被切开了。

这带来几个直接好处:

远程 Agent 跑崩,不会把 Controller 一起拖下去。

高风险工具可以丢到单独环境里跑,权限边界更干净。

资源型任务和轻量型任务能分开调度,不必共享一个执行池。

某个 Agent 的噪声日志、内存暴涨、重试风暴,不会污染整条链路。

不少介绍会把它放成一个单独能力点,但我觉得它其实是整套系统的基础假设:Agent 不该默认和调度器同生共死。

Event Log 不是辅助信息,它就是恢复现场

真正让长任务可恢复的,不是简单保存一个"任务成功 / 失败"状态,而是把执行过程按序号持续落盘,让系统随时知道上次稳定位置停在哪。

mermaid-04.png

图:Event Log 记录稳定序号,让长任务能从中断点继续。

这类设计在几个场景里尤其有用:

深度研究类任务 动辄跑几十分钟,中途掉线很常见。

多工具链路 往往包含外部 API,失败率不受你控制。

​人工介入审批后继续执行​,天然就是分段运行。

Event Log 是 ​single source of truth​。这不是修辞。只要你真的想做恢复、回放、审计和分叉,系统就必须承认有一份权威执行历史存在,而且它不能只放在内存里。

AX 为什么坚持做框架无关接入

AX 的接入方式做得很杂,但这个"杂"是有理由的。它不要求所有 Agent 都按一种写法来实现,而是给了四条进场路径:

接入方式 适合什么场景 运行时特征

原生远程 Agent 已经有独立 Agent 服务 通过 AgentService.Connect 建立 gRPC 双向可恢复流

Google ADK Agent Python 生态里的 ADK 项目 由 Python ADK Agent 直接接入,底层通信封装为 gRPC

A2A Bridge Agent 团队已有 A2A 兼容 Agent 通过 A2A Bridge 转换协议与标头

Colab Agent 研究和实验任务 支持把 Python 脚本或 Notebook 作为执行入口

mermaid-05.png

图:AX 通过多种接入模式兼容已有 Agent 生态,而不要求统一重写。

这背后的判断很工程化:企业里不会只有一种 Agent 形态。 有人用 Python,有人已经做了 A2A 协议,有人只是想把现成脚本纳入统一调度。让这些东西都重写一遍,系统很难落地。把协议边界做厚一点,反而更现实。

审计和权限别散在各个 Tool 里

AX 最像"基础设施"而不是"框架"的地方,就在 ​审计与策略控制​。所有用户请求、Agent 请求、Tool 调用都经过 Controller 这一个控制面,于是权限校验、调用记录、执行限流和审批流可以集中处理。

mermaid-06.png

图:把权限、限流、审计和审批放回控制面,才能真正治理 Agent 行为。

这套做法的好处很直接:

安全规则不会散落在每个 Tool 的私有实现里。

需要人工确认的危险操作,比如 Bash 执行,可以被统一拦下来。

出了问题以后,能回溯到是哪次请求、哪个 Agent、哪一步工具调用触发的。

尤其是 Bash Tool 的"需用户确认才能执行",看起来像个小功能,其实透露出整套系统的安全姿势:默认不信任 Agent 的执行冲动,必须给控制面留一个人工刹车。

Session Fork 解决的不是重试,而是低成本试错

如果只想断点恢复,事件日志已经够用了。AX 还额外做了 ​会话分叉​,这说明它想支持的不只是"接着跑",还有"从历史某一点拐出去跑另一条线"。

mermaid-07.png

图:同一份执行历史既能恢复原链路,也能从稳定点分叉试错。

这在几个地方很有用:

What-if 分析,不想污染原任务链路。

回溯重试,直接从失败前的稳定点重开。

长任务跑到一半想验证另一套参数,不必整段重来。

这也是为什么 Fork 和 Resumption 必须分开看。恢复解决的是可靠性,分叉解决的是探索效率。 两者依赖同一份事件历史,但目标并不一样。

如果把 AX 当成一句话,它在补"Agent 缺的控制面"

Google AX 想解决的不是 Agent 是否足够聪明,而是 Agent 一旦进入真实执行环境,系统还缺哪几块硬骨头。它给出的答案也很明确:

用 Controller 把执行调度从 Agent 本体里抽出来。

用 Event Log 把任务状态外化,支持恢复、回放和分叉。

用 分布式部署 和 Actor 隔离 切开故障域。

用 统一控制面 接住审计、权限、限流和审批。

相关推荐
ljs6482739516 小时前
Hadoop集群部署常见问题
大数据·hadoop·分布式
她说可以呀7 小时前
RabbitMQ Publisher_Confirms(发布确认)
分布式·rabbitmq·ruby
2603_9547083121 小时前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全
国服第二切图仔1 天前
HarmonyOS APP《画伴梦工厂》开发第60篇-分布式软总线2.0——多设备协同新范式
分布式·wpf·harmonyos
952361 天前
RabbitMQ-基础操作
java·spring boot·分布式·后端·spring·rabbitmq
worilb1 天前
Spring Cloud 学习与实践(13):使用 Seata 解决分布式事务问题
分布式·学习·spring cloud
风若飞1 天前
Tomcat 9.0.118 分布式 Redis Session 配置指南
redis·分布式·tomcat
六bring个六1 天前
文件互传在传输层的操作分析
分布式·p2p·c/c++·open harmony