题目
工具超时但实际可能已经成功时,如何查询结果并避免重复执行?
答案
超时只能说明没有及时收到响应,不能说明操作失败。此时任务状态应是“结果待确认”。 执行前生成稳定的业务操作 ID,并作为幂等键传给下游。同一个操作重试时继续使用同一个键;用户确实发起新的业务动作时才生成新键。 ![超时后先确认业务状态再决定重试](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/question/agent-development/timeout-18daab719a5fbf20.png) 发生超时后,先按操作 ID 查询。若已成功,直接复用回执;仍在处理中,继续等待;确认没有执行且满足重试条件,才重新提交。下游应通过唯一约束或原子记录保证重复键不会重复修改数据。 如果下游既不支持幂等,也没有可靠查询入口,就无法仅靠 Agent 保证不重复。对付款等操作应暂停自动重试,进入人工核对流程,并向用户说明结果尚未确认。