Error Recoverer 用于自主编程场景中的错误检测、分类与恢复。其目标是在代理自主编码时,对出现的失败进行系统化处理,尽量减少人工干预,并在无法自动恢复时安全地升级。
用途 用于处理错误、实现重试逻辑、从失败中恢复,或管理自主编码会话中的错误恢复流程。
主要能力
- 检测:捕获异常、解析错误消息、提取错误上下文。
- 分类:确定错误类别、评估严重程度、检查是否可恢复。
- 策略制定:查询因果记忆中的相似错误、选择恢复策略、准备恢复动作。
- 恢复:执行恢复策略、验证恢复是否成功、存储“错误→解决方案”链条。
- 升级(当恢复失败时):回滚到检查点、创建详细错误报告、发出人工介入信号。
错误类别与恢复策略
- 瞬时(Transient):如网络超时、速率限制,采用带退避的重试。
- 资源(Resource):如文件未找到、权限被拒,修复路径或权限。
- 语法(Syntax):如解析错误、无效 JSON,修复语法错误。
- 逻辑(Logic):如测试失败、断言错误,调试并修复代码。
- 环境(Environment):如缺少依赖、版本不匹配,安装或更新依赖。
- 不可恢复(Unrecoverable):如磁盘满、内存不足,立即升级。
可用的恢复策略枚举包括:RETRY(简单重试)、RETRY_BACKOFF(指数退避)、ROLLBACK(恢复检查点)、FIX_AND_RETRY(应用修复后重试)、SKIP(跳过并继续)、ESCALATE(人工介入)。
使用方式 快速开始示例: from scripts.error_recoverer import ErrorRecoverer recoverer = ErrorRecoverer(project_dir) result = await recoverer.handle_error(error, context) if result.recovered: print(f"Recovered via: {result.strategy}") else: print(f"Failed: {result.reason}")
自动恢复可借助装饰器: @recoverer.with_recovery async def risky_operation(): # Operation that might fail pass
集成点
- memory-manager:查询与存储因果链
- checkpoint-manager:失败时回滚
- coding-agent:为代码错误提供修复
- progress-tracker:记录错误指标
参考与脚本
- references/ERROR-CATEGORIES.md:错误分类
- references/RECOVERY-STRATEGIES.md:策略细节
- scripts/error_recoverer.py:核心恢复逻辑
- scripts/error_classifier.py:错误分类
- scripts/retry_handler.py:带退避的重试
- scripts/recovery_strategies.py:策略实现
适用场景 适用于自主编程代理在长时间运行、多步骤任务中需要稳定处理异常、避免流程中断、并在必要时回滚与升级的场合。
限制 关于收费、价格、支持平台与具体效果等事实,资料未提供。