搭建完整的OpenClaw代理记忆系统,配备三层记忆(热/温/冷)、每日日志、语义搜索(QMD)以及无损上下文管理(Lossless...)
代理内存设置 : 为任何 OpenClaw 代理设置完整的三级内存系统是一项面向实际任务的技能,主要用于包含目录结构、 内存文件、 语义搜索和上下文压缩;// 快速启动;
该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
为任意 OpenClaw 智能体构建完整的三层记忆系统。包含目录结构、记忆文件、语义搜索及上下文压缩功能。
# 1. 运行配置脚本 bash scripts/setup_memory.sh /path/to/workspace # 2. 将 AGENTS.md 模板复制到工作区 # (阅读 references/AGENTS_TEMPLATE.md,按需调整后写入 workspace/AGENTS.md) # 3. 在 openclaw.json 中添加配置(详见下方第 3 步中的确切 JSON 内容) # 4. 重启 openclaw gateway restart
完整细节请参阅下方各章节。
运行配置前,请确保满足以下条件:
openclaw --version 可验证)。若未安装,配置脚本仍将创建目录与记忆文件,但插件安装和配置修改需手动完成。python3 --version 验证。QMD 提供对记忆文件的语义搜索能力(memory_search)。核心记忆系统(含层级划分、每日日志、Lossless Claw)在无 QMD 时仍可完全运行。若您无法安装 QMD(如服务器无 Python 或受限制),将仅失去语义搜索功能,其余一切保持不变。~/.openclaw/openclaw.json(与 Linux 相同)。配置脚本使用 POSIX 兼容的 date 和 mkdir 命令,不依赖 GNU 特有参数。/mnt/c/...),文件权限行为可能异常;建议使用 WSL 文件系统内的路径(如 ~/workspace)以确保权限管理可靠。脚本中使用的 set -euo pipefail 和 mkdir -p 在 WSL2 下运行正常。bash scripts/setup_memory.sh /path/to/agent/workspace
该脚本将创建以下内容:
memory/、memory/hot/、memory/warm/ 目录memory/hot/HOT_MEMORY.md(当前会话状态)memory/warm/WARM_MEMORY.md(稳定配置与偏好设置)MEMORY.md(长期归档)memory/YYYY-MM-DD.md(当日每日日志)memory/heartbeat-state.json(心跳状态追踪)脚本还会检查 QMD 和 Lossless Claw 是否已安装,并在可行时自动安装。
阅读 references/AGENTS_TEMPLATE.md,并将其内容写入智能体工作区,保存为 AGENTS.md。
需自定义的部分:
应保持默认的部分:
在 agents.defaults(或对应智能体的专属配置)中添加以下字段:
"memorySearch": { "provider": "local" },
"compaction": { "mode": "safeguard" },
"contextPruning": { "mode": "cache-ttl", "ttl": "1h" },
"heartbeat": { "every": "1h" }
各配置项作用说明:
| 配置项 | 用途 | 是否支持定制 |
|---|---|---|
memorySearch |
启用 QMD 对记忆文件的语义搜索 | "local" 是当前唯一可用提供者 |
compaction: safeguard |
Lossless Claw 将旧消息压缩为可展开摘要,而非直接丢弃。“Safeguard” 模式会在上下文溢出前触发压缩,借助 lcm_expand 完整保留全部内容 |
仅当您熟悉 Lossless Claw 内部机制时才建议更改模式 |
contextPruning: cache-ttl |
在 TTL 过期后,从活跃上下文窗口中移除过期内容。该功能与 Lossless Claw 协同工作:先压缩内容,再进行裁剪,因此不会真正丢失任何信息 | 根据使用场景调整 ttl:高频轮转型智能体可设为 "5m",长周期研究任务可设为 "2h" |
heartbeat |
触发周期性健康检查,智能体会读取 HEARTBEAT.md 并执行维护任务(如邮件检查、记忆回顾等) | 根据需求调整 "every" 间隔:"5m" 适用于监控类智能体,"1h" 为通用设置,"4h" 适用于低活跃度智能体 |
为智能体启用以下插件:
"session-memory": { "enabled": true },
"bootstrap-extra-files": { "enabled": true },
"lossless-claw": { "enabled": true }
各插件功能说明:
| 插件 | 作用 |
|---|---|
session-memory |
跨会话持久化并加载记忆上下文。确保智能体在启动时读取记忆文件(HOT/WARM/COLD) |
bootstrap-extra-files |
在会话启动时,将额外工作区文件(AGENTS.md、SOUL.md、USER.md、TOOLS.md)载入智能体上下文 |
lossless-claw |
将旧对话压缩为摘要,可通过 lcm_expand、lcm_grep 和 lcm_expand_query 按需还原。防止长对话过程中出现“失忆”现象 |
手动安装插件(若配置脚本未自动完成):
pip install qmd # 或:pipx install qmd / brew install qmd openclaw plugins install @martian-engineering/lossless-claw
openclaw gateway restart
验证清单 —— 逐项执行并确认结果:
# 1. 记忆目录存在 ls -d memory/ memory/hot/ memory/warm/ # 2. 记忆文件存在 ls memory/hot/HOT_MEMORY.md memory/warm/WARM_MEMORY.md MEMORY.md memory/heartbeat-state.json # 3. 当日每日日志存在 ls memory/$(date +%Y-%m-%d).md # 4. QMD 已安装 qmd --version # 5. Lossless Claw 插件已启用 openclaw plugins list | grep lossless-claw # 6. AGENTS.md 已就位 head -5 AGENTS.md # 7. 配置已生效(检查 openclaw.json) grep -c "memorySearch|compaction|contextPruning|lossless-claw" ~/.openclaw/openclaw.json
若任一检查失败,请参阅下方“故障排除”章节。
若您此前已存在 MEMORY.md 或历史每日日志,请按以下步骤迁移:
if [ ! -f ] 判断,仅在目标文件不存在时才创建,因此您的现有文件将被完整保留。MEMORY.md 中的活跃/临时上下文迁移至 memory/hot/HOT_MEMORY.mdmemory/warm/WARM_MEMORY.mdMEMORY.md(COLD 层级)中memory/ 目录下,系统默认即从此处读取。记忆文件损坏:删除损坏文件,然后重新运行 bash scripts/setup_memory.sh /path/to/workspace。脚本仅创建不存在的文件,其余记忆文件均不受影响。您也可参考脚本中的模板头手动重建该文件。
AGENTS.md 丢失或被删除:从 references/AGENTS_TEMPLATE.md 重新复制并按需定制。
openclaw.json 配置损坏:从备份中恢复(配置脚本不会修改 openclaw.json,所有配置变更均为手动操作)。若无备份,请参照上方第 3 步重新添加配置。
通用原则:配置脚本可安全重复运行,绝不会覆盖已存在的文件。
安装完成后,Lossless Claw 将自动运行:
lcm_expand —— 将压缩后的摘要还原为原始消息lcm_grep —— 使用正则表达式或文本在整个压缩历史中搜索lcm_expand_query —— 提出问题,从压缩上下文中获取答案| 层级 | 文件 | 用途 | 更新频率 |
|---|---|---|---|
| 🔥 HOT | memory/hot/HOT_MEMORY.md |
当前任务、待办事项 | 每几轮交互一次 |
| 🌡️ WARM | memory/warm/WARM_MEMORY.md |
稳定偏好、API 参考、常见陷阱 | 发生变更时更新 |
| ❄️ COLD | MEMORY.md |
里程碑事件、关键决策、提炼的经验 | 每周或每月更新 |
🔥 HOT —— “当前正在为客户 X 排查认证流程问题。等待 Bob 提供 API 密钥。下一步:密钥到位后测试接口。”
🌡️ WARM —— “用户偏好项目符号列表而非段落。Slack 工作区为 #eng-team。API 限流为每分钟 100 次请求。时间戳一律使用 UTC。”
❄️ COLD —— “2025-03-15:完成 v1 至 v2 API 迁移。关键经验:始终锁定依赖版本。决策:采用主干开发模式(trunk-based development)。”
每日日志(memory/YYYY-MM-DD.md)记录原始会话事件。智能体将定期回顾这些日志,并将重要条目提升至 COLD 层级。
memory/YYYY-MM-DD.md 写入时,应在每条记录前添加自身名称以避免混淆。每个 OpenClaw 智能体映射一个工作区。若您需要隔离的记忆上下文(例如工作 vs. 个人):
memory/work/ 和 memory/personal/ 子目录,分别配备独立的 HOT 文件,并在 AGENTS.md 中指示智能体根据上下文选择对应文件。此为进阶方案,需定制 AGENTS.md 逻辑。每日日志随时间持续增长。 每日生成一个新文件 memory/YYYY-MM-DD.md。一年内将累积约 365 个小型文件。该设计通常无问题(每个文件体积较小,通常为 1–10 KB),但对于长期运行的智能体:
memory/archive/,以维持主 memory/ 目录的扫描效率。若已配置,QMD 仍可索引归档目录。| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 智能体启动时不读取记忆文件 | AGENTS.md 缺失,或其中未包含记忆读取指令 | 将 references/AGENTS_TEMPLATE.md 复制为 AGENTS.md |
memory_search 无法工作 |
QMD 未安装,或未配置 memorySearch | 运行 qmd --version 验证;在配置中添加 "memorySearch": { "provider": "local" } |
| 旧对话消失(无摘要生成) | Lossless Claw 未启用 | 运行 openclaw plugins list 查看 lossless-claw 是否在列表中;在插件配置中启用该插件 |
| 配置变更未生效 | 网关未重启 | 运行 openclaw gateway restart |
| 插件安装失败 | openclaw CLI 不在 PATH 中,或 npm 出现问题 | 验证 openclaw --version;尝试 npm install -g openclaw |
| 智能体覆盖已有记忆文件 | 脚本缺陷(理论上不应发生) | 脚本已在创建前执行 if [ ! -f ] 判断 —— 若发现覆盖行为,请提交问题报告 |