google/ax:当智能体从 Demo 走向生产,Google 想用「运行时」补上那缺口 🤖⚙️

如果你在 2024 年之后写过智能体(Agent)相关的代码,大概都经历过同一个剧本:Demo 跑通只要一个下午,上线却拖了三个月。

一个能读文件、调 API、回答问题的智能体,原型代码可能不到五十行。可一旦你想让它连续处理上千个任务、让它和其他智能体协作、让它半夜三点挂了还能自己爬起来接着干——那五十行就会像一个雪球,滚成一团没人敢碰的意大利面。

这不是你代码写得不好。这是编排(orchestration)这件事本身,就该由基础设施来承担,而不是塞进业务逻辑里。今天 GitHub Trending 上的 google/ax,项目描述只有一句话:Google's open agentic orchestration runtime。短,但信息量不小。

为什么是「运行时」,而不是又一个 Agent 框架?

先做个区分,因为这个区分决定了你怎么读这个项目。

框架回答的是「我该怎么写代码」——它给你抽象、给你基类、给你装饰器。而运行时回答的是「代码跑起来之后,谁来管它」——生命周期、状态、调度、失败恢复、资源边界。

把「编排」这个词加上「运行时」三个字,通常意味着这样的定位:智能体之间的协作拓扑、任务在何时交给谁、某一步失败了怎么重试、整个会话的状态存在哪里——这些不该由你的业务函数自己张罗,而应该像 JVM 管线程、像 K8s 管 Pod 一样,下沉到一层专门的基础设施里去。

框架让你写得更快,运行时让你活得更久。前者是开发体验,后者是生产可靠性。

智能体上生产,开发者到底卡在哪

抛开具体实现,任何一个想把智能体跑在生产环境的人都绕不开这几道坎:

  • 状态无处安放。 一次任务可能跨越几十轮交互、几小时甚至几天。上下文放内存里会丢,放数据库里要自己序列化,放哪、存多久、怎么恢复,全是脏活。
  • 控制流不可预测。 传统程序里 if/else 是确定的;智能体里,下一步走向由模型决定。谁来兜底?谁来判断「它跑偏了」?
  • 工具调用太脆。 超时、限流、部分成功、非幂等重试——每一个都是生产事故的候选。而这些失败处理逻辑,往往在每个工具调用点被复制一遍。
  • 出事之后看不见。 用户说「它给了我个奇怪的答案」,你打开日志,只看到一串上下文的海洋。哪一步开始偏的?哪个工具的返回值被忽略了?
  • 成本和并发失控。 多个智能体并行时,谁在烧 token、谁在空转等待、上限在哪,缺乏统一的观测和刹车。

这些问题的共同点是:它们都不属于业务逻辑,却必须由业务代码来承担。这就是「编排运行时」想要拿走的活儿。

把编排下沉一层,代码会长什么样

从项目定位推断,这类运行时的核心价值在于:让业务代码退回到「只描述意图」的层次,而把调度、重试、状态、观测交给运行时。用一段伪代码示意这种分工:


# 概念示意:当调度交给运行时,业务函数反而变「笨」了
def research_agent(task):
    plan = llm.plan(task)

    for step in plan:
        # 超时、重试、幂等、日志、追踪——运行时接管
        result = runtime.invoke(step.tool, step.args)

        if not result.ok:
            # 失败不再是异常,而是一个可被推理的事实
            return llm.replan(task, failed_step=step, reason=result.error)

    return llm.summarize(plan)

注意这里的变化:函数里没有 try/except 套娃,没有手写重试退避,没有手动把中间状态写进数据库。它只关心「该做什么」,而不是「做不成怎么办」。后者由运行时统一裁决——而且因为统一,它可以被观测、被回放、被限制。

这也是「编排」二字真正的含义:不是把多个智能体拼在一起就完事了,而是让它们之间的交接、等待、失败和超时都有明确的语义。

如果要上手,我会这样评估它

对于一个定位在运行时层面的项目,试用方式和评估一个普通库很不一样。几个建议:

  • 先跑通官方示例,别急着改造业务。 运行时的价值要在「多步 + 会失败」的场景里才显现,单步问答看不出差别。
  • 盯住状态的归属。 运行时把状态存在哪里、以什么形式持久化、崩溃后能恢复到哪一步——这是它是否有资格进生产的门槛。
  • 看可观测性接口。 一个不能让你看清「第几步发生了什么」的运行时,只是把黑盒从你的代码搬到了别人的代码里。
  • 理清与现有框架的边界。 你已有的智能体框架负责「怎么写」,它负责「怎么跑」。两者是叠加还是冲突,需要提前想清楚。
  • 锁版本、跟更新。 新项目的 API 演进通常较快,早期接入建议把版本钉死,把适配层做薄。

需要提醒的是:这是一个年轻的项目,生态、文档和周边工具大概率还在成型阶段。把它当成一次「架构信号的观察」,可能比立刻押上核心业务更稳妥——但它指出的方向,值得认真对待。

真正的分水岭,正在从模型转向基础设施

过去两年,智能体的竞争焦点是「模型够不够聪明」。但当模型能力逐渐拉平,真正拉开差距的会变成另一件事:你的系统能不能稳定、可观测、可恢复地把一件复杂的事从头做到尾。

google/ax 把「编排运行时」摆到了台面上,本质上是在说:智能体的可靠性,不该靠每个开发者自己手搓重试和状态机来解决,而应该是基础设施的默认能力。

Demo 靠灵感,生产靠工程。而工程,永远需要一层好的地基。 🏗️

项目地址:https://github.com/google/ax