先这样答
先分析为什么会循环,常见三种形态。第一种是原地打转:同一个工具、同样参数反复调用:工具报错了,但错误信息没有帮模型修正方向,它就再试一次,再错,再试。第二种是乒乓循环:两个环节互相踢皮球,比如代码 Agent 写完代码让测试 Agent 查,测试报错让代码 Agent 改,改完又报同一个错,来回无限轮。第三种是假装进展:模型每轮都在动,但动作和目标无关,实际没有推进——用户看着很忙,任务没挪一步。
检测手段对应着来。轨迹指纹:把每步的「工具 + 关键参数」做成哈希,最近 N 步内重复出现就报警,这是抓原地打转最直接的办法。轮数和成本预算:给每个任务设最大轮数、最大 token 花费,到线强制中断。这是兜底,必须有。进度指标:让每一步的输出带上「本步改变了什么」,状态类任务对比前后状态有没有变化,没变化就是假进展。
干预手段按烈度分级。轻的:往上下文里注入一段干预提示,例如「你已经连续三次调用同一工具且失败,请换一种方法或总结当前障碍」;中的:强制切换路线,比如从「继续重试」切到「重新规划」;重的:终止任务,把已收集的信息打包交还人工。核心思想就一句:永远不要让模型自己决定「要不要停下来」,模型自己停不下来,停下来必须是外部机制。
面试官会怎么追问
- 干预提示注入后模型不听怎么办? 干预提示放在最后一条且措辞强(明确「停止重试」),并且干预本身有升级路径:注入一次无效就换路线,再无效就终止,不依赖模型的自觉。
- 乒乓循环怎么从设计上避免? 给协作加仲裁:两个角色冲突超过 N 轮引入裁判(第三方评审或人工),另外每个环节的输出要有明确的验收标准,而不是「你看看有没有问题」。
- 监控上怎么发现线上出现循环? 轨迹指纹命中率、单任务轮数分布、token 消耗分布三个指标看板化,分布突然右移就是循环在增多。
回答的坑
- 只说「设个最大轮数」。轮数上限是兜底不是治理,答出指纹检测和分级干预才算完整。
- 忽略「假装进展」这一类。这类最隐蔽也最能区分有没有真实运维经验。
同系列的题
—— 本题完 ——