核心 GUIDE

PATTERNINTERMEDIATE7 分钟阅读

Compensation & Recovery(补偿与恢复)

Compensation / Recovery 处理“前一步 Side Effect 已成功、后一步却失败”的 Workflow,通过 Reconciliation、Compensating Action 与 Durable State 恢复,而不是假装整个 Transaction 可以直接 Retry。

核心心智模型

Distributed Workflow 往往是 Saga,而不是单一 Atomic Transaction。Recovery 先回答“真实发生了什么”;Compensation 再执行 Domain-specific Action,把系统恢复到可接受 Business State。

为什么重要

Agent 会调用不共享 Transaction Boundary 的 External System。Payment 可能成功而 Email 失败,Reservation 可能创建后 Tool Timeout。Blind Retry 会复制 Side Effect,而真正 Rollback 往往不存在。

01

先 Reconcile,再决定 Retry 或 Compensation

为 Operation 持久化 Identifier 与每个 Confirmed Side Effect。Failure/Timeout 后先查询 Authoritative System,确认真实 State,再决定只 Retry 哪一步。如果 Irreversible Step 已完成,执行显式 Refund/Release/Reversal 等 Compensation,并让 Compensation 自身也具备 Idempotency。无法安全恢复时进入 Human Escalation。

02

示例:Booking 已成功,但 Confirmation Timeout

Agent 已成功预订 Hotel,随后 Confirmation API Timeout。Retry 整个 Workflow 可能创建第二个 Reservation。Recovery 使用原 Idempotency Key 查询 Provider,发现 Booking 已存在,记录完成并只重试 Notification。若后续 Policy Check 失败,再执行明确的 Cancellation Compensation。

常见失败模式

  • 确认真实 Side Effect 前就 Retry 整个 Workflow。
  • External System 无法恢复 Exact Prior State,却仍把 Compensation 称为 Rollback。
  • Forward Path 没有 Durable Operation ID 与 Recovery State。

工程启发

  • 进入后续 Step 前先持久化 Side-effect State 与 Idempotency Key。
  • 选择 Retry/Compensation 前先 Reconcile Authoritative External State。
  • 把 Compensation 当成独立 Domain Behavior,并设计它自己的 Failure Handling。

关键结论

  1. 01Recovery 的第一步是确定真实发生了什么。
  2. 02Compensation 不等于 Database Rollback。
  3. 03Durable State 与 Idempotency 让 Partial Failure 可管理。

阅读记录

未打开Practice 尚未完成

这里只记录你真实做过的动作,不代表掌握、熟练或认证。

用于这些学习路径

这个 Concept 会在多个 canonical 学习路径中复用。

来自 Knowledge Graph 的相关知识点

这些关系直接来自 canonical graph,不维护第二套 Guide 分类体系。