ARTICLE · 1215788
AI 工具调用成功,任务就算完成了吗?
AI 工具调用成功,任务就算完成了吗?
最危险的 Agent Bug,不是工具调用失败,而是工具明明执行成功了,Agent 却以为失败了。
想象一个场景:
你让 Agent 创建一笔订单。
订单已经成功写入数据库,但就在返回结果时,网络突然断了。
Agent 只看到一个 "Timeout"。
它以为操作失败,于是自动重试。
结果:用户只下了一次单,系统却创建了两笔订单。
如果换成发邮件,可能重复发送。
如果换成支付接口,可能重复扣款。
更麻烦的是,整个过程中,Agent 可能一直认为自己在“正常处理异常”。
这才是 Agent 真正难的地方:调用工具不难,难的是管理执行后的状态和副作用。
Tool Call 成功、业务操作生效、任务真正完成,其实是三个不同的环节。
HTTP 200 不一定代表业务已经完成,Timeout 也不能直接判断为执行失败。
尤其是涉及真实副作用的操作,一次不恰当的重试,就可能造成重复发送、重复创建,甚至重复扣款。
想让 Agent 稳定执行真实任务,有几个工程机制绕不开:
- Idempotency Key:识别重复请求,避免同一次操作反复生效。
- Persistent State:持久化任务进度,防止进程中断后丢失执行状态。
- Reconciliation:遇到结果未知时,主动查询实际业务结果。
- Retry Policy:根据操作语义决定能否重试,以及重试多少次。
- Compensation:多步骤任务部分成功后,处理已经产生的副作用。
其中最容易被忽略的是 UNKNOWN 状态。
Agent 不知道操作有没有成功,并不意味着操作失败。
没有确认结果就重新执行,风险可能比超时本身更大。
这些问题靠 Prompt 很难解决,需要在 Agent 和外部系统之间建立可靠的执行机制。
模型负责决定做什么,执行层负责保证操作可控、可查、可恢复。
Agent 能调用工具只是起点,能处理超时、重复执行和部分失败,才有能力承担真实业务任务。
#AIAgent #AIEngineering #Agent架构 #系统设计 #后端开发 #分布式系统 #幂等性 #CodingAgent















































































