本篇 10 题|覆盖初级到高级|幂等与故障恢复。先用自己的话回答,再核对参考要点,最后练习工程追问。

本篇目录
- AGT-091 为什么 Agent 特别需要幂等?
- AGT-092 工具超时是否说明操作失败?
- AGT-093 如何选择重试策略?
- AGT-094 什么是至少一次执行语义?
- AGT-095 补偿操作等同于回滚吗?
- AGT-096 如何处理部分成功?
- AGT-097 如何避免重试风暴?
- AGT-098 死信队列用于什么?
- AGT-099 外部状态改变后旧计划怎样恢复?
- AGT-100 如何测试故障恢复?
AGT-091 为什么 Agent 特别需要幂等?
难度:高级
参考答案:模型重试、网络超时和检查点恢复都可能重复执行动作。使用业务幂等键与结果查询,使重复请求返回同一结果,而不是重复产生副作用。
工程追问:幂等键由模型随意生成可靠吗?
AGT-092 工具超时是否说明操作失败?
难度:中级
参考答案:不一定,服务端可能已经成功而响应丢失。先用操作 ID 查询状态,再决定是否重试;对无法确认的高影响动作应进入人工处理。
工程追问:没有查询接口的工具怎么办?
AGT-093 如何选择重试策略?
难度:中级
参考答案:只对可恢复且安全重试的错误使用有限次数退避与抖动,遵守服务端限流提示。参数错误、权限拒绝和业务冲突应修正原因而非机械重试。
工程追问:重试预算如何跨工具共享?
AGT-094 什么是至少一次执行语义?
难度:中级
参考答案:系统保证任务可能被执行一次或多次,因此业务端要能去重。跨外部系统通常难以承诺端到端恰好一次,应说明边界并设计幂等。
工程追问:去重记录应保留多久?
AGT-095 补偿操作等同于回滚吗?
难度:高级
参考答案:不等同。数据库回滚可撤销未提交事务,补偿是新的业务动作,可能失败且无法消除已被外部观察的影响,需要明确补偿规则。
工程追问:已发出的邮件能真正回滚吗?
AGT-096 如何处理部分成功?
难度:中级
参考答案:记录每个动作的真实状态与产物,按业务规则继续、补偿或交付部分结果。不能把整个任务简单标为失败后盲目重跑全部步骤。
工程追问:用户应看到哪些已完成内容?
AGT-097 如何避免重试风暴?
难度:中级
参考答案:限制全局与租户并发、统一重试预算,采用退避、抖动和熔断。依赖故障时减少新任务进入,防止多个层级叠加重试放大流量。
工程追问:SDK 和业务层都重试有什么问题?
AGT-098 死信队列用于什么?
难度:中级
参考答案:保存多次失败或无法自动处理的任务,附带安全的错误上下文供人工修复与重放。重放仍需鉴权和幂等,不能绕过正常检查。
工程追问:怎样避免死信长期无人处理?
AGT-099 外部状态改变后旧计划怎样恢复?
难度:高级
参考答案:重新读取关键资源并检查版本与前置条件,必要时重新规划或请求确认。恢复点代表过去进度,不能假定外部世界仍然相同。
工程追问:价格变化后原订单计划怎么办?
AGT-100 如何测试故障恢复?
难度:高级
参考答案:在调用前、提交后、响应前和检查点写入时注入故障,验证无重复副作用且状态可解释。覆盖进程重启、网络中断与并发恢复。
工程追问:怎样证明恢复没有遗漏动作?
复盘练习
任选一题,用“场景与约束 → 方案 → 验证方法 → 失败边界”组织一段回答。初级先讲清概念,中级补实现与测试,高级补成本、权限和故障取舍。难度标签是学习建议,同一题可继续深入。
延伸阅读
以下为本模块相关原始论文与官方文档,用于继续学习;本文为原创面试要点整理,具体框架行为以所用版本为准。