OpenClaw 记忆机制配置指南
📖 概述
OpenClaw 的记忆系统采用三层架构,实现从短期会话到长期知识的完整记忆链路。
┌─────────────────────────────────────────┐ │第一层:会话内记忆(短期)│ │- 上下文窗口(~1M tokens) │ │- 当前对话内容│ │- 会话结束即丢失│ └─────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │第二层:持久化记忆(中期)│ │- memory/YYYY-MM-DD.md(每日笔记)│ │- MEMORY.md(长期记忆)│ │- 文件系统存储,永久保存│ └─────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │第三层:向量检索(语义搜索)│ │- BGE-M3 模型(1024 维向量)│ │- memory_search 工具│ │- 语义相似度匹配│ └─────────────────────────────────────────┘ |
🗂️ 记忆文件结构
目录结构
~/.openclaw/workspace/ ├── MEMORY.md# 长期记忆( curated wisdom) ├── HEARTBEAT.md# 心跳任务配置 ├── memory/# 每日笔记目录 │├── 2026-03-20.md │├── 2026-03-19.md │└── ... └── docs/# 文档目录 |
MEMORY.md 结构
Markdown # MEMORY.md - 长期记忆 ## 人物 - 重要人物信息 - 沟通风格偏好 ## 工作相关 - 工作项目 - 技术栈 ## 生活相关 - 位置、时区 - 生活习惯 ## 偏好设置 - 默认配置 - API 优先级 - 工具偏好 ## 技术架构记忆 - 模型配置 - 系统架构 |
memory/YYYY-MM-DD.md 结构
Markdown # YYYY-MM-DD 记忆日志 ## 待办事项 - [ ] 任务 1 - [ ] 任务 2 ## 配置更新 - 新增配置项 ## 对话记录 - 重要对话摘要 ## 今日统计 - 关键指标 |
⚙️ 心跳机制(HEARTBEAT)
什么是心跳
心跳是 OpenClaw 的定期唤醒机制,让 Agent 从"被动响应"变成"主动助手"。
工作原理:
Gateway 每 30-60 分钟 → 发送心跳消息 ↓ Agent 读取 HEARTBEAT.md ↓ 执行任务 → 回复结果或 HEARTBEAT_OK |
HEARTBEAT.md 配置
文件位置:~/.openclaw/workspace/HEARTBEAT.md
基础格式:
Markdown # HEARTBEAT.md # 每日检查 - 检查日历:今天有什么会议? - 检查天气:苏州今天需要带伞吗? # 每周反思(周五下午) - 整理本周 memory/*.md 到 MEMORY.md - 删除过期的临时任务 # 临时任务(完成后删除) - [ ] 提醒我下午 3 点开会 |
记忆反思任务(推荐配置)
Markdown ## 记忆反思(每周执行) **任务:自动分析高频话题,识别重复问题/模式,建议新的记忆条目** ### 执行步骤 1. **扫描记忆文件** - 读取 `MEMORY.md` 现有内容 - 读取最近 7 天的 `memory/YYYY-MM-DD.md` 文件 2. **分析高频模式** - 统计重复出现的问题类型 - 识别重复的工具使用场景 - 发现用户偏好模式 3. **检查记忆缺口** - 对比高频问题和现有 MEMORY.md 条目 - 找出「经常被问但没记录」的信息 4. **生成建议** - 列出 3-5 个新的记忆条目建议 - 说明每条建议的理由 - 标记优先级(高/中/低) ### 执行频率 - **每周日** 执行一次完整反思 - **每天** 简单扫描(仅记录,不输出报告) |
⏰ Cron 定时任务
Cron vs 心跳
特性 | 心跳 | Cron |
触发 | Gateway 定期发送消息 | 系统定时任务 |
精度 | ~30-60 分钟 | 精确到分钟 |
场景 | 例行检查、批量任务 | 精确时间提醒 |
配置 | 编辑 HEARTBEAT.md | openclaw cron 命令 |
创建记忆整理 Cron 任务
命令:
Bash openclaw cron add \ --name "daily-memory-backup" \ --cron "0 3 * * *" \ --message "整理昨日对话数据到记忆文件" \ --tz "Asia/Shanghai" |
任务内容:
每天凌晨 3 点自动执行: 1. 读取昨天的会话历史 2. 提取重要事件和洞察 3. 写入 memory/YYYY-MM-DD.md 4. 提炼洞察到 MEMORY.md 5. 发送总结消息 |
Cron 管理命令
Bash # 查看任务列表 openclaw cron list # 查看执行历史 openclaw cron runs # 手动执行一次(测试) openclaw cron run |
🔧 记忆搜索配置
BGE 模型配置
模型信息:
1模型:BGE-M3-Q4_K_M.gguf
1路径:~/.node-llama-cpp/models/bge-m3-Q4_K_M.gguf
1维度:1024 维向量
1相似度:余弦相似度
memory_search 工具使用
基本用法:
JavaScript await memory_search({ query: "用户偏好 工作习惯 常用工具", maxResults: 10 }) |
返回格式:
JSON { "results": [ { "path": "MEMORY.md", "startLine": 1, "endLine": 32, "score": 0.42, "snippet": "...", "citation": "MEMORY.md#L1-L32" } ], "provider": "local", "model": "bge-m3-Q4_K_M.gguf" } |
📊 最佳实践
1. 记忆写入原则
主动写入:
1✅ 会话结束后立即记录重要内容
1✅ 发现新偏好时更新 MEMORY.md
1✅ 定期整理每日笔记到长期记忆
避免:
1❌ 依赖"脑子记住"(会话重启即丢失)
1❌ 过度记录(只记录重要信息)
1❌ 不及时清理(过时信息定期删除)
2. 心跳任务设计
推荐任务:
1每日检查(日历、天气、邮件)
1每周反思(记忆整理、模式分析)
1项目监控(GitHub、OpenClaw 更新)
任务设计原则:
1保持简洁(一句话描述)
1用注释做说明
1完成后及时清理
3. Cron 任务配置
推荐配置:
Bash # 每天凌晨 3 点整理记忆 openclaw cron add --name "daily-memory" --cron "0 3 * * *" --message "整理昨日记忆" # 每周一上午 9 点生成周报 openclaw cron add --name "weekly-report" --cron "0 9 * * 1" --message "生成本周报告" # 每小时检查日历 openclaw cron add --name "calendar-check" --cron "0 * * * *" --message "检查未来 2 小时会议" |
4. 记忆反思流程
每周反思步骤:
1扫描 MEMORY.md + 最近 7 天 memory/*.md
1分析高频话题 TOP 3
1识别重复问题/模式
1检查记忆缺口
1生成新建议(3-5 条)
1用户确认后写入 MEMORY.md
输出格式:
Markdown ## 🧠 记忆反思报告 - YYYY-MM-DD ### 高频话题 TOP 3 1. [话题] - 出现 N 次 2. [话题] - 出现 N 次 3. [话题] - 出现 N 次 ### 重复问题/模式 - [问题描述] → 建议记录到 MEMORY.md ### 新记忆条目建议 - [ ] **类别**: 建议内容 - 理由:... - 优先级:高/中/低 |
🛠️ 常见问题
Q1: 记忆文件在哪里?
A: ~/.openclaw/workspace/MEMORY.md 和 ~/.openclaw/workspace/memory/
Q2: 心跳多久触发一次?
A: 默认 30-60 分钟,由 Gateway 配置决定
Q3: Cron 任务不执行怎么办?
A:
1检查任务状态:openclaw cron list
1查看执行历史:openclaw cron runs
1手动测试:openclaw cron run
Q4: 记忆搜索不准怎么办?
A:
1优化查询关键词(更具体)
1增加 maxResults 数量
1检查记忆文件内容质量
Q5: 如何备份记忆文件?
A: 记忆文件是普通 Markdown 文件,可以用 Git、iCloud 等任何方式备份
📚 相关文档
- OpenClaw 官方文档
- HEARTBEAT.md 配置
- MEMORY.md 示例
- Cron 命令参考
夜雨聆风