最大迭代次数与强制收敛——防止 Agent 无限循环
Agent 可能无限循环
没有上限的话,Agent 在某些情况下会无限循环:工具调用返回意外格式 → Agent 重试 → 还是不行 → 又重试……每次都消耗 token 和时间,最后把预算烧空。
MateClaw 在 Agent 配置里提供了「最大迭代次数」字段。这个值就是强制收敛的保险——Agent 的推理循环(Thought → Action → Observation)超过这个次数就自动终止,不再继续。
怎么设
在 Agents 编辑器里,找到最大迭代次数字段。默认值随模板不同而不同——Plan-and-Execute 类型的 Agent 通常上限更高(因为要先计划再执行,步骤多),ReAct 类型的可以低一些。
如果经常看到 Agent 在迭代次数到了之后才给出半成品答案——调高上限,或者收紧 System Prompt 让它更早收敛。
如果 Agent 总是很快超过上限——可能是 prompt 里没有明确的终止条件,或者工具调用逻辑有 bug。
强制收敛时发生什么
当迭代次数用完:
- 当前这一轮 Thought 和 Action 被丢弃
- Agent 输出一段总结:它做到了什么、没做到什么、卡在了哪一步
- 会话结束,用户决定要不要手动续一轮(或者改成 Plan-and-Execute 让它先写个更清晰的计划再执行)
不是万能的
迭代次数是硬性上限,但不保证 Agent 一定在预算内收敛。好的 System Prompt 应该明确告诉 Agent「什么时候可以停下来」——比如「当你写出了三种方案并比较了优劣,就总结并结束」——这比单纯提高上限更有效。