2026年基于 OpenClaw 搭建分层记忆系统,自动从历史和错误中学习

基于 OpenClaw 搭建分层记忆系统,自动从历史和错误中学习用过 AI Agent 的人都知道一个痛点 每次开一个新会话 Agent 就什么都不记得了 昨天讨论的项目 上周踩过的坑 你告诉过它的偏好 全部归零 这不是 bug 是 LLM 的基本特性 模型本身是无状态的 每次调用都是独立的 OpenClaw 的思路很直接 让 Agent 读写文件来延续记忆 每次会话开始时读取记忆文件 交互过程中更新 下次会话就能 记得 上次做了什么

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



用过 AI Agent 的人都知道一个痛点:每次开一个新会话,Agent 就什么都不记得了。昨天讨论的项目、上周踩过的坑、你告诉过它的偏好——全部归零。

这不是 bug,是 LLM 的基本特性。模型本身是无状态的,每次调用都是独立的。

OpenClaw 的思路很直接:让 Agent 读写文件来延续记忆。每次会话开始时读取记忆文件,交互过程中更新,下次会话就能「记得」上次做了什么。

听起来简单,但实际做起来很快就会遇到问题。

OpenClaw 默认提供了一套记忆文件体系:SOUL.md(行为规则)、AGENTS.md(工作流程)、TOOLS.md(工具备忘)、USER.md(用户偏好)、MEMORY.md(长期记忆)。

但实际使用中发现,Agent 几乎把所有东西都写进了 MEMORY.md——项目状态、经验教训、配置变更、用户偏好……其他文件基本没动。用了两周,出了三个问题:

  1. MEMORY.md 膨胀——什么都往里塞,3.5KB 的文件很快变得臃肿,Agent 每次会话都要读一遍,浪费 token
  2. 其他文件闲置——SOUL.md、AGENTS.md、TOOLS.md、USER.md 本来各有所属,但 Agent 不会主动往里写,多文件分工形同虚设
  3. 无法改进——Agent 犯过的错还会反复犯,因为没有「从错误中学习」的机制

核心问题:默认策略缺少两个东西——一是没有约束 Agent 把信息写到正确的文件,二是没有从经验中学习和晋升的机制。

最终设计了一套两层记忆系统:

情形记忆(Episodic Memory)——记「发生了什么」

memory/ ├── 2026-04-10.md   # 每日事实记录 ├── 2026-04-11.md └── ... 
  • 每天一个文件,记录当天实际发生了什么
  • 只记事实,不记反思
  • 心跳轮询时自动写入

反思记忆(Reflective Memory)——记「学到了什么」

.learnings/ ├── LEARNINGS.md         # 被纠正的错误、更好的做法 ├── ERRORS.md             # 命令失败、API 报错 └── FEATURE_REQUESTS.md   # 用户期望但尚不存在的功能 
  • 每条记录有结构化格式(时间、优先级、状态、详情)
  • 状态从 pending 开始,审查后可晋升为 promoted
  • 反映的是「经验教训」而非「做了什么」

晋升通道

两层记忆各有独立的晋升路径:

情形记忆晋升:每日笔记 → 长期记忆文件

内容类型 晋升到 示例 项目里程碑(完成/上线/归档) MEMORY.md 「daily-ai-agent 项目核心代码完成」 配置变更或架构调整 MEMORY.md 「每日AI简报从单阶段拆分为生成+审查两阶段」 用户偏好和习惯 USER.md 「偏好 OpenAI API 兼容格式,不用 LiteLLM」

晋升方式是复制+提炼,不删除原始每日笔记(保持时序完整性)。每天凌晨定时任务自动审查,用 .review-state.json 追踪进度,每次只处理新笔记。

反思记忆晋升:经验教训 → 行为规则

经验类型 晋升到 示例 行为模式改进 SOUL.md 「说到等于做到,没做就不要说」 工作流程优化 AGENTS.md 「写笔记前必须先读 SKILL.md」 工具使用坑点 TOOLS.md 「himalaya 走 proxychains 不稳定,优先用 gog」 用户偏好 USER.md 「偏好 OpenAI API 兼容格式,不用 LiteLLM」

反思记忆不是所有经验都晋升——一次性偶发问题保留观察,反复出现的模式(≥2 次)或被用户明确纠正的才晋升为行为规则。

这样 Agent 不仅「记得」发生了什么,还会从经验中提炼出规则,让自己变得越来越聪明。

完整的文件职责划分

文件 存什么 不存什么 SOUL.md 行为规则 身份信息、工具细节 AGENTS.md 工作流程 具体项目信息 TOOLS.md 环境专属信息 通用规范 USER.md 用户偏好和习惯 项目信息 MEMORY.md 长期事实(项目状态、配置、产出目录) 经验教训、每日流水 memory/ 每日事实记录 反思和经验 .learnings/ 待晋升的经验教训 已晋升的(标记 promoted)

