0. 引言

OpenClaw系列前 17 篇,你的 AI 已经非常强大了——能聊天、查数据、操作浏览器、定时自动干活、分身并行、连上手机、记忆系统完善、多个人格、装各种插件、逛技能市场。
但它还有一个致命问题——
它犯过的错,下次还会再犯。
你纠正过它:"不要用 rm,用 trash。"——下次它还是直接 rm。你告诉它:"PowerShell 处理中文文件会乱码,用 Node.js。"——下次它还是用 PowerShell。
人类从错误中学习,犯过一次就记住了。但 AI 每次醒来都是全新的——除非你给它一套"自我改进系统"。
而且这套系统不用你自己从零造——它是一个现成的技能(Skill),装好就能用。今天这篇除了讲原理,还会带你一条命令把它装上。
今天这篇,带你彻底搞懂 OpenClaw 的自我改进系统(Self-Improvement)——让 AI 从错误中学习、记录教训、持续进化,不再重复犯同样的错。
打个比方:
| 第 18 篇(今天) | 记录下来,下次不再犯 | 写错题本,考试前复习 |
💡 自我改进 = 给 AI 一个错题本 = 犯过的错不再犯,踩过的坑变成经验。
1. 什么是自我改进系统?
在动手之前,先搞清楚三个问题:它到底是什么、为什么 AI 需要它、它和前面讲过的记忆系统有什么区别。
1.1 一句话:自我改进就是让 AI 犯错后记住教训
自我改进系统是 OpenClaw 的一套机制——让 AI 在犯错、被纠正、发现更好的方法时,自动记录教训,并在未来的会话中应用这些经验。
1.2 为什么 AI 需要自我改进?
.learnings/ 文件 | ||
ERRORS.md 记录错误 | ||
LEARNINGS.md 记录教训 | ||
1.3 自我改进 vs 记忆系统
别搞混了——它们有各自的角色:
| 记录什么 | ||
| 什么时候写 | ||
| 文件位置 | MEMORY.md + memory/ | .learnings/ 文件夹 |
| 阅读时机 | ||
| 目标 |
简单说:
- 记忆系统 = 日记本(记录发生过什么)
- 自我改进 = 错题本(记录犯过什么错)
概念理清了,接下来看看这套系统是怎么搭起来的。
2. 自我改进的三层架构
整个自我改进的工作流可以概括成三个词:记下来、翻一翻、提上去。三层,一层管一件事。

2.1 第一层:犯错就记,绝不手软
当 AI 发现以下情况时,立即记录:
| 命令执行失败 | .learnings/ERRORS.md | rm: Permission denied |
| 用户纠正 AI | .learnings/LEARNINGS.md | |
| 发现更好的方法 | .learnings/LEARNINGS.md | |
| 用户要求新功能 | .learnings/FEATURE_REQUESTS.md | |
| 知识过期/错误 | .learnings/LEARNINGS.md |
2.2 第二层:定期翻翻错题本,别再犯
光记不翻,等于白记。AI 要定期回顾 .learnings/ 中的记录:
2.3 第三层:错题变教科书,永久记住
当一条教训被反复验证有价值时,提升到更高层级:
TOOLS.md | ||
AGENTS.md | ||
SOUL.md |
💡 提升规则:一条教训出现 3 次以上、跨越 2 个不同任务、在 30 天内反复出现 → 应该提升。
三层架构清楚了,下一个问题:具体每条记录该怎么写?格式是什么?
3. 记录格式规范
格式必须统一——同一种记录一个模板,后面检索、复习、提升才都有据可依。下面三个模板,直接抄。

