“近期将连续发布《从OpenClaw源码分析小龙虾是如何工作的?》,本系列一共十篇文章。 主题为:概览与调试环境搭建->Gateway中央控制器->Session管理分析->提示词上下文分析->ReAct原理与源码分析->定时任务与心跳机制->记忆系统分析->Skill 体系分析->Channel 系统分析->自我进化机制。
第10篇:自我进化机制
一、概述
OpenClaw 的自我进化机制是其最引人注目的特性之一。OpenClaw 能够在执行任务过程中不断学习、记录错误、提炼规则,持续优化行为模式,且可以无需人工干预或模型重训练。
OpenClaw自我进化的核心设计思想:不修改模型权重,而是通过File-as-Memory(.md 文件作为记忆载体)+ 动态提示词工程实现一个提示词驱动的强化学习回路。
用户消息 → 提示词上下文构建:系统提示中动态注入 Skills 元数据、工作区文件(含 memory/*.md)、记忆搜索指令、工具列表等。 提示词上下文构建 → AI 推理:发送给LLM模型处理上下文的提示词,生成回复和工具调用。 AI 推理 → 工具执行:根据LLM返回的响应执行相关的工具,这里可能涉及到多轮工具的执行,是ReAct过程。 工具执行 → 记忆及经验沉淀:最终LLM会决策是否要记录用户的偏好,是否要将相关的处理经验沉淀下来,对相关的markdown文件进行修改。 更新后:下一轮用户输入消息后,在组装上下文时所有markdown文件会拼接进去,包含了所有过往沉淀的产物,所以能提供更精准的提示词上下文。

二、底层基石 —— Markdown 文件
OpenClaw 的自我进化机制建立在文件即记忆的核心理念之上。
每次对话前 → 将上述 md 文件拼进 prompt 对话中 → Agent 执行任务,学到新东西/犯错/发现偏好 对话后 → Agent 把新知识写回对应的 md 文件 下次对话 → 加载更新后的文件,行为更精准

三、一些示例
AGENTS.md 示例 —— 犯过的错、学到的教训
# AGENTS.md## 操作规范- 执行危险操作(删除文件、修改配置)前必须向用户确认- 使用 exec 执行命令时,避免使用 `rm -rf` 等破坏性命令## 犯过的错### 2026-05-15:误删用户配置文件- **错误**:在执行 `rm temp/*` 时,由于变量为空,实际执行了 `rm /*`- **教训**:使用 rm 前必须检查变量非空,或使用 `rm -f -- "$file"` 格式- **已更新**:TOOLS.md 中添加了安全执行规范### 2026-05-20:API 请求未处理限流- **错误**:连续快速调用 API 导致被限流封禁- **教训**:第三方 API 必须添加重试和退避策略- **已更新**:在相关工具中添加了限流处理## 学到的好经验### 日志分析技巧当分析大日志文件时,优先使用 `grep -E` 过滤关键词,而非读取全部内容。参考:TOOLS.md 中的日志分析章节USER.md 示例 —— 用户画像
# USER.md## 主人信息- 姓名:张三- 职业:后端开发工程师- 技术栈:Go, Python, Kubernetes## 偏好- 喜欢简洁的回复,优先给结论- 不喜欢长篇大论的解释- 代码示例优先使用 Go- 工作日上午 10-11 点不方便回复,不要主动发消息## 禁区- 不要访问 /home/user/private 目录- 不要修改 ~/.bashrc 文件- 不要在未经确认的情况下执行 git push -f## 常用命令- 开发环境:`cd ~/projects/backend`- 查看日志:`tail -f /var/log/app.log`TOOLS.md 示例 —— 工具使用笔记
# TOOLS.md## SSH 配置- 服务器地址:192.168.1.100- 用户名:deploy- 密钥路径:~/.ssh/id_rsa- 免密登录已配置## 安全执行规范- 执行 rm 前必须验证路径非空- 执行 curl 外部 URL 前检查是否可信- 数据库操作优先使用只读事务## 常用脚本- 部署脚本:`~/scripts/deploy.sh --env prod`- 备份脚本:`~/scripts/backup.sh`## 踩坑记录- 生产环境 Python 版本为 3.9,不支持 3.10+ 语法- 数据库连接池最大 50,超过会阻塞四、核心进化机制
4.1 自然语言声明模式
OpenClaw 的核心创新在于:系统不在代码层面更新,而是通过自然语言描述的声明式定义动态注入新能力。
4.2 阶梯式自愈
OpenClaw 的自我进化不仅体现在能力增长上,还体现在故障处理能力的持续提升。
核心理念:每次故障不是终点,而是触发尝试自愈;成功处理后的经验会被记录下来,让系统越用越稳定。
4.3 动态新技能
Agent 可以在运行时动态加载新技能,无需重启或重新部署。通过以下系统提示词实现自我更新。
## OpenClaw Self-UpdateGet Updates (self-update) is ONLY allowed when the user explicitly asks for it.Do not run config.apply or update.run unless the user explicitly requests an update or config change; if it's not explicit, ask first.Actions: config.get, config.schema, config.apply (validate + write full config, then restart), update.run (update deps or git, then restart).After restart, OpenClaw pings the last active session automatically.示例:动态安装新 Skill
用户:帮我安装一个天气查询的 SkillAgent:正在搜索可用 Skill... 找到 "weather" Skill,来自 clawhub.com 是否安装?[是/否]用户:是Agent:正在安装... ✅ weather Skill 安装成功 现在你可以使用 /weather <城市> 查询天气了 示例:/weather 北京4.4 主动维护长期记忆
刷新长期记忆是 OpenClaw 最明显的学习行为。回复用户前Agent会主动检查是否需要将经验写入长期记忆。

五、进化案例演示
4.1 案例一:学习新的部署流程
用户:帮我部署这个项目到测试服务器[第1次] Agent:使用 scp 上传文件 ❌ 失败:权限不足[第2次] Agent:尝试使用 rsync ❌ 失败:rsync 未安装[第3次] Agent:改用 git pull 方式 ✅ 成功:git clone + pm2 restartAgent 记录到 TOOLS.md:
## 部署流程(已验证)测试服务器部署步骤:1. ssh user@test-server2. cd /app && git pull3. pm2 restart app下次执行时按成功流程执行,无需再多次试错。
4.2 案例二:学习错误处理经验
用户:分析这个 100MB 的日志文件Agent:尝试读取整个文件 ❌ 失败:文件太大,上下文溢出Agent:改用 tail -n 1000 读取尾部 ✅ 成功分析Agent 记录到 AGENTS.md:
## 学到的教训处理大日志文件(>10MB)时:1. 不要使用 read 读取整个文件2. 优先使用 grep 过滤关键词3. 或使用 tail/head 限制行数4. 需要统计分析时使用 exec 调用 awk/sed六、与传统 AI 助手的对比
| 记忆方式 | ||
| 学习能力 | ||
| 个性化 | ||
| 技能扩展 | ||
| 故障处理 |
七、总结
OpenClaw 的自我进化机制是一套完整的学习系统:
核心思想:通过 File-as-Memory+ 动态提示词工程,实现提示词驱动的强化学习回路底层基石:Markdown 文件作为记忆载体,用户可读、AI 可写、版本可控 进化闭环:对话前加载 → 对话中学习 → 对话后写入 → 下次加载更新 四大机制: 自然语言声明模式(技能纯文本,无需重启) 阶梯式自愈(故障→尝试→记录经验) 动态新技能(运行时加载) 主动维护长期记忆(隐性学习,非显式命令) 核心价值:每次故障、每个偏好、每次成功的经验都会被记录,让 AI 越用越聪明、越用越符合用户的习惯
系列完结
至此,《OpenClaw 源码解析》系列全部 10 篇文章已完结。 感谢您的阅读!如有任何问题或建议,欢迎在评论区留言讨论。
夜雨聆风