三层记忆架构:从被动记录到主动学习

整个系统的核心设计是三层架构:每日日志、精选记忆、长期归档。

每日日志 (原始) → MEMORY.md (精华) → archives (归档)
↓                  ↓                  ↓
无限存储         <2500字符          高价值保存

第一层是每日日志,原始记录所有活动,不做筛选,不设上限。第二层是 MEMORY.md,由 LLM 每 6 小时自动从日志中提取关键信息,严格控制在 2500 字符以内。第三层是长期归档,高价值内容按周生成报告,持久保存。

这个分层的关键在于:原始数据不丢失,但 AI 助手日常读取的只有精简后的精选记忆,既保证了上下文质量,又避免了信息丢失。

六个核心问题和对应方案

这套系统不是为了技术炫技而设计的,它针对的是 AI 助手在实际使用中暴露出来的六个具体问题。

信息过载。 150 行日志中可能只有 3-5 条关键信息。传统做法是手动翻阅,本系统用 LLM 语义理解自动提取,压缩率达 97%。检查点脚本每 6 小时运行一次,调用本地大模型(如 qwen3)分析日志并更新精选记忆:

PROMPT = """
从以下日志中提取:
1. 今日成就
2. 学习收获
3. 重要决策
4. 遇到的挑战
"""

这里选择本地大模型是出于费用和安全性考虑,也可以直接替换为云端模型。

记忆遗忘。 三层架构本身就是解决方案——每日日志保证原始记录不丢,精选记忆保证高频访问内容精简,归档保证历史知识可追溯。

决策缺乏追溯。 这是实际工作中非常痛的一个点。系统提供了结构化的决策日志,记录每个重要决策的背景、可选方案、最终选择和选择原因:

create_decision(
    title="多模型路由系统集成方式",
    context="完成多模型路由系统后需要集成",
    options=["独立模块", "直接集成", "作为插件"],
    selected=0,
    reason="独立模块更灵活,便于测试",
    expected_outcome="可独立测试的路由模块"
)

决策记录以 JSON 格式存储,带索引,10 秒内可查询任意历史决策。对比传统方式靠搜索和回忆花费 1 小时,效率提升两个数量级。

系统退化。 磁盘堆积、内存膨胀、定时任务失败,这些问题靠人工定期检查效率极低。系统内置了夜间主动优化模块,每周日自动执行全面检查:清理 7 天前的临时文件、归档过大的 MEMORY.md、尝试修复失败的任务。

知识孤立。 深度分析脚本会自动构建知识图谱,分析技能间的依赖关系。实测中对 52 个技能进行了依赖分析,检测出 0 个循环依赖,计算出最优加载顺序。

缺乏持续动力。 这个设计比较有意思——系统内置了成就、连胜、里程碑三套激励机制,追踪任务完成的连续天数和关键成就解锁,为持续使用提供正反馈。

完整目录结构

系统的文件组织值得仔细看,它决定了各模块如何协同:

.../Space/
├── memory/                          # 第一层:每日日志
│   ├── 2026-02-11.md               # 自动创建的每日日志
│   ├── checkpoint-*.log            # 检查点执行日志
│   └── MEMORY-backup-*.md          # 自动备份
├── MEMORY.md                        # 第二层:精选记忆(核心)
├── life/
│   ├── decisions/                   # 决策日志(JSON格式)
│   ├── motivation/                  # 动机系统(成就/连胜/里程碑)
│   ├── archives/                    # 第三层:长期归档
│   │   └── weekly/                 # 每周报告
│   └── projects/                    # 各功能模块
│       ├── pattern-extraction/      # 模式提取
│       ├── knowledge-validation/    # 知识验证
│       ├── skill-dependency/        # 技能依赖
│       ├── nighttime-optimizer/     # 主动优化
│       ├── decision-logging/        # 决策日志
│       └── motivation/              # 动机追踪
└── para-system/                     # 自动化脚本
    ├── checkpoint-memory-llm.sh     # 检查点(每6小时)
    ├── nightly-deep-analysis.sh     # 深度分析(每周日)
    ├── qmd-full-maintenance.sh      # 系统维护(每周日)
    ├── maintain-knowledge-base.sh   # 知识维护(每天)
    └── *.py                         # 各模块实现

部署步骤

整个部署分三步。

第一步,创建目录结构:

cd .../Space

mkdir -p memory
mkdir -p life/decisions
mkdir -p life/motivation
mkdir -p life/archives/weekly
mkdir -p life/projects/{pattern-extraction,knowledge-validation,skill-dependency,nighttime-optimizer,decision-logging,motivation}
mkdir -p para-system

echo '{"decisions": [], "stats": {}}' > life/decisions/index.json
echo '{}' > life/motivation/achievements.json
echo '{}' > life/motivation/streaks.json
echo '{}' > life/motivation/milestones.json

第二步,部署核心脚本。 最关键的是检查点脚本,每 6 小时调用本地 LLM 从日志中提取关键信息并写入 MEMORY.md:

#!/bin/bash
WORKSPACE=".../Space"
MEMORY_FILE="$WORKSPACE/MEMORY.md"
OLLAMA_URL="http://127.0.0.1:11434/api/generate"
MODEL="qwen3:latest"

