Autenticare
Google 工具 · · 9 min

多步代理:在生产中存活的编排架构

执行8个顺序步骤的代理会以新方式失败。Vertex AI Agent Builder的编排模式——规划、重试、补偿和可观测性——经过生产环境验证。

Fabiano Brito

Fabiano Brito

CEO & Founder

多步代理:在生产中存活的编排架构
TL;DR 单步代理(RAG + 回答)很简单。多步(规划、执行、验证、决定下一步)引入全新的故障类型。在 Vertex AI Agent Builder + Gemini Enterprise 中,6个不可妥协的模式:显式规划、幂等性、saga/补偿、检查点、循环限制和端到端可观测性。

员工完整入职、财务对账、监管流程申报——这些场景中代理执行包含中间决策的5–15步链。这里有最高的ROI,也有最棘手的复杂性。


为什么多步不同

  • 每步都有延迟 → 总流程变长(10s–2min很常见)。
  • 每个外部调用都可能失败 → 需要显式处理。
  • 中间状态必须持久化 → 检查点是强制的。
  • 第4步失败可能需要撤销第1–3步 → Saga模式。
  • "下一步"决策是动态的 → 真正的规划,不是固定DAG。
  • 简单的可观测性不够 → 结构化追踪。

显式规划模式

执行前,代理声明计划。伪代码:

1. 输入: "开启监管流程 X"
2. 计划生成: Gemini 2.5 Pro 产生包含预期步骤的 JSON
3. 验证: schema + 依赖 + 每步权限
4. 执行循环: 对每步, 执行 → 验证 → 检查点
5. 失败时: 重新规划(以失败上下文决定下一步)
6. 成功时: 报告 + 审计日志

为何重要:显式规划支持(a)高风险案例执行前人工审查,(b)重新规划而非无限循环,(c)审计代理尝试过的事。


默认幂等性

每个工具和每一步必须幂等——用相同参数重新执行不产生双重效果。

如何保证:

  • 资源创建时使用幂等键(从意图+步骤派生的UUID v4)。
  • 创建前检查:"如果此案例已有ticket,链接而非创建"。
  • 尽可能用PUT/upsert操作代替POST。
  • 用相同幂等键重试

没有这个,超时后重试会重复记录——ERP/CRM中的噩梦。


Saga模式(补偿)

当步骤1..N-1已产生实际效果而第N步失败时,代理必须按反序撤销。每步声明对应的补偿。

员工入职示例:

步骤操作补偿
1在AD中创建用户禁用用户
2开通Workspace暂停许可证
3创建SAP访问权限撤销访问权限
4添加到组从组中移除
5通知经理通知回滚

如果第4步失败,代理执行补偿 3 → 2 → 1 并报告。状态一致,无"孤儿用户"。


状态检查点

在每个完成步骤后持久化状态,可以(a)失败后无需重做一切即可恢复,(b)跨进程重启继续,(c)实时审计进度。

模式:Firestore/Spanner中的agent_executions表,包含:

  • execution_id、agent_name、user_id、started_at。
  • plan_json(版本化)。
  • steps[],含status、input、output、timestamp、latency。
  • 已执行的compensations[]。
  • final_status、final_output。

Cloud Workflows也适用于显式编排;动态逻辑场景保留在代码+自有状态中。


可观测性:追踪而非日志

多步场景中,线性日志不够。使用:

  • 分布式追踪(OpenTelemetry → Cloud Trace):每步是一个span,父级=执行。
  • 属性:调用的工具、模型、tokens in/out、延迟、成本。
  • 事件(非散日志):"plan_generated"、"step_started"、"step_failed"、"compensation_started"。
  • 每代理仪表板:每步p50/p95/p99延迟、每工具失败率、每次执行成本。
  • 告警:延迟>X、失败率>Y、平均成本超基准线。

动态决策:ReAct vs DAG

固定DAG:步骤在设计时确定。更可预测、更可审计、灵活性较低。适合稳定流程(KYC、标准入职)。

ReAct(reason-act循环):代理在每次迭代中根据上一步结果决定下一步。更灵活、更不可预测,需要循环和成本guardrails。

Autenticare模式:从DAG开始。仅在案例证明需要高变异性时迁移到ReAct。混合方案可行——DAG骨架在定义节点配置ReAct子代理。

⚠️ 没有guardrail的ReAct = 烧掉信用卡 没有max_iterationsmax_tool_calls、token预算和循环检测(同一工具同一参数运行两次),代理会进入循环,在有人注意到之前已花费大量token。硬上限写在代码中,不是提示词中。

循环限制

无限制的ReAct会变成无限循环代理(或消耗token的"agent loop")。始终设置:

  • 最大迭代次数硬上限(例如:12步)。
  • 每次执行的最大工具调用数
  • 每次执行的最大成本(token预算)。
  • 循环检测:同一工具同一参数运行2次时,告警+升级。

人工交接

任何步骤中,如果置信度低或歧义高,代理必须能够暂停并请求人工输入:

  • 持久化完整状态。
  • 通知人工(Slack、邮件、队列)。
  • 带超时等待回复。
  • 根据决定恢复或取消。

这是区分"什么都尝试的代理"与"足够成熟懂得求助的代理"的标志。


Autenticare项目使用的技术栈

  • Vertex AI Agent Builder:代理定义+工具。
  • Cloud Run jobs:稳定的长运行编排。
  • Firestore:执行状态。
  • Pub/Sub:异步交接和通知。
  • Cloud Trace + Looker:可观测性。
  • BigQuery:历史分析和审计。

常见错误

  1. 无幂等性 → 重试重复记录。
  2. 无补偿 → 状态不一致。
  3. 无最大迭代数 → 无限循环。
  4. 无检查点 → 基础设施故障后重新执行一切。
  5. 无交接 → 代理在超出范围的决策上"卡死"。
  6. 无追踪 → 调试变成日志考古。

求助的代理比什么都尝试的代理更成熟。低置信度时的人工交接不是弱点——而是架构设计。
智能体编排

您的场景是多步(5+步骤、中间决策)吗?

可行性诊断:当前流程、补偿节点、循环风险、可观测性。完成后获得架构方案和60–90天计划。


延伸阅读