压缩/摘要失败
概述
本指南涵盖 OpenClaw 代理中的对话压缩和摘要失败,基于 src/agents/compaction.ts。随着对话增长,OpenClaw 使用 LLM 驱动的摘要将上下文保持在模型限制内。当此操作失败时,代理可能停止响应或产生错误。
症状
摘要错误
- 日志消息: "Full summarization failed"
- 日志消息: "Partial summarization also failed"
- 代理使用最小降级摘要继续
上下文窗口超限
- LLM 提供者返回上下文长度错误
- token 计数超过模型最大值
- API 调用期间消息被拒绝
代理停止响应
- 长对话后无响应
- 代理日志中有关消息处理的错误
- 多次交互后会话似乎冻结
超大消息警告
- 日志条目指示特定消息过大
- 消息从摘要中排除
- 降级注释添加到摘要中
根本原因
1. 超大消息(第 236-247 行)
单个消息对于摘要来说太大:
检测: 每条消息的 token 估计 阈值: 基于上下文窗口大小配置 影响: 消息从摘要中排除,在降级中注明
2. LLM API 错误
摘要请求期间的提供者端失败:
常见原因:
- LLM API 网络超时
- 速率限制(429 错误)
- 模型不可用(503 错误)
- 无效的 API 凭据
恢复: 使用退避自动重试
3. 中止信号触发
摘要的外部取消:
常见原因:
- 用户取消代理操作
- 会话超时
- 系统关闭信号
恢复: 立即降级,不重试
恢复机制
渐进式降级系统(第 205-272 行)
OpenClaw 实现三层降级策略: