技术解构 2026-09-14 26 分钟阅读 进阶

Google ADK 2.0 架构深度解构

从层级执行器到图工作流运行时 — Agent、Tool、Function 如何成为工作流图中的节点

摘要

2026 年 5 至 8 月,Google 陆续将 Agent Development Kit(ADK)2.0 推至 GA:Python 2.0 于 5 月 19 日、Go 2.0 于 6 月 30 日、TypeScript 2.0 于 8 月 21 日。本版核心变化是将 ADK 从「层级 Agent 执行器」重构为「图工作流运行时」。本文拆解其图工作流、动态工作流、协作工作流三类编排模型,Event 2.0 schema 与 Session 存储迁移,以及 HITL 与自动重试的工程实现,并与 OpenAI Agents SDK、Microsoft Agent Framework、LangGraph 做技术取舍。

架构全景:从执行器到运行时

ADK 1.x 时期,Agent 是独立的「执行器」:一个 Agent 持有自己的模型调用、工具与子代理层级,通过递归执行完成任务。这种模式在原型阶段很直观,但一旦进入生产,开发者会发现「控制流散落在 Agent 的隐式递归里」——断点恢复、重试、人工介入都难以在框架层面统一处理。

ADK 2.0 引入 Workflow Runtime,把架构从「层级执行」切换为「图执行」:你的 Agent、Tool、Function 都被评估为工作流图(Workflow Graph)中的独立节点(BaseNode)。执行引擎负责调度这些节点、维护图状态、做流式路由。换句话说,Agent 不再自己「跑」,而是作为图里的一个节点被引擎驱动。

维度 ADK 1.x ADK 2.0
执行模型 层级 Agent 执行器(BaseAgent 递归) 图工作流运行时(BaseAgent 继承 BaseNode)
控制流 隐式递归 + 子代理层级 显式节点图 + 路由
状态管理 Session 内事件列表 Event 携带 node_info / output 图状态
重试 / HITL 需开发者自行 try-except 框架原生自动重试 + 暂停
多语言 GA Python / Go Python(05-19)/ Go(06-30)/ TypeScript(08-21)
🏗️ 设计哲学

ADK 2.0 的核心转变是:把「编排逻辑」从 Agent 内部抽到图引擎外部。这带来的直接收益是断点恢复、重试、人工审批可以在框架层统一实现,而不依赖每个工具作者手写。这与 2026 年主流 SDK(OpenAI Agents SDK、LangGraph、Microsoft Agent Framework、AWS AgentCore、Claude Agent SDK)收敛到的「Agent 即运行时」方向一致。

图工作流:确定性编排

图工作流(Graph-based workflows)面向「控制流可预期」的任务。你用显式的图结构声明节点与边,引擎按图路由执行。适合那些步骤顺序固定、分支条件明确的流水线,例如「先检索再生成再审核」的固定三步走。

在图工作流里,Agent、Tool、Function 都是一等节点。引擎在节点之间传递状态,并可在任意节点配置条件分支。与动态工作流相比,图工作流的确定性更高,便于审计与回放——每个节点的输入/输出、路由决策都被图状态记录。

适用场景

动态工作流:代码驱动循环与分支

动态工作流(Dynamic workflows)面向「控制流必须靠代码算出来」的任务。你用普通代码逻辑构建更复杂的工作流,包括迭代循环、基于复杂决策的路由分支。引擎会在代码执行过程中动态展开节点。

这是图工作流与动态工作流的根本差异:图工作流在「声明时」就定好了拓扑,动态工作流在「运行时」才决定下一步跑哪个节点。前者可预期、易审计;后者灵活、能处理无法在编译期枚举的分支爆炸。

⚠️ 迁移注意

ADK 1.x 中,开发者常通过重写 _run_async_impl()generate_content() 来驱动自定义执行。升级 2.0 后,这些抽象方法不再被引擎调用——图引擎会完全绕过它们。若要注入自定义遥测或状态逻辑,应改用标准的 BeforeAgentCallback / AfterAgentCallback 接口,否则代码会被静默忽略。

协作工作流:协调器与子代理