3.1 ERRORS.md:命令跑失败了怎么记?
## [ERR-20260530-001] rm_command**Logged**: 2026-05-30T14:30:00+08:00**Priority**: high**Status**: pending**Area**: config### Summary使用 rm 删除文件导致不可恢复的数据丢失### Error rm: cannot remove 'important.txt': Permission denied### Context- 用户要求删除旧文件- 使用了 `rm -rf` 命令- 用户反馈应该用 trash 而不是 rm### Suggested Fix所有删除操作统一使用 trash 命令,而非 rm### Metadata- Reproducible: yes- Related Files: AGENTS.md- Tags: delete, safety---3.2 LEARNINGS.md:被纠正了怎么记?
## [LRN-20260530-001] chinese_file_encoding**Logged**: 2026-05-30T14:30:00+08:00**Priority**: high**Status**: resolved**Area**: config### Summary处理含中文的文件时,PowerShell 会乱码,应使用 Node.js### DetailsPowerShell 的编码处理在 Windows 上对中文支持不好,会导致文件内容乱码。Node.js 的 fs 模块可以正确处理 UTF-8 中文。### Suggested Action涉及中文文件的读写操作,统一使用 Node.js### Metadata- Source: user_feedback- Related Files: TOOLS.md- Tags: encoding, powershell, nodejs- Pattern-Key: encoding.chinese_files- Recurrence-Count: 3- First-Seen: 2026-04-13- Last-Seen: 2026-05-30---3.3 FEATURE_REQUESTS.md:想要个新功能?记下来
## [FEAT-20260530-001] auto_database_backup**Logged**: 2026-05-30T14:30:00+08:00**Priority**: medium**Status**: pending**Area**: infra### Requested Capability自动定时备份 MySQL 数据库### User Context用户有阿里云 RDS 数据库,担心数据丢失### Complexity Estimate: medium### Suggested Implementation使用 Cron 定时任务 + mysqldump 命令### Metadata- Frequency: recurring---格式是死的,场景是活的。更重要的是——上面这些文件你一个字都不用手写,全程跟 AI 对话就行。下面 5 步,每步给你"你说什么、AI 会做什么",照着说就能跑起来。
4. 从零搭建:装个技能,5 步上线
讲了这么多原理,落地其实一点不复杂——这套能力是一个现成的技能(Skill):self-improving-agent,来自第 17 篇讲过的 ClawHub 技能市场。装上之后,AI 就自动知道什么时候该记、记成什么格式、怎么升级,全程你只需要对话。
4.1 第一步:安装自我改进技能
先给 AI 装上"行为规则"。直接跟 AI 说:
你说:"帮我安装self-improving-agent"
或者自己在终端跑一条命令:
clawhub install self-improving-agent装好后,技能文件会落在工作区的 skills/self-improving-agent/ 里,核心是一份 SKILL.md——它替你把规则都定好了:什么情况触发记录、记录用什么模板(就是第 3 章那套格式)、高频教训怎么升级成永久规则。AI 每次会话启动都会读到它。
装完就搞定了——AI 读到技能的 SKILL.md 后,会自动创建 .learnings/ 文件夹并初始化三个模板文件,你不用操心。

