同一个航班搜索任务,有的AI助手像强迫症患者,连调14次工具才放弃;有的却两步就返回清爽结果。差距不在模型,而在于是否被推理循环卡死。这种循环让Agent白白烧掉Token和时间,看似在工作,实则原地转圈。更荒唐的是,它每次都坚信“再试一次就完美了”。
早在2025年1月,专注大模型研究的The Decoder就指出,哪怕给Agent无限算力,过度思考反而拉低决策质量。对世界的不完整理解会触发连锁错误,每一步额外的推理不是更完善,而是更混乱。随后社区接连曝出极端案例:当年7月Particula记录到一个Agent狂奔847个推理步骤、每分钟烧掉47美元,最后连个结果都没憋出来,只会在逻辑里反复打磨、不断索要新数据;12月CodiesHub直接掀了底,提炼出三大病根——目标含糊不清,Agent根本不知道何时收工;工具的反馈暧昧不明,找不到“已完成”的明确信号;缺乏硬性停机条件,没有迭代次数或时间上限。
![]()
反馈模糊是推理循环最主要的点火器。想象一个搜票工具,就算已经把某个航线上所有结果都扒了出来,它返回的信息却是“可能还有更多数据可用”。Agent就嗨了,以为自己遗漏了什么隐藏选项,马上再用相同参数调一次,然后又一次,直到Token耗尽或者限流触发。博主把这种工具比作永远在回答“快了,马上就好”的客服,Agent除了原地踏步别无选择。
好在堵住循环不需要重写整个智能体框架。原文跑通了一组完全与框架无关的模式:第一招是防抖钩子,专门抓重复调用——当检测到相同工具、相同参数在短时间内反复触发,钩子可以直接短路并返回上次的结果或者报终止。第二招是给每个工具打上明确的结束状态,要么SUCCESS,要么FAIL,绝对不能留下“还有部分数据”这种暧昧尾巴。第三招是硬性计数限制,无论Agent多想再试一次,到达预设的最大调用次数就强制停止,吐出当前已有的数据。这些模式在Strands Agents上做过验证,同样适用于LangGraph、AutoGen和CrewAI等任何支持生命周期钩子的框架。
配套Demo很直观:用那种“可能还有更多数据”的工具去做搜索,Agent像上了发条反复调了14次;换成严格返回SUCCESS/FAIL的版本,两次调用就收敛输出最终结果。代码都公开在github.com/aws-samples/sample-why-agents-fail仓库里。该系列还一同放出了对付上下文窗口溢出的内存指针模式,以及针对慢速外部API的MCP工具异步断连方案。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.