你的智能体需要的是监督者,而不是重试循环
你的 Agent 在一个包含十二个步骤的任务的第七步挂掉了。框架捕获了异常,经过指数退避(exponential backoff)后进行了重试。它重试了该步骤 —— 但使用的是同样的上下文窗口(context window),其中已经堆积了三次失败的工具调用、一段解析了一半的错误消息,以及一个模型已经放弃的计划。当然,重试也失败了,因为重试是一场赌注,赌的是世界发生了变化,而那个 Agent 的世界没有任何改变。需要改变的是 Agent 的状态 —— 而任何 Agent 框架中的重试策略都不会做出这种决定。
Erlang 的 OTP 库在三十年前就为必须运行数十年的电话交换机制定了这项决策。主管树(supervisor trees)背后的洞察力从来不是“在崩溃时重启”。而是“如何恢复”是一个与“执行工作”完全解耦的关注点,它由一个独立的进程负责,并排列在一个层级结构中,每一层都对恢复的含义有更深一点的理解。现如今的大多数 Agent 框架将重试强加到单个调用上,这就像在电话交换机的每一行代码周围都套上 try/catch 一样。它们真正需要的是这种层级结构。
