多 Agent 死循环检测与预防
多 Agent 系统中,Agent 之间可能互相等待或互相触发,形成死循环。这比单 Agent 的循环更难检测,因为循环跨越了多个 Agent 的边界。
死循环的典型模式
互相委托
Agent A: "这个问题应该问 Agent B"
↓
Agent B: "这个问题应该问 Agent A"
↓
Agent A: "这个问题应该问 Agent B"
↓ (无限循环)
任务回传
Agent A 完成任务 → Agent B 审查 → 发现问题 → 退回 Agent A
↓
Agent A 修改 → Agent B 审查 → 发现新问题 → 退回 Agent A
↓ (无限循环)
三层检测方案
架构层检测
| 机制 | 说明 |
|---|---|
| 通信轮数限制 | 设置最大消息传递次数 |
| 拓扑分析 | 运行前检测环路 |
| 角色约束 | 限制哪些 Agent 可以互相通信 |
逻辑层检测
| 机制 | 说明 |
|---|---|
| 消息重复检测 | 检测相同内容是否重复发送 |
| 参数重复检测 | 检测相同参数的工具调用 |
| 任务状态追踪 | 检测任务是否在相同状态间循环 |
监控层检测
| 机制 | 说明 |
|---|---|
| 超时机制 | 整个流程超时强制终止 |
| 成本监控 | 超过预算强制停止 |
| 日志分析 | 实时分析 Agent 通信日志 |
预防策略
| 策略 | 说明 |
|---|---|
| 明确职责边界 | 每个 Agent 有清晰的职责范围 |
| 设计终止条件 | 每个任务都有明确的完成标准 |
| 引入裁判 Agent | 第三方 Agent 判断是否陷入循环 |
| 降级处理 | 检测到循环时切换到单 Agent 模式 |
速记卡(面试闪卡)
Q1:一句话讲清「多 Agent 死循环检测与预防」到底是什么?
A:多 Agent 死循环是 Agent 互相等待或触发形成的跨边界无限循环,靠三层检测与四招预防来治理。
Q2:死循环的典型模式 —— 怎么理解?
A:两种互锁——① 互相委托:A 说「该问 B」、B 说「该问 A」,无限踢皮球;② 任务回传:A 做完交 B 审查、B 退回、A 改完再交,问题越改越多。像两人互甩锅。
Q3:三层检测方案 —— 怎么理解?
A:三道报警线——① 架构层:限最大通信轮数、拓扑分析找环、限谁能说话;② 逻辑层:查重复消息/参数/卡同一状态;③ 监控层:超时强杀、超预算停、实时分析日志。循环藏不住。
Q4:预防策略 —— 怎么理解?
A:治本四招——① 明确职责边界别越界互推;② 设计终止条件想清「怎样算做完」;③ 引入裁判 Agent 判是否陷循环;④ 降级切回单 Agent 模式。核心是别让两 Agent 互等。
Q5:为什么比单 Agent 循环更难检测? —— 怎么理解?
A:单 Agent 循环好查(一个进程看调用栈);多 Agent 循环「跨界」——A 状态在 B 那、B 卡点在 A 这,单方面日志看不全,必须靠跨 Agent 全局视角(轮数/裁判/全链路日志)才能定位。
Q6:核心速记主线有哪些?
-
典型模式:互相委托、任务回传两种互锁
-
三层检测:架构层限轮数 / 逻辑层查重复 / 监控层控超时成本
-
预防四招:职责边界 / 终止条件 / 裁判 Agent / 降级单 Agent
-
比单 Agent 难:循环跨边界,需全局视角定位
口诀
A:多体互锁爱踢球,
委托回传绕圈兜;
三层设防监控守,
裁判降级解死扣。
相关链接
快速问答
| 问题 | 参考答案 |
|---|---|
| 多 Agent 死循环的典型模式? | 互相委托(Agent A 说问 B,B 说问 A)和任务回传(审查-退回-修改-审查循环) |
| 如何检测多 Agent 死循环? | 三层检测:架构层(通信轮数限制)、逻辑层(消息/参数重复检测)、监控层(超时/成本监控) |
| 如何预防死循环? | 明确职责边界、设计终止条件、引入裁判 Agent、降级处理 |