用途:OpenClaw 对所有错误采用相同重试策略,无法区分暂时性错误(限流、超时)与确定性错误(缺少参数、类型错误、路径无效)。本技能按会话跟踪工具调用历史,识别重复的相同失败,在上下文窗口和 API 预算被耗尽前中止循环。
与 agent-self-recovery 的区别:后者是手动、被动的恢复协议,需用户或智能体在发现卡住后调用;本技能是自动、主动的,在第二次相同失败时即触发,早于用户察觉。
检测算法:每次工具调用结果后检查是否为失败(错误、异常或空结果);归一化调用签名 (tool_name, sorted_args_hash, error_type);在 state 中查询该签名;若同一签名已失败 N 次(默认 2 次)则触发断路器。N=2 的理由:暂时性错误重试一次合理,两次参数完全相同的失败强烈表明是重试无法解决的确定性错误。
错误分类与最大重试次数:限流 429 属暂时性,3 次;超时/网络属暂时性,3 次;缺少必需参数属确定性,1 次;类型错误/校验属确定性,1 次;文件未找到属确定性,1 次;权限被拒属确定性,1 次;未知错误,2 次。
触发后动作:立即停止重试,不再发出相同调用;诊断根因,仔细阅读错误信息;将 LOOP_DETECTED 写入 state,包含工具名、参数、错误、失败次数、首次与最后时间戳;向用户提示已检测到重试循环并停止重试,询问如何处理;提供修复参数、跳过该步骤或中止任务等选项。
会话范围:环路检测按会话进行,状态在每个新会话开始时重置,超过 2 小时的调用历史会自动从 state 中清除。
调优:调整确定性重试阈值可执行 python3 check.py --set-threshold 3,允许在触发前失败 3 次。
限制:资料未提供该技能的安装方式、依赖环境、与 OpenClaw 的集成配置细节、支持的模型或平台,以及收费与价格信息。