用过 OpenClaw 的朋友应该都遇到过这种情况:它在执行某个任务时踩了个坑,花了好大力气排查修复,结果下次又是同样的坑,它完全不记得之前是怎么爬出来的。

这不是 OpenClaw 不够聪明——它确实会尝试寻找并解决问题,但 AI 的会话本质上是 一次性 的。每次新会话启动,它就”失忆”了。错误排查的过程和经验,随着会话结束一起消失。

所以我写了一个叫「报错回顾」的 skill,专门来解决这个问题。

痛点在哪

OpenClaw 在执行复杂任务时会调用很多工具(Shell、API、浏览器操作等),一个任务下来几十次工具调用,出现几次报错是很正常的事。

每次报错,OpenClaw 会当场尝试修复——调整参数、换一种方法、查看错误信息然后重新尝试。这个过程其实是 有学习 的,但这个学习成果没有落地。下一次新会话中遇到同样的场景,一切从头开始。

报错的类型大致有三种。Skill 文档写错了——某个命令的参数更新了但 SKILL.md 里还是旧的;个人环境配置缺失——NAS 路径、服务器地址这些没记在文档里;AI 自己的判断失误——工具用法是对的但推理过程出了问题。

前两种属于”换个 AI 来也会报错”的问题,归根到底是文档不完善。第三种属于”下次换个思路就行”的模型行为问题。

报错回顾怎么工作

核心逻辑很直白:扫描报错 → 分析根因 → 分类 → 去重 → 持久化

触发方式

两种:

  1. 手动触发:在会话中直接说「报错回顾」,它会自动拉取当前 session 的工具调用历史,找出所有报错
  2. 定时扫描:通过 cron 任务定时扫描一个周期内的全部 session,批量整理

三拍机制(去重 + 压缩 + 计数)

每次执行,每个报错都会按照「错误签名」来处理。签名是一条人能看懂的错误摘要,比如「clawhub publish 命令格式用错」。签名匹配——在已有的报错记录库中搜索,存在则计数器 +1,不存在则新建。压缩——每条记录保持在一行以内,只保留「原因 + 修复方案 + 出现次数」。高频标记——出现 10 次以上的自动标 ⚠️。

三类修复策略

类别 判断标准 修复目标
Skill 问题 SKILL.md 里写了错误的命令或参数 修改 SKILL.md
配置缺失 缺少个人设备的特殊配置 记录到 TOOLS.md
模型误判 AI 自己的逻辑错误 追加到报错记录库,累计计数

就这样,错误的修复方案不再随会话消失——Skill 问题修文档,配置缺失补配置,模型误判记下来提醒自己。

执行流程

看看实际跑一次是什么样的:

  1. 获取当前 session 的完整历史(通过 sessions_history),拿到所有带错误的工具调用记录
  2. 逐个提取:哪个工具、报了什么错、当时的上下文是什么
  3. 分析根因,按上面的三类分类
  4. 分类执行修复——Skill 问题直接改 SKILL.md,配置缺失补充 TOOLS.md,模型误判更新计数器
  5. 输出结构化汇报,告诉你新增了几条、累积了几次、改了哪些文件

最终报错记录库看上去是这样:

1
2
3
- [grep 无匹配返回 exit 1 被误标为工具 error] → 验证/检查步骤末尾加 || true(2次)
- [SearXNG locale 误用 zh-CN 导致容器崩溃] → LOCALE_NAMES 使用 zh-Hans-CN(1次)
- [searx python 调用未激活 venv → ModuleNotFoundError] → 必须先 source venv(1次)

每条都很短,一眼看到根因和修复方案。高频错误还带 ⚠️ 标记,方便排查哪些问题是反复踩的。

怎么用

去 ClawHub 下载安装即可:

https://clawhub.ai/zhheo/skills/zhheo-session-errorreview

安装后在会话中对 OpenClaw 说「报错回顾」就能触发。如果想让它定期自动扫描,可以让 OpenClaw 配置一个 cron 定时任务。

写在最后

算力在提升,模型在进步,但 OpenClaw 处理复杂任务的能力不仅取决于模型智商,也取决于文档的完备程度。报错回顾不是让 AI 变得更聪明,而是让它的”试错经验”能被沉淀下来,变成可持续积累的资产。

实际用下来最明显的感受是:同样的坑,踩过一次之后真的不会再踩了。而在这之前,同样的坑可以反复踩无数次——它自己不记得,用户看了也头疼。

如果你也在深度使用 OpenClaw,这个 skill 应该能帮你省不少心。