五厂面经真题集腾讯面经高频腾讯真题幂等人工审批速答 · 约 5 分钟更新 2026-09-29

工具有转账、发消息这类副作用时,怎么实现幂等与人工审批?

一句话结论

给每次副作用操作绑定任务 ID 加步骤 ID 的唯一业务键,服务端重复请求返回首次结果;可逆操作自动执行并事后审计,不可逆操作先审批,超时默认拒绝。

先这样答

我会同时处理幂等和审批。幂等要求每次副作用操作都带唯一业务键。这个键由任务 ID 加步骤 ID 组成。服务端收到请求后,先按业务键识别是否已经执行过。第一次请求执行操作并记录结果。后续重复请求直接返回第一次的结果。这样即使 Agent 因为超时重试,也不会产生二次扣款。发消息等副作用操作也遵循同一规则。

人工审批要按副作用的可逆程度分级。可逆操作可以自动执行,但执行后要保留审计记录。不可逆操作,例如转账和对外合同,不能直接执行。Agent 应该把操作送进审批队列,并挂起等待审批结果。审批通过后,服务端再执行副作用操作。审批不通过则不执行。超过审批时限仍没有结果时,默认拒绝,不能默认执行。这样可以把重复请求和未经确认的不可逆操作分开控制。

面试官会怎么追问

  • 「如果客户端没有收到结果,重试会不会导致重复扣款?」
    不会,只要重试请求继续携带同一个任务 ID 加步骤 ID。服务端按唯一业务键识别出重复请求,并返回首次执行结果,不再执行第二次扣款。

  • 「所有副作用操作都必须人工审批吗?」
    不需要,先按副作用是否可逆分级。可逆操作可以自动执行,但要做事后审计;不可逆的转账和对外合同进入审批队列,通过后才执行。

  • 「审批一直没有结果,Agent 应该怎么处理?」
    Agent 在审批期间挂起等待,不继续执行该副作用操作。超过审批时限后默认拒绝,不能把超时当成批准,也不能默认执行。

回答的坑

  • 只使用任务 ID 而不加步骤 ID,无法准确区分同一任务中的不同副作用操作。
  • 把审批超时当成默认同意,会让不可逆操作在没有人工确认时直接执行。
—— 本题完 ——