Harness × Loop · 运行护栏 × 循环·生产事故·15 分钟

47,000 美元 Retry 事故

退款工具在客户端看来已经 Timeout,但 Provider 最终完成了操作;Agent 随后自动 Retry,又执行了一次。重新开放流量之前,这个 Runtime 归你负责。

01

体验

先处理问题,再阅读解释。

事故 002 · SEV-1

一个看起来合理的 Retry Policy,制造了 47,000 美元风险暴露。

你是当前值班的 AI / Backend Engineer。

退款 Provider 在 5.2 秒后完成了请求,但 Client 在第 4 秒已经 Timeout,于是 Agent 开始第二次尝试。按照当前交易规模,重复操作对应 47,000 美元 Gross Exposure。

目标

在维持瞬时故障恢复能力的同时,让重复 Intent 变得安全,并把延迟、成本和人工审核控制在预算内。

风险

当远端系统可以在 Client 放弃等待后继续完成操作时,Timeout 从来不等于失败。

一句话理解

当工具存在不可逆副作用时,Retry Policy 与 Idempotency Policy 本质上是同一个可靠性设计问题。

正在加载 Mission Engine…
02

反思

把结果整理成可以复用的判断。

工程复盘

Timeout 是一次观察,不是 Transaction 的最终结果。

当工具会产生不可逆副作用时,Retry Policy 与 Idempotency Policy 必须一起设计。

Client 看到了 Timeout,但 Provider 实际已经完成第一次退款。业务 Intent 没有 Operation-level Idempotency 边界时,Retry 会再次制造副作用。Compensation 可以事后减少损失,却不能把重复执行变成安全行为;完全关闭 Retry 则会牺牲本来可以恢复的任务。

  • At-least-once 很常见;Exactly-once 的业务副作用必须依靠明确的业务边界。
  • Idempotency Key 应代表业务 Operation,而不只是某一次 HTTP Request。
  • Human Approval 是风险控制,同时也会增加延迟并降低自动化程度。
  • 再次执行不可逆动作前,应该先确认 Provider 的真实终态。

关键要点

Timeout ≠ Failure

远端系统可能在调用方停止等待之后继续成功完成。

Retry 与 Idempotency 是一个设计

只设计恢复策略、不设计重复 Intent 的安全边界,就会把恢复机制变成事故放大器。

Compensation 不是 Prevention

冲正可以降低财务损失,但不能证明 Runtime 的重复执行契约已经正确。

03

深入理解

把这次体验连接到概念、参考与迁移。

LEARNING CONTEXT

学习连接

Timeout 只说明你观察到了什么;Idempotency 才决定重复同一个 Intent 是否安全。

未看过

Mental Model

  • S04-M04可逆操作 vs 不可逆操作
  • S04-M05在高风险边界设置 Human Approval
  • S05-M03Bounded Autonomy、Termination 与 Escalation
  • S06-M01Timeout 歧义:没收到响应不等于已确认失败
  • S06-M02Retry Policy 与 Retry Amplification
  • S06-M03重复 Intent 的 Idempotency Boundary
  • S06-M04副作用发生后的 Compensation 与 Recovery
  • S07-M01把 Traceability 作为因果执行历史

建议补充前置

迁移这个模型

创建订单的 API Timeout 了,但 Provider 可能已经提交订单。请设计安全的恢复路径。

查看完整学习路径
04

下一步

把这个判断带到另一个问题或构建中。

下一个事故:The Prompt Injection Attack

现在 Agent 已经足够可靠地执行工具;接下来,不可信内容开始试图操纵这些能力。

进入安全事故

EARLY ACCESS

想继续处理更多生产事故?

加入 Early Access,获取新的 Production Labs 与事故 Mission。

加入 Early Access