一位 OpenClaw 维护者在日常使用超过两个月后,构建了一套记忆系统,让 Agent 能记住数周前的决策,行动前主动检查笔记,每次重启后精准接续上次的工作状态。以下是这套方案的完整拆解。

人们混淆的四种"记忆"

大多数人把 Agent 的记忆当成一个整体,但实际上存在四种不同类型的记忆机制,混淆它们是 Agent "失忆"的根本原因。理解这些区别,才能针对性地设计解决方案。

Agent 失忆的三种失败模式

Agent 忘记指令通常有三种典型场景:

  • 上下文窗口溢出:对话过长,早期指令被挤出窗口
  • 压缩丢失关键信息:系统自动压缩历史消息时,丢掉了重要决策
  • 重启后状态清零:每次新会话都从零开始,没有持久化记忆

压缩(Compaction)vs 剪枝(Pruning)

这是两个容易混淆但本质不同的操作。压缩是将冗长的对话历史浓缩成更精简的摘要,保留核心信息但减少 token 占用;剪枝则是直接丢弃部分上下文。理解这个区别至关重要——你可以用 /context list 命令来验证当前实际加载了哪些内容,确保关键信息没有在压缩过程中丢失。

三层记忆架构

第一层:压缩前记忆刷写(Pre-compaction Memory Flush)

在系统执行自动压缩之前,主动将关键信息写入持久化存储。这是防止信息丢失的第一道防线。

第二层:手动保存 + /compact 技巧

不要完全依赖自动机制。通过手动保存关键决策和状态,结合 /compact 命令主动触发压缩,你可以控制哪些信息被保留、以什么形式被保留。

第三层:文件架构设计

这是整套方案的基石。通过设计合理的文件结构来存储 Agent 的长期记忆,让 Agent 在每次启动时都能加载完整的历史上下文。这包括在 AGENTS.md 中定义记忆协议——明确 Agent 应该在什么时候读取记忆、写入记忆、以及如何组织记忆内容。

检索策略:Track A、A+ 和 QMD

记忆存下来只是第一步,更关键的是如何高效检索。这套方案定义了三种检索路径:

  • Track A:基础检索,适用于常规任务
  • Track A+:增强检索,在关键决策点触发更深层的记忆扫描
  • QMD:结构化的查询-记忆-决策流程,确保 Agent 在行动前充分参考历史决策

成本与缓存

记忆系统不可避免地增加 token 消耗。合理利用缓存机制可以显著降低成本——被频繁访问的记忆文件会命中缓存,避免重复计费。

核心要点

  1. Agent 失忆不是 prompt 的问题,是记忆架构的问题
  2. 区分四种记忆类型,针对性设计方案
  3. /context list 验证实际加载的上下文
  4. 三层架构:自动刷写 → 手动保存 → 文件持久化
  5. 建立检索协议,让 Agent 行动前主动查阅记忆

如果你正在用 Claude Code 或类似工具做长周期的项目开发,强烈建议先搭建记忆文件架构(第三层),再逐步完善压缩前刷写和检索协议。记忆管理做得好,Agent 才能真正成为你的长期协作伙伴,而不是每次对话都要从头教起的新手。