TODAY=$(date +%Y-%m-%d)
DAILY_LOG="$WORKSPACE/memory/$TODAY.md"
RECENT_CONTENT=$(tail -150 "$DAILY_LOG" 2>/dev/null || echo "")

PROMPT="从以下日志中提取关键信息:
1. 今日成就
2. 学习收获
3. 重要决策
4. 遇到的挑战
日志:
$RECENT_CONTENT"

ESCAPED_PROMPT=$(python3 -c "import json; print(json.dumps('''$PROMPT'''))")
RESPONSE=$(curl -s "$OLLAMA_URL" \
  -H "Content-Type: application/json" \
  -d "{\"model\":\"$MODEL\",\"prompt\":$ESCAPED_PROMPT,\"stream\":false}")
SUMMARY=$(echo "$RESPONSE" | jq -r '.response // empty')

if [ -n "$SUMMARY" ]; then
  cat >> "$MEMORY_FILE" << EOF
## 检查点 $(date '+%Y-%m-%d %H:%M')
$SUMMARY
---
EOF
fi

深度分析脚本在每周日凌晨运行,串联模式提取和夜间优化两个模块,生成综合分析报告。

第三步,配置定时任务:

# 检查点 (每6小时)
openclaw cron add --name "Memory Checkpoint" \
  --schedule "every 6h" \
  --script "checkpoint-memory-llm.sh" \
  --target main

# 健康检查 (每天8:00)
openclaw cron add --name "Memory Health Check" \
  --schedule "cron 0 8 * * *" \
  --script "memory-health-dashboard.sh" \
  --target main

# 知识维护 (每天23:00)
openclaw cron add --name "知识库自动维护" \
  --schedule "cron 30 23 * * *" \
  --script "maintain-knowledge-base.sh" \
  --target isolated

# 深度分析 (每周日3:00)
openclaw cron add --name "夜间深度分析" \
  --schedule "cron 30 2 * * 0" \
  --script "nightly-deep-analysis.sh" \
  --target isolated

# 系统维护 (每周日3:30)
openclaw cron add --name "QMD每周维护" \
  --schedule "cron 30 3 * * 0" \
  --script "qmd-full-maintenance.sh" \
  --target isolated

注意 --target main--target isolated 的区别:检查点和健康检查在主线程运行,深度分析和系统维护在隔离环境运行,避免影响正常使用。

从 1.0 到 2.0 的关键升级

2.0 版本相比 1.0 有四处实质性改进,每一处都有对应的量化数据。

记忆提取从关键词匹配升级为 LLM 语义理解,提取质量提升约 10 倍。1.0 版本依赖关键词命中,经常遗漏上下文复杂但实际重要的内容;2.0 版本让大模型基于语义判断重要性,不再依赖关键词。

任务调度从固定时间执行改为自适应按需执行,节省约 80% 资源:

if [ $NEW_FILES -ge 10 ] || [ $TIME_SINCE_LAST -ge 1h ]; then
  update_qmd_index
else
  skip  # 无需更新
fi

没有新文件就不执行索引更新,这个逻辑简单但效果显著。

存储从全量保留改为三层分级,MEMORY.md 超过 2500 字符自动触发归档。报告从单一文件改为模块化生成后合并,每个分析维度独立输出,最终整合为综合报告。

效率数据

几组关键数字值得记录:

操作 传统方式 本系统 提升幅度
提取关键信息 手动翻阅 30 分钟 自动 5 秒 99%
周回顾 手动整理 2 小时 自动 10 分钟 92%
决策追溯 搜索回忆 1 小时 10 秒查询 99%
系统检查 人工检查 30 分钟 自动 5 分钟 83%

存储层面,有效信息密度从 5% 提升到 85%(17 倍),存储增长模式从线性无限变为对数可控。质量层面,信息遗漏率从 40% 降至 5% 以下,决策可追溯率从 20% 提升到 100%。

监控与故障排查

系统运行后需要关注五个健康指标:MEMORY.md 大小(阈值 2500 字符)、索引状态、定时任务状态、磁盘空间(低于 80%)、临时文件数量(少于 20 个)。

日常排查的几个入口:

# 检查定时任务状态
openclaw cron list

# 查看最新检查点日志
tail -50 memory/checkpoint-*.log

# 运行健康检查
./memory-health-dashboard.sh

# 手动触发检查点(调试用)
bash checkpoint-memory-llm.sh

如果检查点提取失败,大概率是本地 Ollama 服务未运行,用 curl http://127.0.0.1:11434/api/tags 验证即可。

值得延伸的方向

作者提到了几个可扩展方向:Webhook 触发(特定事件时立即执行检查点而非等待定时任务)、多维度标签系统、与记忆系统的对话式交互。对于独立开发者来说,这套方案的核心思路——用 LLM 做信息压缩、用分层架构控制上下文质量、用定时任务实现自动化——是可以直接迁移到其他 AI 助手场景的。整套系统可以直接将方案内容喂给 OpenClaw 完成部署,门槛不高,但设计思路比大多数"给 AI 加记忆"的方案要系统得多。