Agent 架构死循环稳定性路径震荡速答 · 约 6 分钟更新 2026-09-16

Agent 为什么会陷入死循环?怎么检测和治理?

一句话结论

死循环的根子是「模型看不到失败」:同一动作反复重试、两个工具互相踢皮球、错误输出被当成进展。治理靠检测(轨迹指纹、轮数预算、进度指标)加干预(升级提示、换路线、交还人)。

先这样答

先分析为什么会循环,常见三种形态。第一种是原地打转:同一个工具、同样参数反复调用:工具报错了,但错误信息没有帮模型修正方向,它就再试一次,再错,再试。第二种是乒乓循环:两个环节互相踢皮球,比如代码 Agent 写完代码让测试 Agent 查,测试报错让代码 Agent 改,改完又报同一个错,来回无限轮。第三种是假装进展:模型每轮都在动,但动作和目标无关,实际没有推进——用户看着很忙,任务没挪一步。

检测手段对应着来。轨迹指纹:把每步的「工具 + 关键参数」做成哈希,最近 N 步内重复出现就报警,这是抓原地打转最直接的办法。轮数和成本预算:给每个任务设最大轮数、最大 token 花费,到线强制中断。这是兜底,必须有。进度指标:让每一步的输出带上「本步改变了什么」,状态类任务对比前后状态有没有变化,没变化就是假进展。

干预手段按烈度分级。轻的:往上下文里注入一段干预提示,例如「你已经连续三次调用同一工具且失败,请换一种方法或总结当前障碍」;中的:强制切换路线,比如从「继续重试」切到「重新规划」;重的:终止任务,把已收集的信息打包交还人工。核心思想就一句:永远不要让模型自己决定「要不要停下来」,模型自己停不下来,停下来必须是外部机制。

面试官会怎么追问

  • 干预提示注入后模型不听怎么办? 干预提示放在最后一条且措辞强(明确「停止重试」),并且干预本身有升级路径:注入一次无效就换路线,再无效就终止,不依赖模型的自觉。
  • 乒乓循环怎么从设计上避免? 给协作加仲裁:两个角色冲突超过 N 轮引入裁判(第三方评审或人工),另外每个环节的输出要有明确的验收标准,而不是「你看看有没有问题」。
  • 监控上怎么发现线上出现循环? 轨迹指纹命中率、单任务轮数分布、token 消耗分布三个指标看板化,分布突然右移就是循环在增多。

回答的坑

  • 只说「设个最大轮数」。轮数上限是兜底不是治理,答出指纹检测和分级干预才算完整。
  • 忽略「假装进展」这一类。这类最隐蔽也最能区分有没有真实运维经验。
—— 本题完 ——