月之暗面 Agent 面试题解析Agent 跑到 20 轮失控,不靠换强模型、改 Prompt 的工程解法

Agent 跑到 20 轮失控,核心根源不是模型能力弱或者 Prompt 写得不好,而是多轮循环没有确定性的外部控制层,单步模型的概率错误在链式执行里持续累积,上下文不断膨胀、目标丢失、动作来回震荡,哪怕换成更强的模型,依然会出现这类失控;面试官这句话的考察重点,是区分原型玩法和生产级 Agent 架构,要求把终止判断、循环检测、状态治理、熔断降级全部放到代码侧的调度层,而不是交给大模型自己决定什么时候停下来,整套方案分为四层防护:硬阈值兜底、重复动作指纹检测、状态机与进度校验、上下文治理,失控之后还要有回退、人工接管、子任务切分的兜底策略,下面从失控原因、分层方案、落地流程、面试标准回答完整梳理。

一、Agent 跑到 20 轮失控的常见根因

根因现象说明
缺少外部终止判定只靠模型自己判断是否完成,模型容易忘记原始目标,一直循环调用工具
动作震荡、重复重试相同 / 相似工具参数反复调用,报错之后无脑重试,没有换策略机制
上下文膨胀失真每一轮都追加日志,到 20 轮之后有效信息被淹没,注意力偏移,目标漂移
子任务没有收敛校验大任务没有拆成可校验子目标,每一步没有进度校验,只累计轮次
没有独立监控层调度完全交给 LLM,程序侧只做转发,不感知动作是否带来有效进展

二、四层工程防护方案(面试优先讲这套)

1. 硬阈值兜底防护(第一层,保底)

不是只设置一个最大 20 轮的轮次上限,要做多维度硬限制,全部由调度代码控制,和模型无关:

  • 轮次上限:全局最大步数,到达阈值强制暂停,而不是直接报错;
  • Token 上限:单任务总消耗 token 阈值,防止长循环无限烧 token;
  • 执行超时:给整个 Agent 任务设置超时时间,超时触发熔断;
  • 单工具重试上限:同一个工具最多连续重试 N 次,重试之后强制换方案,禁止无脑重复调用。

2. 动作指纹 + 相似度循环检测(第二层,识别假进展)

每一轮生成动作指纹,指纹包含工具名称、入参、返回结果,做相似度计算:

  • 记录最近 N 轮的动作指纹,连续多次出现高度相似动作,判定进入死循环;
  • 区分两种情况:完全重复调用、交替震荡调用(A→B→A→B);
  • 触发之后不直接杀掉,先给模型反馈:你已经多次尝试该方案,需要切换策略或者上报人工;
  • 指纹做归一化,过滤时间戳、随机 id 这类无关噪声,避免误判。

3. 状态机 + 子目标进度校验(第三层,保证每一轮有正向进展)

把 Agent 流程做成确定性有限状态机,模型只负责在当前状态下做推理,是否切换状态、是否完成任务由校验器判断,不是模型自判:

  • 任务拆解为多个可验证子目标,每完成一个子目标做校验;
  • 每一轮结束后,独立校验器判断:本轮有没有拿到新信息、有没有推进目标;
  • 连续多轮没有正向进展,直接判定失控,进入降级分支;
  • 用 checkpoint 保存每一步状态,失控时可以回退到上一个有效节点,不用从头跑。

4. 上下文治理(第四层,解决 20 轮后记忆丢失)

长轮次最容易踩坑:上下文越长,模型越容易跑偏。

  • 滚动摘要压缩:每 N 轮把历史内容压缩成结构化摘要,保留目标、已完成动作、待办,淘汰冗余日志;
  • 分层记忆:区分长期目标摘要、最近几步窗口、原始工具返回;
  • 目标锚定:每一轮输入固定带上原始用户目标,防止模型跑着跑着跑偏。

三、失控触发之后的处理流程

  1. 调度层检测到循环 / 无进展 / 到达轮次上限,先暂停 Agent 自动执行;
  2. 校验器输出诊断信息:当前目标、已经尝试的方案、卡住的原因;
  3. 优先降级策略:切换简化子任务、更换工具集、启用备选规划路径;
  4. 降级失败则交还人工,把当前完整状态、历史摘要给到用户,由用户决策继续、修改目标或者终止;
  5. 记录本次失控全链路日志,用于后续复盘,优化子任务拆分和循环检测阈值。

四、面试时标准回答版本(可以直接复述)

“我理解,模型本身是非确定性的,单步存在概率错误,链式执行会持续累积,单纯换更强模型、优化 Prompt 只能降低概率,无法根治。遇到 Agent 跑到 20 轮失控,我会在调度层做四层确定性控制:

第一,设置多维度硬阈值兜底,轮次、总 token、执行超时、单工具重试上限,由代码强制管控,不依赖模型自停止;

第二,对每一轮动作做指纹和相似度检测,识别重复调用、交替震荡这类假进展,提前预警;

第三,用状态机把子任务拆成可校验的子目标,独立校验器判断每一轮是否有正向进展,而不是让模型自己判断任务完成;