协作工作流(Collaborative workflows)面向「多智能体协作」任务:一个协调器 Agent(Coordinator)把任务拆解给多个子代理(Subagent),各自完成后由协调器汇总。这是 ADK 对多智能体编排的原生支持。

与 OpenAI Agents SDK 的 Handoff(在同一次 Runner.run 内切换活动 Agent 并改写上下文)不同,ADK 的协作工作流更强调「图节点拓扑」——每个子代理是图里的一个节点,协调器通过图的路由逻辑分发与回收结果。两者都能实现多智能体,但 ADK 把编排显式建模为图,OpenAI 把编排隐式建模为运行时切换。

三种工作流的关系

工作流类型 控制流确定于 典型用途
图工作流 声明时(图拓扑固定) 固定流水线、强合规路径
动态工作流 运行时(代码展开) 分支爆炸、迭代循环任务
协作工作流 运行时(协调器分发) 多智能体任务拆解与汇总

Event 2.0 schema 与 Session 存储

ADK 2.0 给核心 Event schema 新增了两个字段:node_info(记录图状态)与 output(记录工作流输出)。这两个字段是图引擎管理状态、路由与流式的基石。

对生产部署,这意味着需要同步迁移存储层:

🔧 原地追加事件已不安全

ADK 1.x 中,部分开发者会绕过框架、直接 context.session.events.append(custom_event)。在 2.0 中,图引擎需要严格掌控事件发射以管理状态、图路由与流式。手动追加会破坏确定性。正确做法:在你自己的节点或 Agent 内部 yield 事件,让框架原生接管持久化、路由与流式。

HITL 与自动重试

ADK 2.0 把「错误处理 + 自动重试 + 人工介入(HITL)」做成框架原生能力,这是相对 1.x 显著的工程进步。

🛡️ HITL 暂停机制

当工作流需要人工审批才能继续(例如不可逆的写操作),框架通过 NodeInterruptedError 暂停图执行。若你的代码捕获了 BaseException,这个暂停信号会被吞掉,工作流会在无人确认的情况下继续——这是生产环境里高危的反模式。

与同类框架技术对比

把 ADK 2.0 放进 2026 年的 Agent 框架坐标系,差异主要在「编排范式」与「生态绑定」:

维度 Google ADK 2.0 OpenAI Agents SDK Microsoft Agent Framework 1.0 LangGraph
编排范式 图工作流运行时(节点图) 轻量原语 + Runner(Handoff) Kernel + Agent(AutoGen 合并 Semantic Kernel) StateGraph + Checkpointer
多语言 Python / Go / TypeScript Python / TypeScript .NET / Python Python 为主
模型绑定 优化 Gemini / Vertex AI,跨框架兼容 LiteLLM 接 100+ 模型,特性偏 OpenAI 原生 任意 OpenAI 兼容端点 模型无关
重试用 / HITL 框架原生(RetryConfig + NodeInterruptedError) Guardrail 短路 + 自定义 Durable Functions 状态化编排 interrupt / Command 恢复
企业集成 Vertex AI 原生 Tracing 可观测 Entra ID 身份治理 + Azure Monitor 需自建

ADK 2.0 的图运行时在工程完备度上对齐了 LangGraph 的 StateGraph,但提供了 Google 全栈(Vertex AI、Gemini、云日志 slog 标准化)的原生集成;相比 OpenAI Agents SDK 的轻量原语,ADK 的「声明式图」更适合需要强审计与回放的生产场景,代价是心智模型更重、学习曲线更陡。

局限与适用边界

核心发现

参考来源

  1. Google — Agent Development Kit 2.0 官方文档与 GA 发布说明(adk.dev/2.0,Python 2026-05-19 / Go 2026-06-30 / TypeScript 2026-08-21)
  2. Google — ADK GitHub 仓库(google/adk-python、google/adk-go、google/adk-typescript)
  3. BestHub — From Tool Loops to Agent Runtimes: How AI Agent Architecture Is Evolving(2026-08)
  4. Microsoft — Microsoft Agent Framework at BUILD 2026: Agent Harness, Hosted Agents, CodeAct(aka.ms/Build2026MicrosoftAgentFramework)
  5. Institute of Product Management — Microsoft Agent Framework 1.0 for Product Managers(2026-04)