ErrorStreak 伪进展检测
ErrorStreak 检测器识别 Agent 在持续产出失败工具调用却看起来"在进展"的情况。
问题背景
模型连续调用同一类工具且全部失败,但每次参数略有不同。CycleDetector 不会触发(因为参数不完全相同),Run 看起来还在进展,实际在空转。
检测机制
ErrorStreakDetector 在连续 N 次工具调用全部失败时触发:
| 阈值 | 行为 |
|---|---|
ErrorStreakWarn | 注入纠正系统消息 |
ErrorStreakTerm | 进入 HITL 询问用户 |
| HITL 超时 | 自动终止 Run |
与 CycleDetector 的区别
| CycleDetector | ErrorStreakDetector | |
|---|---|---|
| 判据 | 完全相同的调用 | 连续失败的调用 |
| 参数变化 | 不触发 | 仍然触发 |
| 目标 | 死循环 | 伪进展 |
| 不变量 | INV-TERM-01 | INV-STREAK-01 |
重置条件
任一工具调用成功即重置计数器。
HITL 交互
ErrorStreak 触发 HITL 时:
- Agent Loop 暂停
- 通过 SSE 推送待决消息
- 用户可选择:继续 / 终止 / 给出新指令
- 超时(默认 60s)自动终止