月之暗面这道经典 Agent 面试题,核心踩坑点就是只把希望放在模型本身,面试官说 “模型再强也会出错”,本质就是考察你能不能理解:终止权、循环拦截、任务验收不能交给大模型自主判断,正确思路是搭建一套独立于模型之外的编排管控层,搭配任务前置规划、运行时监控、熔断兜底、事后复盘一整套机制,强模型和优化 Prompt 只是加分项,不是兜底方案,Agent 跑到第 20 轮失控,一般分成三类情况:第一类是原地循环,反复调用同一个工具、参数几乎不变;第二类是持续执行但是没有有效进展,一直在做无效检索、无效读取;第三类是上下文膨胀、目标漂移,慢慢偏离原始任务,不断新增无关步骤,哪怕模型本身能力很强,只要没有外部护栏,长轮次下幻觉、目标遗忘、误判完成都一定会出现,整套方案的核心就是由编排器而不是模型掌握刹车权限,多层独立防护互相兜底,就算其中一层失效,其他防护依然可以拦截失控。
模型方案和工程护栏方案对比
| 方案类型 | 手段 | 作用边界 | 缺陷 |
|---|---|---|---|
| 模型侧优化 | 更换更强模型、优化系统提示词、增加终止引导 | 降低失控概率,提升模型自我判断能力 | 无法杜绝出错,不能作为唯一依赖,也就是面试官反驳的点 |
| 编排硬预算护栏 | 最大轮次上限、总超时、token 上限、费用上限 | 封顶风险,防止无限跑、无限烧 token | 只能在达到阈值之后终止,没法提前识别无效循环 |
| 行为检测护栏 | 动作指纹哈希、循环振荡识别、无进展判定 | 提前抓死循环、原地空转,不到 20 轮就提前拦截 | 需要维护状态轨迹,对相似但不完全一致的动作要做模糊判定 |
| 任务验收护栏 | 独立校验器、业务验收标准、显式提交工具 | 判断任务是不是真的完成,拒绝模型自说自话 “任务结束” | 依赖清晰、可程序化的业务判定规则 |
| 任务架构优化 | DAG 子任务拆分、阶段性压缩、目标锚定 | 从源头减少长轮次,降低上下文漂移概率 | 前期需要投入成本做任务拆解,不适合一次性临时任务 |
Agent 长轮次失控的常见根因清单
- 上下文随轮次持续膨胀,关键目标、约束、原始需求被稀释遗忘,发生目标漂移。
- 缺少标准化验收标准,模型无法客观判定任务终点,不断 “再多查一步”。
- transient 报错之后盲目重试,没有区分临时故障和无解场景,陷入重复调用。
- 工具返回信息质量差、信息增益为零,模型反复在相同信息里打转。
- 没有独立的状态追踪,模型无法感知自己已经在重复相似动作。
- 把全部终止逻辑写在 Prompt,属于软约束,长轮次下很容易被模型忽略。
整套落地执行流程(面试标准回答链路)
- 任务进入前先做拆解,把复杂长任务拆成多个有明确退出条件的子任务,用 DAG 编排,每个子任务单独设置步数上限,避免单条链路冲到 20 轮以上。
- 在编排层配置互相独立的硬预算:最大总轮次(比如 15 轮提前预警、20 轮强制终止)、全局超时、总 token 上限、成本上限,这些规则由后端代码执行,模型无法绕过。
- 每一轮执行之后,给本次动作生成指纹,包含工具名称、核心入参、返回结果摘要,存入滑动窗口;如果连续多轮指纹高度相似,判定为循环,直接熔断。
- 增加信息增益检测,比对每一轮新返回内容,判断有没有新增有效信息,如果连续多轮没有有效进展,触发降级或者转人工。
- 统一使用显式 submit 提交工具,模型想要结束任务必须调用这个工具,不能靠自然文字宣告完成;提交之后,由独立校验模块核对业务验收条件,校验通过才算真正结束,校验不通过则拒绝结束,返回缺陷信息。
- 配置上下文管理策略,到达指定轮次自动做摘要压缩,并且定时回灌原始任务目标,锚定需求,防止越跑越偏。
- 如果触发熔断、达到轮次上限、校验失败,不要直接丢弃任务,进入兜底分支:输出执行轨迹、当前状态、卡点原因,交给人工复核,或者切换备用策略、简化任务目标重试。
- 把所有失控案例落进日志,标注是循环漂移、信息不足还是验收规则缺失,反向优化任务拆分逻辑、工具描述、校验规则,形成持续迭代闭环。
整体来看,这道题想要的答案逻辑很清晰:承认强模型和好 Prompt 有价值,但是它们属于概率优化手段,生产级 Agent 的稳定必须依靠编排层的多重独立防护,把 “能不能停、算不算做完、是不是在原地打转” 这些高风险判断,从模型手里收回到确定性代码逻辑里面,就算模型出错,整套系统依然可控,不会一路跑到 20 轮之后才发现失控。
【常见问题】
问题 1:月之暗面这道 Agent 面试题,Agent 跑到第 20 轮失控,为什么面试官不认可只换强模型 + 改 Prompt?
回答 1:因为换强模型、修改 Prompt 只能降低 Agent 跑到第 20 轮失控的概率,属于软约束,模型本身存在幻觉、遗忘、误判的固有缺陷,再强的模型依然会出错,不能作为兜底方案。
问题 2:Agent 跑到第 20 轮失控,动作指纹和循环检测具体是怎么拦截问题?
回答 2:Agent 跑到第 20 轮失控,动作指纹会对每一轮工具调用、入参、返回结果做哈希,在滑动窗口比对,识别连续重复或者周期性振荡的动作,在达到 20 轮上限之前提前熔断。
问题 3:Agent 跑到第 20 轮失控,显式 submit 提交工具和独立验收模块起到什么作用?
回答 3:Agent 跑到第 20 轮失控,显式 submit 强制模型通过固定工具宣告结束,独立验收模块用业务规则核验结果,避免模型自己宣称任务完成、实际没有达标,防止无限延长执行轮次。
问题 4:Agent 跑到第 20 轮失控,DAG 拆分子任务为什么可以从源头降低风险?
回答 4:Agent 跑到第 20 轮失控,DAG 会把大任务切分成独立子任务,每个子任务自带单独步数上限和退出条件,避免单一链路累积到很高轮次,同时降低上下文膨胀带来的目标漂移。
问题 5:Agent 跑到第 20 轮失控,如果已经触发熔断,标准兜底流程是什么?
回答 5:Agent 跑到第 20 轮失控触发熔断后,会保存完整执行轨迹、卡点状态,不会直接丢弃任务,分支可以选择简化目标重试、切换备用策略,或者把任务流转人工复核。
【参考资料】
[2026-11-09](Agent 停不下来,不是模型的错)今日头条
[2026-10-12](月之暗面 Kimi Agent 面试:多轮循环失控标准答题思路)牛客网
[2026-09-10](企业级 Agent 如何防止工具调用死循环)抖音
[2026-08-04](Agent 长任务的终止护栏与编排设计)极客时间
[2026-05-06](Agent Failure Modes Interviewers Probe)Building Agentic AI
【免责声明】
本文仅为月之暗面 Agent 面试题的技术复盘科普,面试答案没有唯一固定版本;Agent 的护栏方案、轮次阈值、验收规则都要结合业务场景调整,不同团队线上 Agent 管控架构存在差异,本文内容不代表月之暗面官方标准答案。
