OpenClaw 记忆维护:自动整理与归档

目录

    • 摘要
    • [1. 引言 - 为什么需要记忆维护?](#1. 引言 - 为什么需要记忆维护?)
      • [1.1 记忆膨胀问题](#1.1 记忆膨胀问题)
      • [1.2 记忆生命周期](#1.2 记忆生命周期)
      • [1.3 维护目标](#1.3 维护目标)
    • [2. 记忆分类与优先级](#2. 记忆分类与优先级)
      • [2.1 记忆分类体系](#2.1 记忆分类体系)
      • [2.2 优先级定义](#2.2 优先级定义)
      • [2.3 记忆标记规范](#2.3 记忆标记规范)
    • [3. 自动归档机制](#3. 自动归档机制)
      • [3.1 归档触发条件](#3.1 归档触发条件)
      • [3.2 归档流程](#3.2 归档流程)
      • [3.3 归档目录结构](#3.3 归档目录结构)
      • [3.4 归档索引文件](#3.4 归档索引文件)
    • [4. 定期清理策略](#4. 定期清理策略)
      • [4.1 清理规则](#4.1 清理规则)
      • [4.2 清理流程](#4.2 清理流程)
      • [4.3 清理脚本示例](#4.3 清理脚本示例)
    • [5. Heartbeat 驱动的维护](#5. Heartbeat 驱动的维护)
      • [5.1 Heartbeat 机制](#5.1 Heartbeat 机制)
      • [5.2 维护检查流程](#5.2 维护检查流程)
      • [5.3 维护状态记录](#5.3 维护状态记录)
    • [6. 记忆整理最佳实践](#6. 记忆整理最佳实践)
      • [6.1 整理原则](#6.1 整理原则)
      • [6.2 整理模板](#6.2 整理模板)
      • [6.3 自动整理脚本](#6.3 自动整理脚本)
    • [7. 实战案例](#7. 实战案例)
      • [7.1 案例一:季度归档](#7.1 案例一:季度归档)
      • [7.2 案例二:MEMORY.md 精简](#7.2 案例二:MEMORY.md 精简)
    • [8. 监控与告警](#8. 监控与告警)
      • [8.1 监控指标](#8.1 监控指标)
      • [8.2 告警通知](#8.2 告警通知)
    • [9. 常见问题与解决](#9. 常见问题与解决)
    • [10. 总结](#10. 总结)
      • [10.1 核心要点](#10.1 核心要点)
      • [10.2 维护清单](#10.2 维护清单)
      • [10.3 下一步](#10.3 下一步)
    • 参考资料

摘要

本文详细介绍 OpenClaw 记忆系统的维护策略与自动化实践。从记忆生命周期管理、自动归档机制、定期清理策略到 Heartbeat 驱动的维护流程,全面解析如何保持记忆系统的高效运行。通过实际案例演示记忆整理、归档、清理的完整流程,帮助开发者构建自维护的智能记忆系统,避免记忆膨胀和性能下降。🧹


1. 引言 - 为什么需要记忆维护?

1.1 记忆膨胀问题

问题 表现 影响
文件过大 MEMORY.md 超过 100KB 加载变慢,Token 消耗增加
日志堆积 每日日志累积过多 搜索效率下降
信息冗余 重复或过时信息 干扰有效信息检索
上下文污染 无关信息混入 AI 回复质量下降

1.2 记忆生命周期





创建记忆
活跃使用
定期检查
是否重要?
保留/升级
是否过时?
归档/删除
继续保留
记忆清理完成

1.3 维护目标

目标 说明 指标
控制大小 保持记忆文件合理大小 MEMORY.md < 50KB
提高效率 优化搜索和加载速度 搜索响应 < 1s
保证质量 确保记忆内容准确有效 有效信息率 > 80%
自动化 减少人工干预 自动化率 > 90%

2. 记忆分类与优先级

2.1 记忆分类体系

记忆分类
核心记忆
用户信息
项目上下文
关键决策
重要记忆
用户偏好
解决方案
里程碑事件
一般记忆
日常任务
临时记录
会话摘要
临时记忆
调试信息
临时数据
测试记录

2.2 优先级定义

优先级 类型 保留策略 示例
P0 核心 永久保留 始终保留 用户姓名、项目目标
P1 重要 长期保留 定期审查 用户偏好、重要决策
P2 一般 中期保留 30天后归档 日常任务、问题记录
P3 临时 短期保留 7天后删除 调试日志、临时数据

2.3 记忆标记规范

markdown 复制代码
# MEMORY.md

## [P0] 用户信息
- 姓名:张龙生
- 昵称:老大

## [P1] 用户偏好
- 表达风格:简洁

## [P2] 近期任务
- 完成第41-43篇文章

## [P3] 临时记录
- 今日调试了 Gateway 配置

3. 自动归档机制

3.1 归档触发条件

触发条件 说明 动作
时间触发 日志超过 7 天 移动到 archive/
大小触发 MEMORY.md 超过 50KB 提取非核心内容
数量触发 日志文件超过 30 个 批量归档
手动触发 用户请求归档 执行归档流程

3.2 归档流程

核心记忆
重要记忆
一般记忆
临时记忆


触发归档
扫描记忆文件
分类记忆内容
内容类型
保留在 MEMORY.md
审查后决定
移动到归档
标记删除
是否仍重要?
创建归档文件
清理列表
更新索引
归档完成

3.3 归档目录结构

复制代码
memory/
├── MEMORY.md              # 长期记忆(核心)
├── 2026-04-13.md          # 今日日志
├── 2026-04-12.md          # 昨日日志
├── ...
├── archive/               # 归档目录
│   ├── 2026-Q1/           # 按季度归档
│   │   ├── summary.md     # 季度摘要
│   │   └── logs/          # 日志文件
│   │       ├── 2026-01-*.md
│   │       ├── 2026-02-*.md
│   │       └── 2026-03-*.md
│   └── 2026-Q2/
│       └── ...
└── .archive-index.json    # 归档索引

3.4 归档索引文件

json 复制代码
{
  "version": "1.0",
  "lastUpdated": "2026-04-13T17:00:00Z",
  "archives": [
    {
      "period": "2026-Q1",
      "files": 90,
      "size": "125KB",
      "summary": "完成文章1-40篇,用户偏好稳定"
    }
  ],
  "statistics": {
    "totalArchived": 90,
    "totalSize": "125KB",
    "oldestDate": "2026-01-01",
    "newestDate": "2026-03-31"
  }
}

4. 定期清理策略

4.1 清理规则

规则 条件 动作
日志清理 超过 30 天 删除(已归档)
临时记忆 超过 7 天 删除
重复信息 检测到重复 合并去重
过时信息 标记为过时 删除或更新

4.2 清理流程





启动清理
扫描所有记忆
识别清理目标
生成清理计划
需要确认?
请求用户确认
执行清理
用户同意?
跳过该项
更新记忆文件
记录清理日志
清理完成

4.3 清理脚本示例

bash 复制代码
#!/bin/bash
# memory_cleanup.sh

MEMORY_DIR="/root/.openclaw/workspace/memory"
ARCHIVE_DIR="$MEMORY_DIR/archive"
RETENTION_DAYS=30

# 创建归档目录
mkdir -p "$ARCHIVE_DIR"

# 归档超过7天的日志
find "$MEMORY_DIR" -name "*.md" -mtime +7 -not -path "$ARCHIVE_DIR/*" -exec mv {} "$ARCHIVE_DIR/" \;

# 删除超过30天的归档
find "$ARCHIVE_DIR" -name "*.md" -mtime +$RETENTION_DAYS -delete

# 更新归档索引
python3 update_archive_index.py

echo "Memory cleanup completed at $(date)"

5. Heartbeat 驱动的维护

5.1 Heartbeat 机制

Heartbeat 是 OpenClaw 的定期检查机制,可用于驱动记忆维护:

markdown 复制代码
# HEARTBEAT.md

# 心跳检查任务

## 记忆维护检查项
- [ ] 检查 MEMORY.md 大小
- [ ] 归档超过7天的日志
- [ ] 清理临时记忆
- [ ] 更新记忆索引
- [ ] 检查重复信息

5.2 维护检查流程

超过 50KB
正常
超过 7 天
正常
超过 7 天
正常
Heartbeat 触发
读取 HEARTBEAT.md
执行检查项
MEMORY.md 大小
执行精简
继续检查
日志数量
执行归档
继续检查
临时记忆
执行清理
检查完成
更新检查时间

5.3 维护状态记录

json 复制代码
{
  "lastMaintenance": "2026-04-13T17:00:00Z",
  "checks": {
    "memorySize": {
      "status": "ok",
      "size": "32KB",
      "limit": "50KB"
    },
    "logCount": {
      "status": "ok",
      "count": 5,
      "limit": 7
    },
    "archiveSize": {
      "status": "ok",
      "size": "125KB"
    }
  },
  "actions": [
    {
      "type": "archive",
      "files": 3,
      "timestamp": "2026-04-13T17:00:00Z"
    }
  ]
}

6. 记忆整理最佳实践

6.1 整理原则

原则 说明 示例
保留核心 核心信息不删除 用户姓名、项目目标
合并相似 合并重复或相似内容 多次提到的偏好合并
提取摘要 长内容提取关键点 任务列表提取摘要
标记状态 标记信息状态 [已完成]、[已过时]

6.2 整理模板

markdown 复制代码
# MEMORY.md 整理模板

## [P0] 用户信息
<!-- 核心信息,永久保留 -->
- 姓名:
- 昵称:
- 时区:

## [P1] 用户偏好
<!-- 重要偏好,定期审查 -->
- 表达风格:
- 沟通语言:
- 特殊要求:

## [P1] 项目上下文
<!-- 当前项目状态 -->
- 项目名称:
- 当前目标:
- 进度:

## [P2] 重要决策
<!-- 近期重要决策,按时间倒序 -->
- YYYY-MM-DD:决策内容

## [P3] 近期任务
<!-- 近期任务,完成后归档 -->
- [ ] 任务1
- [ ] 任务2

## 归档记录
<!-- 已归档内容的索引 -->
- 2026-Q1:完成文章1-40篇

6.3 自动整理脚本

python 复制代码
import re
from datetime import datetime

def organize_memory(memory_content):
    """整理 MEMORY.md 内容"""
    
    # 1. 合并重复的用户偏好
    preferences = extract_preferences(memory_content)
    merged_prefs = merge_duplicates(preferences)
    
    # 2. 提取任务摘要
    tasks = extract_tasks(memory_content)
    task_summary = generate_summary(tasks)
    
    # 3. 标记过时信息
    outdated = find_outdated(memory_content)
    marked = mark_outdated(memory_content, outdated)
    
    # 4. 重新组织结构
    organized = reorganize(marked)
    
    return organized

def merge_duplicates(items):
    """合并重复项"""
    seen = {}
    for item in items:
        key = normalize(item['key'])
        if key in seen:
            # 合并内容
            seen[key]['value'] = item['value']
            seen[key]['updated'] = datetime.now()
        else:
            seen[key] = item
    return list(seen.values())

7. 实战案例

7.1 案例一:季度归档

场景:2026年Q1结束,需要归档所有Q1的日志

步骤

  1. 创建归档目录
bash 复制代码
mkdir -p memory/archive/2026-Q1/logs
  1. 移动日志文件
bash 复制代码
mv memory/2026-01-*.md memory/archive/2026-Q1/logs/
mv memory/2026-02-*.md memory/archive/2026-Q1/logs/
mv memory/2026-03-*.md memory/archive/2026-Q1/logs/
  1. 生成季度摘要
markdown 复制代码
# 2026年Q1 摘要

## 项目进度
- 完成文章:40篇
- 完成率:40%

## 重要决策
- 采用5阶段文章结构
- 选择飞书作为主要渠道

## 用户偏好变化
- 确认喜欢简洁表达风格
- 偏好表格+代码块格式

## 统计
- 日志文件:90个
- 总大小:125KB
  1. 更新归档索引
json 复制代码
{
  "archives": [
    {
      "period": "2026-Q1",
      "files": 90,
      "summary": "完成文章1-40篇"
    }
  ]
}

7.2 案例二:MEMORY.md 精简

场景MEMORY.md 超过 50KB,需要精简

精简前

markdown 复制代码
# MEMORY.md (55KB)

## 用户信息
...

## 项目上下文
(包含大量历史任务详情)

## 所有决策记录
(包含90天的所有决策)

## 每日任务列表
(包含所有历史任务)

精简后

markdown 复制代码
# MEMORY.md (28KB)

## [P0] 用户信息
- 姓名:张龙生
- 昵称:老大

## [P1] 项目上下文
- 目标:100篇文章
- 已完成:43篇
- 当前进度:43%

## [P1] 用户偏好
- 表达风格:简洁
- 格式偏好:表格+代码块

## [P1] 近期决策(最近30天)
- 2026-04-10:调整文章结构

## [P2] 当前任务
- [ ] 完成第44-45篇文章

## 归档索引
- 2026-Q1:见 archive/2026-Q1/summary.md

8. 监控与告警

8.1 监控指标

指标 阈值 告警级别
MEMORY.md 大小 > 50KB 警告
MEMORY.md 大小 > 100KB 严重
日志文件数量 > 30 个 警告
归档目录大小 > 1MB 警告
重复信息比例 > 20% 警告

8.2 告警通知

python 复制代码
def check_memory_health():
    """检查记忆系统健康状态"""
    alerts = []
    
    # 检查 MEMORY.md 大小
    memory_size = get_file_size("MEMORY.md")
    if memory_size > 100 * 1024:  # 100KB
        alerts.append({
            "level": "critical",
            "message": f"MEMORY.md 超过 100KB ({memory_size/1024:.1f}KB)",
            "action": "立即执行精简"
        })
    elif memory_size > 50 * 1024:  # 50KB
        alerts.append({
            "level": "warning",
            "message": f"MEMORY.md 超过 50KB ({memory_size/1024:.1f}KB)",
            "action": "建议执行精简"
        })
    
    # 检查日志数量
    log_count = count_log_files()
    if log_count > 30:
        alerts.append({
            "level": "warning",
            "message": f"日志文件过多 ({log_count} 个)",
            "action": "建议执行归档"
        })
    
    return alerts

9. 常见问题与解决

Q1:归档后如何检索?

解决方案

  1. 使用 memory_search 会自动搜索归档目录
  2. 查看归档索引快速定位
  3. 使用季度摘要获取概览

Q2:误删重要记忆怎么办?

解决方案

  1. 归档而非直接删除
  2. 保留 30 天缓冲期
  3. 定期备份 MEMORY.md

Q3:如何判断信息是否过时?

解决方案

  1. 检查时间戳
  2. 对比当前上下文
  3. 询问用户确认

10. 总结

10.1 核心要点

要点 说明
定期维护 通过 Heartbeat 驱动自动维护
分级管理 按优先级管理记忆内容
自动归档 超过 7 天自动归档日志
定期清理 超过 30 天清理归档文件

10.2 维护清单

  • 每周检查 MEMORY.md 大小
  • 每周归档旧日志
  • 每月审查用户偏好
  • 每季度生成摘要
  • 定期备份重要记忆

10.3 下一步

  • 第45篇:OpenClaw 上下文管理:Token 优化策略
  • 第46篇:OpenClaw Browser:浏览器控制入门

参考资料

相关推荐
成长之路5141 小时前
【数据集】省级金融发展水平数据(2000-2024年)
大数据
G***技1 小时前
国产芯·低能耗:VT91轻量化云终端护航金融信息安全
大数据
水煮白菜王1 小时前
Claude Code 全方位使用手册
java·开发语言·网络
minji...1 小时前
Linux 网络基础(三)HTTP的请求方法(GET/POST),HTTP表单、临时和永久重定向状态码、Cookie、查询参数、Web根目录
linux·运维·服务器·网络·c++·http
今儿敲了吗1 小时前
数据库(六)——数据库控制功能
数据库
瀚高PG实验室1 小时前
postgresql因在从库备份时间长而失败
运维·数据库·postgresql·瀚高数据库
wefg11 小时前
【计算机网络】IP 协议(IP划分/公私IP/NAT/路由/分片组装/mac帧/MTU/MSS/ARP协议)
网络·tcp/ip·计算机网络
我滴老baby1 小时前
智能体安全防护指南从输入校验到工具沙箱的全方位防御策略
网络·安全
tiger从容淡定是人生1 小时前
Vibe Coding——中国信创生态真正的“超级加速器”
大数据·人工智能·vibe coding·信创战略