💡 技能和错题本是两回事:技能(SKILL.md)是行为规则——怎么记、怎么升级,装一次永久生效; .learnings/是数据——记下来的教训,随用随长。
4.2 第二步:给 AI 装上"犯错就记"的开关
技能已经规定了触发条件,想再加一道保险,就在工作区放个提醒文件——AI 每次会话启动都会读到它。直接说:
你说:"建一个 SELF_IMPROVEMENT_REMINDER.md,写清楚触发规则:命令失败记到ERRORS.md,被我纠正记到LEARNINGS.md,用户要新功能记到FEATURE_REQUESTS.md,每条记录带日期、优先级、状态"
AI:创建提醒文件,写入触发规则和记录格式
再让 AI 把这条规则写进它的"工作守则",确保长期生效、换会话也不丢:
你说:"把'犯错和被纠正时要记录到 .learnings'这条规则加到AGENTS.md里"
AI:编辑 AGENTS.md,追加这条规则
到这一步,AI 已经知道"什么情况该记、记到哪、怎么记"了。接下来是最关键的练习——真的去用它。
4.3 第三步:当场纠正,AI 立刻记住
系统装好后,找个机会真的纠正 AI 一次,看它会不会记。两种情况都试一下。
情况一:AI 命令跑失败了
比如 AI 用了 python -c 一行命令查数据库,被安全网关拦截。你会看到这样的对话:
AI:这条命令被安全机制拦截了——内联 python -c 会被识别为代码混淆。已记录到 .learnings/ERRORS.md。以后涉及数据库凭证的查询,我会写成独立 .py 脚本。要现在提升进 TOOLS.md 吗?
你说:提升。
AI:已写入 TOOLS.md,那条记录状态改为 resolved。
情况二:你主动纠正 AI
比如 AI 用了 rm 删文件,你纠正它:
你说:别用 rm,以后删除文件一律用 trash,这个记下来。
AI:好的,已记录到 .learnings/LEARNINGS.md:「删除文件统一用 trash,不用 rm」,优先级 high,状态 pending。下次删除我会自动用 trash。
你不用管格式、不用管写到哪个文件——AI 会按第 3 章的模板自己写好。想确认?直接问:
你说:"打开 LEARNINGS.md给我看刚才记的那条"
AI:这是刚写入的那条—— ## [LRN-20260729-001] delete_use_trash,Priority: high,Status: pending,Area: config,Summary 是「删除文件统一用 trash,不用 rm」。ID、优先级、状态都齐全,格式没问题。
这就是自我改进的核心体验:你说一句,AI 记一辈子。
4.4 第四步:给 AI 配个"定期复习"闹钟
错题本光记不翻等于白记。让 AI 定时自己复习、把高频教训升级。直接说:
你说:"帮我设个定时任务,每周一早上 9 点,检查 .learnings里待解决的记录,把反复出现的高频教训提升到TOOLS.md"
AI:创建 cron 定时任务,按时触发复习流程(定时任务是第 11 篇讲过的)
不想等定时、想现在就看错题本现状?让 AI 跑几条查询:
# 看待解决的教训有多少条grep -h "Status\*\*: pending" .learnings/*.md | wc -l# 列出高优先级的待解决项grep -B5 "Priority\*\*: high" .learnings/*.md | grep "^## \["# 查找某个领域的教训grep -l "Area\*\*: config" .learnings/*.md或者干脆说人话,让 AI 直接总结:
你说:"总结一下 .learnings里攒了哪些教训,哪些该升级成永久规则"
AI:扫了三个文件,共 12 条:待解决 5 条(high 2、medium 3),已 resolved 6 条,wont_fix 1 条。两条建议升级成永久规则——「中文文件用 Node.js 不用 PowerShell」已踩 3 次坑,「数据库查询必须用独立脚本」是 high 优先级且反复出现,都适合写进 TOOLS.md。要我现在处理吗?
4.5 第五步:把高频教训"毕业"成永久规则
当一条教训反复出现(比如"中文文件用 Node.js"已经踩了三次坑),就该让它"毕业"——从临时记录提升到永久生效的规则。直接说:
你说:"把'处理中文文件用 Node.js 不用 PowerShell'提升成永久规则,写进 TOOLS.md,以后都照这个来"
AI:编辑 TOOLS.md 追加规则,并把 .learnings 里对应记录标记为 resolved
提升到哪个文件有讲究(呼应第 2.3 节):工具技巧进 TOOLS.md,流程规范进 AGENTS.md,行为准则进 SOUL.md。拿不准放哪?直接问 AI:
你说:"这条教训应该提升到哪个文件?"
AI:建议写进 TOOLS.md。这条是「PowerShell 处理中文路径会乱码」,属于工具使用的踩坑经验,TOOLS.md 专门记这类。如果是流程规范(比如「发布前必须跑预览」)放 AGENTS.md,行为准则(比如「回复要简洁」)才放 SOUL.md。
5 步走完,你的 AI 就拥有了一套能持续进化的"错题本系统"。 从这一步开始,它犯的每一个错,都在让它变得更强。
5. 会话压缩与记忆刷新
记录写到文件里就安全了。但还有一个隐患——如果教训还在对话里、还没来得及写,而对话本身被"忘掉"了呢?
这就得先搞懂 OpenClaw 的会话压缩机制,以及它为这件事准备的兜底方案。
5.1 什么是会话压缩?
简单说:AI 的对话上下文有上限(比如 128K token)。当对话太长时,OpenClaw 会把旧的对话内容"压缩"成摘要——就像把厚厚的一本书压缩成一句话总结。
5.2 压缩会带来什么问题?
5.3 自我改进的应对:重要的教训必须写入文件
关键原则:重要的教训不能只存在于对话中——必须写入文件。

