ErrorStreak 检测(INV-STREAK-01)

wesgine 的 ErrorStreak 检测器识别"伪进展"——模型不断发起不同的工具调用但持续收到错误。


与 CycleDetector 的区别

CycleDetectorErrorStreak
检测目标完全相同的操作 + 完全相同的结果不同操作但持续失败
触发条件相同调用重复 N 次连续错误累积
典型场景死循环(read 同文件同偏移)乱试(各种命令都报错)

工作机制

工具调用 1 → 成功 → streak 重置
工具调用 2 → 失败 → streak = 1
工具调用 3 → 失败 → streak = 2
...
工具调用 N → 失败 → streak = N → 触发 HITL

连续错误判定


HITL 触发

检测到 ErrorStreak 后:

  1. 发起 HITL 请求,告知用户模型在持续犯错
  2. 用户可以:
    • 提供指导 → 注入系统消息继续
    • 取消 Run
  3. HITL 超时 → Run 终止,原因 error_streak

为什么不自动终止

与终止哲学(INV-TERM-01)一致:


与 CycleDetector 的协作

两者独立工作,互不干扰:

工具调用
  ↓
CycleDetector 检查(相同调用?)
  ↓
ErrorStreak 检查(连续失败?)
  ↓
任一触发 → HITL

事件

ErrorStreak 触发时发出 error_streak 事件:


配置

ErrorStreak 的阈值目前内置于引擎,不可通过 CellSpec 配置。


相关文档