Durable Execution / Agent Workflow:状态机、Saga 与可恢复 Agent
一句话:
Durable Execution / Agent Workflow State Machines 解读
面向对象: AI Architect / Product Architect / Workflow Architect / Risk Ops / Platform PM。 核心问题: 为什么企业 Agent 不能只靠 while-loop 和 prompt 运行?持久化工作流、状态机、Saga、重试、补偿和 replay 如何让 AI 行动系统可恢复、可审计、可控制? 学习目标: 理解 durable execution、workflow replay、state machine、event sourcing、Saga compensation、idempotency 和 HITL 状态,并映射到支付争议、AML 调查、KYC onboarding、信贷 memo 和客户投诉处理。
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 不是一次模型调用,而是带状态、工具、副作用、人工审批、失败恢复和审计证据的长运行工作流。
1. Agent 为什么需要 Durable Workflow
很多 demo 写成:
while not done:
ask model what to do
call tool
append observation
这在生产中会遇到:
- 进程崩溃后不知道执行到哪一步。
- 工具调用成功但模型没记录结果。
- 重试导致重复扣款、重复发邮件、重复开 case。
- 人工审批等几小时后上下文丢失。
- 模型升级后 replay 结果不一致。
- 审计问“为什么这么做”时 trace 不完整。
- 高风险动作没有明确状态和责任人。
Durable workflow 要解决:
long-running goal
-> explicit state
-> persisted events
-> deterministic transitions
-> controlled side effects
-> retries and compensation
-> human approval
-> audit and replay
2. State Machine 是产品契约
状态机不是工程细节,而是产品责任边界:
Draft
-> EvidenceGathering
-> AIProposedAction
-> HumanReview
-> Approved
-> ToolExecution
-> Completed
-> Failed / Compensated / Escalated
每个状态要定义:
- 谁拥有责任。
- 允许哪些工具。
- 需要哪些证据。
- 哪些条件进入下一状态。
- 哪些失败可重试。
- 哪些失败必须人工处理。
- 哪些动作需要补偿。
- 记录哪些审计字段。
高风险 Agent 的关键不是“它能不能规划”,而是“它是否只能在批准状态内行动”。
3. Durable Execution 核心机制
3.1 Workflow vs Activity
| 概念 | 作用 | Agent 映射 |
|---|---|---|
| Workflow | 持久化业务流程和状态转换 | Agent case lifecycle |
| Activity | 可重试的外部动作 | 查询 CRM、读取文档、调用支付工具 |
| Signal | 外部事件注入 | 人工审批、客户补件、监管请求 |
| Timer | 时间等待 | SLA、冷却期、超时升级 |
| Retry policy | 失败重试 | 临时 API 错误 |
| Replay | 从事件历史恢复状态 | 审计和事故复盘 |
3.2 Determinism
工作流 replay 要尽量确定。AI 调用天然不确定,因此:
- LLM 调用结果应作为 event/activity result 记录。
- 不应在 replay 中重新调用模型得到不同计划。
- 模型版本、prompt 版本、retrieved context、tool result 都要记录。
- 决策状态机应由记录事件驱动,而不是重新“想一遍”。
3.3 Idempotency
工具调用必须防重复:
idempotency_key = workflow_id + step_id + business_action_id
尤其是:
- 支付调整。
- CRM 写入。
- 发客户通知。
- 创建 case。
- 冻结/解冻。
- 发送补件请求。
4. Saga 与补偿
长事务不适合一直锁住资源。Saga 的思想:
step 1 succeeds
step 2 succeeds
step 3 fails
-> run compensation for step 2
-> run compensation for step 1
Agent workflow 中常见补偿:
| 动作 | 补偿 |
|---|---|
| 创建 case | 关闭或标记作废 |
| 发送错误邮件 | 发送更正通知并开投诉跟踪 |
| 更新低风险字段 | 恢复旧值并记录 override |
| 临时贷记 | 反向调整或人工财务处理 |
| 错误任务分派 | 重新分派并通知 |
并非所有动作都可补偿:
- 客户已经看到的信息无法“撤回”。
- 监管报告不可随意删除。
- 账户冻结造成的客户影响需要正式处理。
- 拒贷/投诉相关动作需要合规流程。
所以高风险动作更应该前置人工审批。
5. 金融零售案例
5.1 支付争议 Agent
状态:
Intake
-> EligibilityCheck
-> EvidenceRequest
-> NetworkRuleReview
-> ProvisionalCreditDecision
-> HumanApproval
-> CustomerNotice
-> CaseClosed
控制:
- AI 可读取交易和规则,草拟建议。
- 临时贷记需要规则服务和人工审批。
- 客户通知必须引用批准模板。
- 每个 tool call 记录 idempotency key。
5.2 AML Investigation Copilot
状态:
AlertOpened
-> EntityResolution
-> EvidenceCollection
-> NarrativeDraft
-> AnalystReview
-> QAReview
-> FilingDecision
控制:
- AI 不做最终可疑活动结论。
- SAR/STR 决策状态由授权人员推进。
- 所有证据路径和模型版本进入 case record。
5.3 KYC Onboarding
状态:
ApplicationSubmitted
-> DocumentIntake
-> Extraction
-> PolicyCheck
-> ExceptionReview
-> Approval / Rejection / RequestMoreInfo
控制:
- OCR/LLM 负责抽取和缺失检查。
- 文档充分性由 rules/DMN + 人工例外处理。
- 任何拒绝必须有原因和申诉路径。
6. Agent Workflow Architecture
User / Event
-> workflow engine
-> state store / event history
-> agent planner activity
-> policy engine
-> tool gateway
-> human task queue
-> audit log
-> monitoring and replay
关键组件:
| 组件 | 责任 |
|---|---|
| Workflow engine | 管理状态、重试、计时器、信号和 replay |
| Agent planner | 在允许状态内生成建议或下一步 |
| Policy engine | 判断工具、数据、动作是否允许 |
| Tool gateway | 执行外部副作用并做幂等 |
| Human task queue | 审批、复核、例外处理 |
| Event log | 保存状态转换、模型输出、工具结果 |
| Evidence store | 保存引用、文件、审批、原因 |
| Monitor | SLA、失败、重试、补偿、人工积压 |
7. Release Gate
高风险 Agent workflow 上线前必须验证:
| Gate | 检查 |
|---|---|
| State completeness | 所有正常、失败、超时、取消、补偿状态都有定义 |
| Tool side effect | 每个工具动作有幂等键、权限和审计 |
| HITL boundary | 高风险动作不能绕过人工状态 |
| Replay | 事故复盘能重建当时状态 |
| Model versioning | 模型/prompt/retrieval/tool 版本进入事件历史 |
| Retry safety | 重试不会造成重复副作用 |
| Compensation | 可补偿动作有补偿方案,不可补偿动作有前置 gate |
| Monitoring | SLA、DLQ、失败率、人工积压、policy violation 可监控 |
8. 面试表达
30 秒版本
企业 Agent 不能只是循环调用模型和工具。只要它涉及长流程、外部系统和客户影响,就需要 durable workflow、状态机、幂等、重试、补偿、人工审批和 audit replay。模型可以提出下一步,但状态机和 policy engine 决定能否行动,workflow engine 确保崩溃后可恢复、失败后可补偿、审计时可复盘。
2 分钟版本
我会把 Agent 设计成工作流系统。每个 case 有显式状态,例如 evidence gathering、AI proposed action、human review、approved、tool execution、completed。LLM 调用作为 activity,结果写入事件历史,不在 replay 时重新生成。所有外部工具调用要有 idempotency key 和 side-effect classification。对于长事务,用 Saga 思路设计补偿,但客户通知、拒贷、监管报告这类不可逆动作必须前置人工审批。上线门禁要覆盖状态完整性、重试安全、HITL、policy gate、audit evidence 和 incident replay。
架构师版本
Durable Agent architecture 是 workflow engine、event history、agent activity、policy engine、tool gateway、human task queue、evidence store 和 observability 的组合。它把 Agent 从“会行动的聊天框”变成可恢复、可审计、可治理的企业流程组件。
9. 作品集任务
设计一个支付争议 Agent 状态机:
- 定义 12 个状态和允许转移。
- 为每个状态列出 owner、input、output、tool、policy gate。
- 设计 8 个工具的 side-effect matrix。
- 给所有写操作设计 idempotency key。
- 设计 5 个补偿流程。
- 写 HITL approval map。
- 做一页 incident replay: 工具超时、重复执行、模型输出错误、人工拒绝时如何恢复。