用过 AI Agent 的人都知道一个痛点:每次开一个新会话,Agent 就什么都不记得了。昨天讨论的项目、上周踩过的坑、你告诉过它的偏好——全部归零。
这不是 bug,是 LLM 的基本特性。模型本身是无状态的,每次调用都是独立的。
OpenClaw 的思路很直接:让 Agent 读写文件来延续记忆。每次会话开始时读取记忆文件,交互过程中更新,下次会话就能「记得」上次做了什么。
听起来简单,但实际做起来很快就会遇到问题。
OpenClaw 默认提供了一套记忆文件体系:SOUL.md(行为规则)、AGENTS.md(工作流程)、TOOLS.md(工具备忘)、USER.md(用户偏好)、MEMORY.md(长期记忆)。
但实际使用中发现,Agent 几乎把所有东西都写进了 MEMORY.md——项目状态、经验教训、配置变更、用户偏好……其他文件基本没动。用了两周,出了三个问题:
- MEMORY.md 膨胀——什么都往里塞,3.5KB 的文件很快变得臃肿,Agent 每次会话都要读一遍,浪费 token
- 其他文件闲置——SOUL.md、AGENTS.md、TOOLS.md、USER.md 本来各有所属,但 Agent 不会主动往里写,多文件分工形同虚设
- 无法改进——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 - 反映的是「经验教训」而非「做了什么」
晋升通道
两层记忆各有独立的晋升路径:
情形记忆晋升:每日笔记 → 长期记忆文件
晋升方式是复制+提炼,不删除原始每日笔记(保持时序完整性)。每天凌晨定时任务自动审查,用 .review-state.json 追踪进度,每次只处理新笔记。
反思记忆晋升:经验教训 → 行为规则
反思记忆不是所有经验都晋升——一次性偶发问题保留观察,反复出现的模式(≥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] correction Logged: 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>你的飞书用户id> # 替换为你的飞书 open_id
关键配置说明:
审查任务的两个关键机制:
- 进度追踪:用
.review-state.json记录上次审查到的日期,每次只处理新的每日笔记,避免重复读取浪费 token - 晋升门槛:不是所有经验都晋升。一次性偶发问题保留观察,反复出现的模式(≥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 能记住昨天做了什么、上周的项目进展
- 被纠正过的错误不会再犯(经验晋升为行为规则)
- 记忆不会无限膨胀(分层管理 + 审查进度追踪)
- 全自动:每天凌晨自动审查和晋升,无需人工干预
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/259348.html