写下来总归是对的。但如果 AI 忙着对话,忘了写怎么办?别担心——OpenClaw 还有一道保险。
5.4 自动记忆刷新:压缩前的保险丝
OpenClaw 的会话会自动压缩(当上下文快满时)。压缩发生时,如果有重要信息还没保存到文件里,就会丢失。
记忆刷新就是在压缩发生前,自动运行一个静默回合,让 AI 把该记的东西写到 memory/ 文件夹里。整个过程对用户完全无感:
会话进行中... ↓上下文使用量接近阈值 ↓OpenClaw 检测到"快该压缩了" ↓自动发送静默指令:"现在把重要记忆写入文件" ↓AI 执行写入(用户看不到) ↓然后进行压缩5.5 记忆刷新的配置(默认开启,一般不用动)
这套机制默认就是开的,大多数情况下你什么都不用改。只有当你想让它用更便宜的本地小模型、或者调整触发时机时,才需要动配置。
不用自己翻配置文件、记字段名——直接跟 AI 说:
你说:"确认一下我的记忆刷新是不是开着的"
AI:开着的。 openclaw.json里compaction.memoryFlush.enabled = true,触发阈值设在上下文用到 85% 时刷新,当前用的模型是qwen-turbo。一切正常,不用动。
你说:"把记忆刷新改成用本地小模型跑,省点 token"
AI:修改 memoryFlush.model 为你指定的模型,并重启生效
对应的配置段在 openclaw.json 中:
{ "agents": { "defaults": { "compaction": { "memoryFlush": { "enabled": true, // 总开关(默认 true) "softThresholdTokens": 6000, // 压缩前提前多少 token 触发 "forceFlushTranscriptBytes": "2mb", // 转录文件多大时强制刷新 "model": "ollama/qwen3:8b", // 可选:刷新专用模型,省 token "systemPrompt": "会话即将压缩,把要长期记住的内容写入文件。" } } } }}enabled | true | |
softThresholdTokens | 6000 | |
forceFlushTranscriptBytes | 2mb | |
model | ||
systemPrompt |
5.6 注意事项:这些坑别踩
💡 建议:保持默认开启。这能确保 AI 的重要记忆在压缩前不会丢失。
6. 错误检测与自动触发
记录的格式和复习的流程都讲完了。你可能会问:每次犯错都要手动处理吗?其实不用——AI 可以自己检测、自己记。
6.1 自动检测:什么情况该记录?
OpenClaw 的 AI 会在以下情况自动记录:
.learnings/ERRORS.md | |
.learnings/LEARNINGS.md | |
.learnings/FEATURE_REQUESTS.md | |
.learnings/LEARNINGS.md | |
.learnings/LEARNINGS.md |
6.2 优先级:哪些错值得记,哪些可以忽略?
不是所有错都值得写进错题本。按优先级分级:
critical | ||
high | ||
medium | ||
low |
7. 从教训到技能
记录和检测都讲了。最后一步:教训攒多了,其中特别有用的那些,可以"毕业"——提升成可复用的技能。

7.1 什么时候应该提取为技能?
| 反复出现 | See Also 链接 |
| 已验证有效 | resolved,解决方案已验证可行 |
| 非显而易见 | |
| 广泛适用 | |
| 用户要求 |
7.2 怎么把教训变成技能?
同样不用自己敲命令——直接跟 AI 说一句话就行:
你说:"把'数据库查询必须用独立脚本'这条高频教训提取成一个可复用技能"
AI:检查记录是否满足提取条件,生成 SKILL.md,并把原记录标记为 promoted
第 4 章装的自我改进技能自带一个提取脚本,AI 会直接调用它:
# 确认教训记录满足提取条件后,运行提取脚本~/.openclaw/workspace/skills/self-improving-agent/scripts/extract-skill.sh my-skill# 脚本会自动:# 1. 新建技能目录 ~/.openclaw/skills/my-skill/# 2. 根据教训内容生成 SKILL.md# 3. 更新 .learnings 里对应记录的状态为 promoted不想用脚本也简单——手动创建,或者直接让 AI 帮你生成 SKILL.md。技能怎么组织、怎么写(第 9 篇讲过的)这里不展开,重点是一句话:教训被验证有效,就该让它变成谁都能复用的技能。
8. 常见问题
最后回答几个大家常问的问题。
8.1 .learnings/ 文件夹在哪里?
默认在工作区目录下:
~/.openclaw/workspace/.learnings/├── LEARNINGS.md ← 学习记录├── ERRORS.md ← 错误记录└── FEATURE_REQUESTS.md ← 功能请求装好自我改进技能后,让 AI 一句话就能初始化(见 4.1)。想手动创建也行:
mkdir -p ~/.openclaw/workspace/.learnings8.2 怎么防止 .learnings/ 文件无限膨胀?
| 定期清理 | resolved 和 wont_fix 的记录 |
| 提升后删除 | TOOLS.md 的记录可以归档 |
| 合并相似项 | |
| 设置数量上限 |
8.3 不同 Agent 之间能共享教训吗?
可以。 如果 .learnings/ 在共享的工作区路径下,所有 Agent 都能读取。
对于跨会话的教训传播,还可以使用:
sessions_send | |
sessions_spawn | |
TOOLS.md |
8.4 自我改进会影响性能吗?
建议:完全无感,放心开启。
9. 总结
到第 18 篇,我们终于让 AI 拥有了"从错误中学习"的能力。
回顾一下:
| 第 18 篇(今天) | 自我改进技能(装一个 Skill,让 AI 从错误中学习,不再重复犯错) |
一句话总结:自我改进 = AI 的错题本 + 经验提炼
自我改进 = AI 的错题本 = 从"金鱼记忆"变成"学霸体质"
18 篇,一个大里程碑:你的 AI 已经很能干了
从第 1 篇的"从零部署"到今天的"自我改进"——你的 AI 现在已经是一个完整的、能进化的、服务多人的、有记忆有技能有插件的智能体系统了。
💡 下一篇预告:《实战工作流》——18 篇能力融会贯通,从零搭建一个完整的个人 AI 助手!
👋 我是路人甲甲,公众号「AI 打怪升级」,专注 AI 工具实战。
觉得有用?点个在看,分享给需要的朋友。
夜雨聆风