基于 OpenClaw Agent 平台搭建,依赖 self-improving-agent 技能提供反思记忆的结构化格式和审查逻辑。

第一步:安装技能并初始化

# 安装反思记忆技能 openclaw skills install self-improving-agent 

安装后必须手动初始化——技能本身不会自动创建目录和文件:

# 创建反思记忆目录 mkdir ~/.openclaw/workspace/.learnings ​ # 创建三个日志文件(技能定义了它们的结构化格式,见第四步) touch ~/.openclaw/workspace/.learnings/LEARNINGS.md touch ~/.openclaw/workspace/.learnings/ERRORS.md touch ~/.openclaw/workspace/.learnings/FEATURE_REQUESTS.md 

LEARNINGS.md 中添加标题头:

# LEARNINGS.md - 反思记忆 ​ 记录值得反思的经验教训。每日定时任务审查并晋升到核心配置文件。 

⚠️ 技能安装不等于启用。安装后如果不创建目录和文件,反思记忆系统根本不会工作。

第二步:在 AGENTS.md 中定义记忆规范

确保 Agent 每次会话都能读到记忆规范,在 AGENTS.md 中添加以下内容:

 记忆 情形记忆 (Episodic Memory)- 每日笔记:memory/YYYY-MM-DD.md - 长期记忆:MEMORY.md —— 项目概览、硬件配置等长期事实 - 目的:保证连续性,不遗忘每天发生的事情 - 规则:只记事实(发生了什么),不记反思(学到了什么) ​  反思记忆 (Reflective Memory)- 目录:.learnings/ - LEARNINGS.md — 被纠正的错误、更好的做法、知识盲区、**实践 - ERRORS.md — 命令失败、API 报错、异常行为 - FEATURE_REQUESTS.md — 用户期望但尚不存在的功能 - 目的:积累经验,通过晋升机制让自己越来越聪明 - 晋升:每天夜里 3:00 定时任务审查,符合条件的晋升到核心配置文件 ​ 晋升机制 ​ 1. 记录:交互中遇到值得反思的情况 → 写入 .learnings/ 2. 审查:每天 3:00 定时任务审查 .learnings/ 中的 pending 条目 3. 晋升:符合条件的经验提炼为简短规则,写入目标配置文件 4. 标记:原条目 status 改为 promoted ​ | 经验类型 | 晋升到 | |----------|--------| | 行为模式改进 | SOUL.md | | 工作流程优化 | AGENTS.md | | 工具使用坑点 | TOOLS.md | | 用户偏好 | USER.md | 

第三步:在 HEARTBEAT.md 中触发记忆写入

心跳轮询是记忆写入的主要时机,在 HEARTBEAT.md 的检查步骤中添加:

1. 记录每日记忆:更新 memory/YYYY-MM-DD.md,记录当天做了什么(情形记忆) 2. 记录反思经验:如果本次交互中遇到了值得反思的情况(被纠正、发现更好的做法、踩了坑),记录到 .learnings/ 对应文件中(反思记忆) 

这样每次心跳轮询时,Agent 会自动把当天的情形和反思分别写入对应文件。

第四步:反思记忆的结构化格式(技能自带)

self-improving-agent 技能为三种日志文件定义了完整的结构化格式,Agent 会在交互过程中自动按此格式写入,无需额外配置。以下格式供了解:

LEARNINGS.md 格式(被纠正的错误、更好的做法):

 [LRN--001] correctionLogged: 2026-04-04T12:07:00+08:00 Priority: high             # high / medium / low Status: pending             # pending → promoted Area: config               # 分类标签 Summary 说了要做的事但没有对应行动 ​  Details 在讨论笔记站回顾机制时,说了倾向方案 2 但没有实际创建。 ​  Suggested Action 说到 = 做到。如果还没做,就不要说。 

ERRORS.md 格式(命令失败、API 报错):

## [ERR--001] command_name ​ Logged: ISO-8601 timestamp Priority: high Status: pending Area: config ​ # Summary Brief description of what failed ​ # Error `Actual error message` ​ # Context - Command/operation attempted - Environment details if relevant ​ # Suggested Fix What might resolve this 

FEATURE_REQUESTS.md 格式(用户期望但尚不存在的功能):

## [FEAT--001] capability_name ​ Logged: ISO-8601 timestamp Priority: medium Status: pending Area: config ​ # Requested Capability What the user wanted to do ​ # User Context Why they needed it ​ # Complexity Estimate simple | medium | complex ​ # Suggested Implementation How this could be built 

关键字段说明:

  • Priority:critical(阻塞核心功能)> high(用户纠正/反复出现)> medium(有影响但有变通)> low(偶发小问题)
  • Status:pending 等待处理 → promoted 已晋升到核心配置文件 → resolved 已解决
  • Area:config / style / thinking / note-taking 等分类标签

