错误恢复机制

wesclaw 的 AI 引擎内置了多层错误恢复机制,确保 Run 异常终止时能最大程度保全上下文和工作进度。


Run 终止的常见原因

终止原因说明是否可重试
end_turnAI 正常完成回复—
context_cancelled用户主动中断—
cycle_detected检测到死循环引擎自愈后可能恢复
error_streak连续错误(伪进展)HITL 超时后终止
budget_exhausted迭代预算耗尽❌
cognitive_error认知层错误✅
panic_stop引擎内部崩溃✅

CycleDetector(死循环检测)

当 AI 陷入重复操作时,CycleDetector 会介入:

检测指标

两阶段恢复

  1. 自愈:首次触发时,注入系统纠正消息,重置计数器,给 AI 第二次机会
  2. HITL 升级:第二次触发时,询问用户"怎么办"。超时 60 秒后自动终止并保存进度

参数变化识别

CycleDetector 支持"进度感知"——如果相同工具的参数在变化(例如编辑不同文件),streak 计数减半,避免误判正常的批量操作。


ErrorStreakDetector(伪进展检测)

当 AI 的工具调用连续报错但仍在"尝试"时,这是一种伪进展——看起来在工作,实际没有推进。


HITL 超时处理

当引擎需要用户决策(CycleDetector 升级、ErrorStreak 确认等)但用户未响应时:


上下文压缩失败的 Fallback

CognitiveSettlement(认知结算)失败时的恢复链:

  1. 重试:最多重试 3 次
  2. MechanicalFallback:放弃 LLM 结算,改用确定性方式提取关键信息
    • 从即将丢弃的消息中提取工具调用证据(ExtractToolEvidence)
    • 将证据注入固定系统消息(Pinned message)
    • 确保关键操作结果不会因压缩而丢失
  3. 降级标记:标记 degraded=true 并记录降级原因

Run 生命周期与 SSE 解耦

Run 生命周期始终与传输层(SSE 连接)解耦:


Provider 瞬时错误

当模型调用遇到瞬时错误(503 / 429 等):


不可重试的错误

以下错误重试同样输入只会得到同样结果,界面不显示重试按钮:

这些错误会以柔和提示(而非红色错误块)展示,引导你"换一种表述"或"开新对话"。


相关文档