跳转到主要内容

错误恢复

Myrm 错误恢复确保 Agent 在网络故障、模型宕机、限流与意外错误时自动持续运行,无需用户介入。

14 层恢复架构

机制处理场景
L1流恢复LLM 流式传输中断 — Token 级精确续传
L2连续流恢复连续流失败 — 多中断间保持上下文
L3熔断器模型提供商宕机 — 3 级冷却(auth 30min / permanent 10min / transient 1min)+ 半开探测
L4回退预设提供商故障转移 — 预设备用模型链
L5Agent 恢复工具执行失败 — 自动重规划替代策略
L6截断恢复响应被截断 — 本地 JSON 修复 + 渐进输出预算提升(2x→3x→4x)自动重试
L7辅助模型防护小模型安全 — 摘要前动态截断消息防崩溃
L8确定性回退无 LLM 安全网 — 规则摘要防死锁
L9图片自动缩放超限图片 — 自动重编码压缩
L10媒体拒绝恢复模型拒收媒体 — 移除媒体仅文本重试
L11思考签名恢复思考模式签名错误 — 关闭思考模式重试
L12长上下文档切换超标准窗口 — 自动切长上下文模型变体
L13空响应恢复模型返回空白 — 调参重试
L14Grace-Call 摘要达迭代上限 — 最后一次无工具 LLM 调用生成结构化摘要,用户不见空白

熔断器

防止模型提供商宕机时级联失败:

状态

CLOSED(正常)→ OPEN(检测到失败)→ HALF-OPEN(探测)→ CLOSED(恢复)

错误分类

错误类型冷却恢复策略
auth30 分钟检查凭证,尝试其他 Key
permanent10 分钟切换回退模型
transient1 分钟退避重试

凭证池

单 Key 限流时自动轮换下一可用 Key:
  • 4 种分发策略(轮询、最少使用、随机、优先级)
  • 按 Key 错误感知冷却
  • 每 Key 指数退避
  • 冷却到期自动探测

错误诊断

错误时提供结构化可执行反馈:

9 类错误

类别示例恢复提示
FileNotFoundError文件引用缺失建议搜索正确路径
PermissionError权限不足建议请求审批
ConnectionError网络失败自动退避重试
TimeoutErrorLLM 超时增加超时或简化请求
RateLimitErrorAPI 配额用尽换 Key 或等待
ContextOverflow窗口超限触发压缩
AuthError凭证无效轮换下一 Key
ToolError工具执行失败尝试替代工具
ModelError模型能力不足升级到更强模型
每条错误含 error_hinterror_category 与建议 RecoveryAction — GUI 显示为可点击按钮。

模型自升级

轻量模型发现无法完成任务时:
  1. 输出特殊标记 <<<NEEDS_PRO>>>
  2. EscalationScrubber 拦截(对用户隐藏)
  3. Agent 自动切换到配置的更强模型
  4. 任务无缝继续
实现成本高效路由:简单任务用便宜模型,复杂任务自动升级。

循环检测

5 个独立检测器识别不同类型 Agent 循环:
检测器模式动作
重复相同参数重复调用同一工具警告 → 中断
乒乓A→B→A→B 交替警告 → 中断
无进展跨轮输出不变警告 → 中断
发散工具调用越来越偏题警告 → 中断
输出递减响应质量下降警告 → 中断
渐进响应:先向上下文注入警告,持续则强制中断。

迭代预算

Agent 有可配置迭代上限与分级警告:
阈值动作
35 轮首次警告:「接近上限」
45 轮二次警告:「快达上限,请收尾」
48 轮最终警告:「剩 2 轮」
50 轮硬停 + grace 摘要
grace 摘要结构化总结已完成工作、剩余任务与继续建议。

文件检查点

任何破坏性文件操作前,AutoSnapshotInterceptor 自动快照:
  • 覆盖 6 类工具:write_filepatch_filedelete_filemove_fileexecute_terminalcode_execute
  • 每轮去重防冗余快照
  • 快照支持 GUI 一键回滚

用户体验

恢复对用户透明:
  • 模型宕机? — 毫秒级切换备用
  • 网络断开? — 流从断点 Token 续传
  • 限流? — Key 轮换或退避后重试
  • Agent 循环? — 早期检测,避免浪费预算
  • 响应截断? — 先本地 JSON 修复,再扩大输出预算重试