第五步:创建定时审查任务

每天凌晨 3:00 运行,做两件事:情形记忆晋升和反思记忆晋升。

cron 配置

name: 每日记忆审查与晋升 schedule: "0 3 * * *" timezone: Asia/Shanghai sessionTarget: isolated        # 独立会话,不污染主会话 timeout: 300s payload: kind: agentTurn message: |   执行每日记忆审查任务,包含两部分:     第一部分:情形记忆晋升(memory/ → MEMORY.md / USER.md)    1. 读取审查进度文件 ~/.openclaw/workspace/memory/.review-state.json,       格式:{"lastReviewed": "YYYY-MM-DD"}。不存在则视为从未审查   2. 读取 ~/.openclaw/workspace/memory/ 下所有日期 > lastReviewed 的每日记忆文件   3. 读取 ~/.openclaw/workspace/MEMORY.md  ~/.openclaw/workspace/USER.md   4. 识别每日笔记中值得长期保留的内容,按类型晋升到对应文件:       - 项目里程碑(完成/上线/归档)→ MEMORY.md       - 重要的配置变更或架构调整  MEMORY.md       - 新的协作产出目录或工作流程  MEMORY.md       - 用户偏好、习惯、表达喜好  USER.md       - 任何未来会话需要知道的事实  MEMORY.md   5. 晋升是复制+提炼,不要删除原始每日笔记中的内容(保持时序完整性)   6. 更新 .review-state.json  lastReviewed 为今天日期     第二部分:反思记忆晋升(.learnings/ → 核心配置文件)    1. 读取 .learnings/LEARNINGS.md、.learnings/ERRORS.md、.learnings/FEATURE_REQUESTS.md   2. 找出所有 status  pending 的条目   3. 评估每条是否值得晋升:       - 出现过 2 次以上的经验  高优先晋升       - 被用户明确纠正的经验  中优先晋升       - 一次性偶发问题  保留观察   4. 将值得晋升的经验提炼为简短规则,写入目标配置文件:       - 行为模式改进  SOUL.md       - 工作流程优化  AGENTS.md       - 工具使用坑点  TOOLS.md       - 用户偏好  USER.md   5. 更新原条目的 status  promoted,并记录晋升目标     输出   - 两部分都无更新  安静结束   - 有重要发现  简要总结(晋升了什么、为什么) delivery: mode: announce              # 有重要发现时通知用户 channel: feishu to:  
     <你的飞书用户id>        # 替换为你的飞书 open_id 

关键配置说明:

配置 值 原因 sessionTarget isolated 审查是独立任务,不应污染主会话上下文 schedule 0 3 * * * 凌晨运行,避开活跃时段 delivery.mode announce 有重要晋升时通知用户,无事则安静

审查任务的两个关键机制:

  1. 进度追踪:用 .review-state.json 记录上次审查到的日期,每次只处理新的每日笔记,避免重复读取浪费 token
  2. 晋升门槛:不是所有经验都晋升。一次性偶发问题保留观察,反复出现的模式(≥2 次)或被用户明确纠正的才晋升

坑 1:技能安装不等于启用

安装了 self-improving-agent 技能,以为反思记忆就自动工作了。结果 .learnings/ 目录从未创建过——技能安装只下载了 SKILL.md,不会自动创建目录和文件。

教训:任何组件安装后都必须验证初始化状态,不能假设安装即启用。

坑 2:一个文件什么都往里塞

最初 MEMORY.md 里混着身份信息、经验教训、工作流程、项目状态,找信息像翻垃圾堆。拆分到对应文件后,从 ~3.5KB 降到 ~2KB,每次会话读取更快,信息定位也更准。

坑 3:情形和反思混在一起

每日笔记里既记「做了什么」又记「学到了什么」,两边都做不好。拆开后各有清晰的职责和晋升路径。

坑 4:每次审查都重读 7 天笔记

最初设计每次审查读过去 7 天的每日笔记,同一条记忆被反复处理 7 次。用 .review-state.json 记录审查进度后,每次只读新的。

坑 5:晋升时删除了原始笔记

最初设计晋升后删除每日笔记中的「冗余」内容。但这样丢失了时序性——「4月3日做了什么」是情形记忆的核心价值,不该被清理。改为只复制+提炼,原始笔记保持不动。

  • Agent 能记住昨天做了什么、上周的项目进展
  • 被纠正过的错误不会再犯(经验晋升为行为规则)
  • 记忆不会无限膨胀(分层管理 + 审查进度追踪)
  • 全自动:每天凌晨自动审查和晋升,无需人工干预

小讯
上一篇 2026-04-13 16:27
下一篇 2026-04-13 16:25

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/259348.html