Skip to content

记忆系统

记忆的本质

OpenClaw 的记忆是工作区中的 Markdown 文件。这是唯一可靠的持久化方式——只存在上下文窗口中的内容,在会话重置后消失。

"如果你希望 Bot 记住某事,让它写进文件。"

记忆文件布局

工作区(默认 ~/.openclaw/workspace)中有两类记忆文件:

每日日志(短期记忆)

memory/
  2026-03-07.md   ← 今天
  2026-03-06.md   ← 昨天
  ...
  • 追加写入(append-only)
  • 每次会话开始时自动读取今天和昨天的日志
  • 适合记录当天发生的事、临时任务进展等

长期记忆文件

MEMORY.md
  • 精心整理的持久记忆
  • 只在主会话(私信)中加载,不在群组上下文中加载
  • 适合记录偏好、规则、重要事项等

何时写入记忆

情况写入位置
决策、偏好、持久事实MEMORY.md
当天的笔记、任务进展memory/YYYY-MM-DD.md
"记住这个"立即写盘,不要只放上下文

记忆工具

Agent 通过两个内置工具操作记忆文件:

  • memory_search:对索引片段进行语义检索
  • memory_get:读取特定 Markdown 文件/行范围

当文件不存在时(如今天还没有日志),两个工具都会优雅降级——返回空文本,而不是报错。

自动记忆刷新(上下文压缩前)

当会话接近自动压缩时,OpenClaw 触发一个静默 Agent 轮次,提醒模型在上下文被截断前写入持久记忆。这个轮次通常以 NO_REPLY 结束,用户不可见。

json5
{
  agents: {
    defaults: {
      compaction: {
        reserveTokensFloor: 20000,
        memoryFlush: {
          enabled: true,
          softThresholdTokens: 4000,
          systemPrompt: "Session nearing compaction. Store durable memories now.",
          prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with NO_REPLY if nothing to store.",
        },
      },
    },
  },
}

语义记忆搜索(高级)

通过嵌入模型对记忆内容进行语义检索:

json5
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "gemini",
        model: "gemini-embedding-001",
        remote: {
          apiKey: "${GEMINI_API_KEY}",
        },
        extraPaths: ["../team-docs", "/srv/shared-notes"],
      },
    },
  },
}

extraPaths 允许搜索工作区以外的共享文档。

禁用记忆插件

json5
{
  plugins: {
    slots: {
      memory: "none",
    },
  },
}

记忆使用最佳实践

  1. 明确要求 Bot 写入:说"记住这个"或"把这个写进记忆"
  2. 定期整理 MEMORY.md:删除过时内容,保持精简
  3. 利用日期日志:适合记录进行中的任务状态
  4. 群组上下文无长期记忆:群组消息不加载 MEMORY.md,适合无状态的群助手