第四,做滚动上下文压缩,防止 20 轮之后上下文膨胀、目标丢失。

如果触发失控,优先切换备选策略,策略无效就暂停并交还人工,同时保留 checkpoint 支持回退。模型和 Prompt 是优化手段,生产 Agent 的收敛能力,必须由外部确定性调度层保证。”

五、避坑清单

  1. 不要把 “是否结束” 完全交给 LLM 判断,这是原型写法,生产环境风险极高;
  2. 只设置 max-turns 硬上限是最低底线,只能兜底,不能解决循环震荡;
  3. 动作指纹不要直接全量对比,要过滤无关动态字段,否则误报很多;
  4. 摘要压缩本身也要有校验,避免摘要错误导致目标丢失;
  5. 熔断不等于直接杀死任务,优先保留状态、支持人工介入,这是业务侧的需求。

【相关 FAQ】

问题 1:月之暗面这道 Agent 面试题,Agent 跑到 20 轮失控,为什么面试官不认可换强模型 + 改 Prompt 这个方案?

回答 1:因为 Agent 每一步模型输出自带非确定性误差,误差会在多轮循环里持续累积,哪怕更强的模型依然会出错,改 Prompt 只能优化概率,无法从机制上保证收敛,生产 Agent 的失控防护必须放在调度层做确定性控制。

问题 2:解决 Agent 跑到 20 轮失控,动作指纹检测和简单的轮次计数器有什么区别?

回答 2:轮次计数器只是到固定轮数强制停止,分不清 Agent 是在正常推进还是原地打转;动作指纹检测可以识别重复调用、来回震荡这种假进展,在远没到 20 轮的时候就提前拦截失控。

问题 3:Agent 跑到 20 轮失控,用状态机 + 独立校验器的方案,校验器本身也要大模型吗?

回答 3:校验器可以分两种,简单规则类校验直接写代码判断;复杂结果校验可以用独立小模型,但校验逻辑和主 Agent 推理链路解耦,不把任务终止权交给主 Agent。

问题 4:Agent 跑到 20 轮失控,触发熔断之后直接终止任务行不行?

回答 4:不推荐直接终止,更好的做法是保留 checkpoint、输出诊断摘要,先尝试备选策略,策略失效再交还人工,直接终止会丢失前面多轮已经拿到的有效成果。

【参考资料】

[2026-10-26](月之暗面 Agent Harness 面试:Agent loop、死循环防护)抖音

[2026-08-16](月之暗面 Agent 开发面试:Agent 重复调用工具、循环失控)牛客网

[2026-08-07](如果 Agent 陷入死循环怎么办?循环防护工程方案)Kimi Gao 技术博客

[2026-07-15](长上下文 Agent 循环失控、上下文压缩治理)AI Agent 技术社区

[2026-06-10](Agent Circuit Breaker:生产级 Agent 熔断、循环检测)DEV Community

【免责声明】

本文仅为月之暗面该道 Agent 面试题的技术解析,Agent 失控方案需要结合业务场景、工具类型、任务复杂度调整;不同 Agent 框架(LangGraph、自研 Harness)的状态管理、循环检测实现方式存在差异,方案不代表月之暗面内部实现,不构成线上 Agent 系统开发的唯一标准。

本文来自作者[空域镜像]投稿,不代表乌兰科技网立场,如若转载,请注明出处:https://www.wlcbnews.com/rgzn/202611/1762.html

赞 (2)

今日大家都在搜的词:

发表回复

本站作者后才能评论

评论列表(4条)

  • 空域镜像
    空域镜像 2026年11月12日

    我是乌兰科技网的签约作者“空域镜像”!

  • 空域镜像
    空域镜像 2026年11月12日

    希望本篇文章《月之暗面 Agent 面试题解析Agent 跑到 20 轮失控,不靠换强模型、改 Prompt 的工程解法》能对你有所帮助!

  • 空域镜像
    空域镜像 2026年11月12日

    本站[乌兰科技网]内容主要涵盖:互联网行业的追踪与探索

  • 空域镜像
    空域镜像 2026年11月12日

    本文概览:Agent 跑到 20 轮失控,核心根源不是模型能力弱或者 Prompt 写得不好,而是多轮循环没有确定性的外部控制层,单步模型的概率错误在链式执行里持续累积,上下文不断膨胀、目标丢失、动作来回震荡,哪怕换成更强的模型,依然会出现这类失控;面试官这句话的考察重点,是区分原型玩法和生产级 Agent 架构,要求把终止判断、循环检测、状态治理、熔断降级全部放到代码侧的调度层,而不是交给大模型自己决定什么时候停下来,整套方案分为四层防护:硬阈值兜底、重复动作指纹检测、状态机与进度校验、上下文治理,失控之后还要有回退、人工接管、子任务切分的兜底策略,下面从失控原因、分层方案、落地流程、面试标准回答完整梳理。

联系我们

联系:143 0457 151

工作时间:周一至周五,9:30-18:30,节假日休息

关注我们