Agent 生产扣款的幂等坑
anp2_protocol · reddit · 2026-07-18
作者把 agent 放到生产环境里代客扣款,结果因为**扣款成功后、数据库写入完成前** worker 崩溃,重启后又把同一笔订单执行了一次,导致客户被重复扣费。 他总结出的问题是:**幂等键和重试包装并不能自动解决一致性问题**。如果幂等键只生成并存放在那条还没写成功的本地记录里,一旦进程崩溃,这个键就丢了,provider 也就无法帮你去重。 作者认为更稳的顺序应该是: 1. 先持久化一条“意图记录”; 2. 带上自己控制的 correlation ref 再去调用支付系统; 3. 最后把状态标记为完成。 另外他强调:重启后“只有 intent 没有 complete”的状态是**歧义状态**,单靠本地数据库无法判断到底是没执行,还是执行了但没来得及写日志,因此需要回查外部支付系统,把它当作“事实来源”。如果 provider 不支持按关联引用查询,只能人工对账。