Durable Execution / Agent Workflow:状态机、Saga 与可恢复 Agent
企业 Agent 不是一次模型调用,而是带状态、工具、副作用、人工审批、失败恢复和审计证据的长运行工作流。只要 Agent 会跨系统行动,就必须把“模型建议”放进 durable workflow 和显式状态机中治理。
Durable Execution / Agent Workflow State Machines 解读
Source Anchors
| Source | Link | 用途 |
|---|---|---|
| Temporal docs | https://docs.temporal.io/ | 理解 durable execution、workflow、activity、retry 和 replay |
| Temporal Durable Execution guide | https://temporal.io/blog/what-is-durable-execution | 理解长时间、可恢复执行的产品直觉 |
| AWS Step Functions docs | https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html | 理解 state machine、task、choice、retry、parallel 和 workflow orchestration |
| Workflow Patterns | https://www.workflowpatterns.com/ | 理解业务流程控制流模式 |
| Sagas paper | https://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf | 理解长事务和补偿事务思想 |
| NIST AI RMF | https://www.nist.gov/itl/ai-risk-management-framework | 把 Agent workflow 风险纳入治理和监控 |
核心导读
企业 Agent 不是一次模型调用,而是带状态、工具、副作用、人工审批、失败恢复和审计证据的长运行工作流。只要 Agent 会跨系统行动,就必须把“模型建议”放进 durable workflow 和显式状态机中治理。
Durable execution 的机制价值在于: 进程崩溃后可恢复,外部工具调用可幂等,人工审批可等待,失败可重试或补偿,审计可 replay。它把 Agent 从“会调用工具的聊天框”变成可控制的企业流程组件。
落到金融零售场景,状态机本身就是风险控制语言。开户、投诉、支付异常、催收、AML 调查和客户补件都不能依赖隐式对话历史推进;每个状态必须说明允许的输入、可执行动作、审批要求、超时规则、补偿路径、记录保留和责任 owner。模型可以参与规划和草拟,但不能绕过 workflow 的幂等、权限、人工门禁和可重放证据。
问题定义
许多 Agent demo 可以写成:
while not done:
ask model what to do
call tool
append observation
生产系统会立刻遇到不同问题:
- 进程崩溃后不知道执行到哪一步。
- 工具调用成功但模型上下文没保存结果。
- 重试导致重复扣款、重复发邮件、重复开 case。
- 人工审批等待几小时后上下文丢失。
- 模型、prompt 或工具版本升级后 replay 结果不一致。
- 高风险动作没有明确状态、责任人和审批证据。
- 审计无法复盘“当时系统为什么这样做”。
Agent workflow 要解决的是长时间、跨系统、有副作用、有人工介入的行动可靠性:
long-running objective
-> explicit state
-> persisted event history
-> deterministic transitions where possible
-> controlled side effects
-> retries and compensation
-> human approval
-> audit and replay
核心原理
Workflow 与 Activity 的分离是 durable execution 的基础:
| 概念 | 作用 | Agent 映射 |
|---|---|---|
| Workflow | 管理业务流程、状态、计时器和转移 | case lifecycle / agent task lifecycle |
| Activity | 执行外部动作,可重试 | 查询 CRM、读取文档、调用支付工具、LLM 调用 |
| Signal | 外部事件注入 | 人工审批、客户补件、监管请求 |
| Timer | 长等待和超时 | SLA、冷却期、超时升级 |
| Retry policy | 临时失败恢复 | API 超时、网络错误、限流 |
| Replay | 从事件历史重建状态 | 崩溃恢复、审计、事故复盘 |
状态机是产品契约,不是底层实现细节:
Draft
-> EvidenceGathering
-> AIProposedAction
-> HumanReview
-> Approved
-> ToolExecution
-> Completed
-> Failed / Compensated / Escalated / Cancelled
每个状态必须定义:
- 谁拥有责任。
- 允许哪些工具。
- 需要哪些输入和证据。
- 哪些条件允许转移。
- 哪些失败可自动重试。
- 哪些失败必须人工处理。
- 哪些动作可补偿。
- 哪些动作不可逆,必须前置审批。
Determinism 是 replay 的关键。LLM 调用天然不确定,因此不应在 replay 时重新调用模型生成新计划。正确做法是把模型输出作为 activity result 写入事件历史,并记录模型版本、prompt 版本、retrieved context、tool result 和 policy decision。
Idempotency 防止重复副作用:
idempotency_key = workflow_id + step_id + business_action_id
涉及付款、费用调整、邮件发送、case 创建、冻结/解冻、补件请求等写操作时,幂等键是生产底线。
系统/架构模型
Durable Agent architecture:
User / Event
-> workflow engine
-> state store
-> event history
-> timers and signals
-> retry policies
-> agent planner activity
-> policy engine
-> tool gateway
-> idempotency
-> side-effect classification
-> audit
-> human task queue
-> evidence store
-> monitoring and replay console
组件责任:
| 组件 | 责任 |
|---|---|
| Workflow engine | 管理状态、重试、信号、计时器、replay |
| Agent planner | 在允许状态内生成建议、摘要或下一步候选 |
| Policy engine | 判断工具、数据、动作是否允许 |
| Tool gateway | 执行外部副作用并保证幂等和审计 |
| Human task queue | 审批、复核、例外处理、拒绝 |
| Event history | 保存状态转移、模型输出、工具结果和策略决策 |
| Evidence store | 保存引用、文件、原因、审批和客户通知 |
| Monitor | SLA、重试、失败、补偿、人工积压、policy violation |
Agent 的规划能力应嵌入状态机,而不是绕过状态机:
current workflow state
-> allowed actions
-> agent proposes next step
-> policy checks action
-> workflow records decision
-> tool or human task executes
-> new event transitions state
关键机制与取舍
| 机制 | 价值 | 取舍 |
|---|---|---|
| Explicit state machine | 清晰责任、工具边界和审计 | 需要前期建模,限制自由探索 |
| Event history | 可恢复、可回放、可审计 | 事件体需要脱敏、压缩和保留策略 |
| Deterministic replay | 崩溃后恢复一致状态 | LLM 调用必须记录结果,不能 replay 时重采样 |
| Idempotency | 防重复副作用 | 所有外部系统需支持业务幂等键或去重 |
| Retry policy | 自动处理临时失败 | 不可对非幂等或高风险动作盲目重试 |
| Saga compensation | 长事务失败后局部回滚 | 并非所有客户影响都可补偿 |
| Human-in-the-loop | 控制高风险边界 | 带来 SLA、队列和责任分配问题 |
| Workflow engine vs choreography | 集中可视化和 replay | 平台依赖更强,服务自治降低 |
Saga 的思想适合长事务:
step 1 succeeds
step 2 succeeds
step 3 fails
-> compensate step 2
-> compensate step 1
但在金融零售中有很多不可完全补偿的动作: 客户已经看到的信息、监管报告、账户冻结、拒绝通知、投诉结论。对于不可逆动作,策略应从“事后补偿”前移到“事前审批”。
证据与控制
上线前应验证:
| Gate | 检查 |
|---|---|
| State completeness | 正常、失败、超时、取消、升级、补偿状态都有定义 |
| Transition rules | 每个转移有触发事件、前置条件和责任 owner |
| Tool side effects | 每个工具动作有风险等级、幂等键、权限和审计 |
| Replay safety | replay 不重新调用 LLM 或外部副作用 |
| Version capture | 模型、prompt、retrieval、tool、policy 版本进入事件历史 |
| Retry safety | 重试不会造成重复扣款、重复通知或重复 case |
| Compensation design | 可补偿动作有补偿流程,不可补偿动作有前置 gate |
| Human boundary | 高影响动作不能绕过人工审批状态 |
| Observability | SLA、DLQ、失败率、补偿率、人工积压、违规率可监控 |
| Incident replay | 能重建某次错误行动的输入、判断、工具结果和责任链 |
事件历史应记录:
workflow_id
state
trigger_event
actor / agent session
model and prompt version
retrieved evidence
policy decision
tool request and result
idempotency key
human approval or rejection
customer-facing output
没有事件历史,Agent 记忆就会被误用为事实来源。
AI产品/金融零售场景
支付争议 Agent:
Intake
-> EligibilityCheck
-> EvidenceRequest
-> NetworkRuleReview
-> ProvisionalCreditProposal
-> HumanApproval
-> CustomerNotice
-> CaseClosed
AI 可以读取交易、规则和证据,草拟建议;临时贷记、费用调整和客户通知必须经过规则服务、审批状态和模板控制。
AML investigation copilot:
AlertOpened
-> EntityResolution
-> EvidenceCollection
-> NarrativeDraft
-> AnalystReview
-> QAReview
-> FilingDecision
AI 可以聚合证据和草拟 narrative,但不能做最终可疑活动结论。SAR/STR 决策由授权人员推进,证据路径和模型版本进入 case record。
KYC onboarding:
ApplicationSubmitted
-> DocumentIntake
-> Extraction
-> PolicyCheck
-> ExceptionReview
-> Approval / Rejection / RequestMoreInfo
OCR/LLM 可做抽取、缺失检查和解释草稿;最终拒绝、批准和补件要求需要规则、人工例外处理和申诉路径。
客户投诉:
- Agent 可总结历史、提取争议点、建议下一步。
- 补偿、正式结论和监管响应需要工作流状态、审批和证据包。
- 错误通知或延迟处理需要补偿路径和投诉升级记录。
反模式
- 用 while-loop 和内存数组管理长流程,进程重启后状态丢失。
- replay 时重新调用模型,导致事故复盘得到不同计划。
- 工具重试没有幂等键,造成重复副作用。
- 模型可以在任意状态调用任意工具,没有状态机约束。
- 把人工审批作为聊天确认,而不是持久化 workflow state。
- 事后补偿不可逆客户影响,例如错误拒绝、错误冻结或错误通知。
- 只记录最终输出,不记录模型版本、prompt、证据、工具结果和 policy decision。
- 失败、取消、超时、人工拒绝和部分完成状态没有明确定义。
最终心智模型
Durable execution 是 Agent 行动系统的可靠性和治理底座。模型负责提出建议,状态机定义允许的行动空间,policy engine 判断边界,workflow engine 保证恢复和等待,tool gateway 控制副作用,事件历史保存证据。
正确的心智模型是: Agent 不应“自由行动直到完成”,而应“在持久化状态机中提出下一步,并由策略、幂等、副作用控制和人工边界共同决定是否执行”。
SOTA 状态标注 (2026-07-01)
本篇属于第二、三遍深读池(参考架构/深读笔记),未列入 12 周主线必读。时效基线为写作时点;引用前请按 CLAUDE.md 全局时效性硬规则复查最新进展。模块级 SOTA 对照见 docs/AI_SYSTEMATIC_LEARNING_ROADMAP_2026.md 各周「2026 SOTA 对照」行与文末「SOTA 检查」。