ErrorStreak 伪进展检测

ErrorStreak 检测器识别 Agent 在持续产出失败工具调用却看起来"在进展"的情况。


问题背景

模型连续调用同一类工具且全部失败,但每次参数略有不同。CycleDetector 不会触发(因为参数不完全相同),Run 看起来还在进展,实际在空转。


检测机制

ErrorStreakDetector 在连续 N 次工具调用全部失败时触发:

阈值行为
ErrorStreakWarn注入纠正系统消息
ErrorStreakTerm进入 HITL 询问用户
HITL 超时自动终止 Run

与 CycleDetector 的区别

CycleDetectorErrorStreakDetector
判据完全相同的调用连续失败的调用
参数变化不触发仍然触发
目标死循环伪进展
不变量INV-TERM-01INV-STREAK-01

重置条件

任一工具调用成功即重置计数器。


HITL 交互

ErrorStreak 触发 HITL 时:

  1. Agent Loop 暂停
  2. 通过 SSE 推送待决消息
  3. 用户可选择:继续 / 终止 / 给出新指令
  4. 超时(默认 60s)自动终止