工作空间记忆 v2(离线):研究笔记

目标:Clawd 风格的工作空间(agents.defaults.workspace,默认 ~/.openclaw/workspace),其中”记忆”以每天一个 Markdown 文件(memory/YYYY-MM-DD.md)加少量稳定文件(如 memory.mdSOUL.md)的形式存储。

本文档提出一个离线优先的记忆架构——保持 Markdown 作为规范的、可审查的权威来源,同时通过派生索引添加结构化检索(搜索、实体摘要、置信度更新)。

为什么要改变?

当前设置(每天一个文件)非常适合:

  • “只追加”的日记式记录
  • 人类编辑
  • git 支撑的持久性 + 可审计性
  • 低摩擦捕获(“写下来就行”)

但在以下方面较弱:

  • 高召回率检索(“我们关于 X 的决定是什么?""上次尝试 Y 是什么时候?”)
  • 以实体为中心的回答(“给我讲讲 Alice / The Castle / warelay”)而不需要重读大量文件
  • 观点/偏好的稳定性(以及变化时的证据)
  • 时间约束(“2025 年 11 月期间什么是真的?“)和冲突解决

设计目标

  • 离线:无需网络;可在笔记本/Castle 上运行;无云依赖。
  • 可解释:检索的条目应可归因(文件 + 位置)并与推理分离。
  • 低仪式:日常记录保持 Markdown,无繁重的 schema 工作。
  • 增量:v1 仅用 FTS 就有用;语义/向量和图谱是可选升级。
  • Agent 友好:让”在 token 预算内检索”变得容易(返回小批量事实)。

北极星模型(Hindsight x Letta)

两个方向融合:

  1. Letta/MemGPT 风格的控制循环:保持小的”核心”始终在上下文中(人设 + 关键用户事实),其他都在上下文外通过工具检索,记忆写入是显式工具调用。

  2. Hindsight 风格的记忆基底:区分观察到的 vs 相信的 vs 总结的,支持保留/检索/反思,带置信度的观点可以随证据演化。

提案架构(Markdown 权威来源 + 派生索引)

规范存储(git 友好)

保持 ~/.openclaw/workspace 作为规范的人类可读记忆。

建议的工作空间布局:

~/.openclaw/workspace/
  memory.md                    # 小:持久事实 + 偏好(核心级)
  memory/
    YYYY-MM-DD.md              # 日志(追加;叙事)
  bank/                        # "类型化"记忆页面(稳定,可审查)
    world.md                   # 关于世界的客观事实
    experience.md              # agent 做了什么(第一人称)
    opinions.md                # 主观偏好/判断 + 置信度 + 证据指针
    entities/
      Peter.md
      The-Castle.md
      warelay.md
      ...

说明:

  • 日志就是日志。不需要把它变成 JSON。
  • bank/ 文件是策展的,由反思任务产生,仍可手动编辑。
  • memory.md 保持”小 + 核心级”:你希望 Clawd 每次会话都能看到的东西。

派生存储(机器检索)

在工作空间下添加派生索引(不必被 git 跟踪):

~/.openclaw/workspace/.memory/index.sqlite

支撑技术:

  • 用于事实 + 实体链接 + 观点元数据的 SQLite schema
  • SQLite FTS5 用于词法检索(快速、轻量、离线)
  • 可选的嵌入表用于语义检索(仍然离线)

索引始终可从 Markdown 重建

保留 / 检索 / 反思(操作循环)

保留:将日志规范化为”事实”

Hindsight 的关键洞见:存储叙事的、自包含的事实,而非碎片化的小片段。

每个事实带类型前缀(W 世界、B 经历、O 观点、S 观察/摘要)、实体引用(@Peter@warelay)和可选的观点置信度(O(c=0.0..1.0))。

检索:在派生索引上查询

支持词法检索(FTS5)、实体检索、时间检索和观点检索。返回格式应 agent 友好并引用来源。

反思:产生稳定页面 + 更新信念

反思是定期任务(每天或心跳 ultrathink),更新实体页面、调整观点置信度、可选建议编辑 memory.md

观点演化规则:每个观点有陈述、置信度、上次更新时间和证据链接。新事实到达时通过实体重叠 + 相似性找候选观点,小幅更新置信度。

CLI 集成:独立 vs 深度集成

建议:深度集成到 OpenClaw,但保持可分离的核心库。

OpenClaw 已经知道工作空间路径、会话模型和心跳机制,agent 可以直接调用 openclaw memory recallopenclaw memory reflect 等工具。同时将记忆逻辑保持为可测试的库以便复用。

最小有用试点

  • 添加 bank/ 实体页面和日志中的 ## Retain 部分。
  • 使用 SQLite FTS 做带引用的检索(路径 + 行号)。
  • 只在检索质量或规模需要时才添加嵌入。

参考资料

  • Letta / MemGPT 概念:“核心记忆块” + “归档记忆” + 工具驱动的自编辑记忆。
  • Hindsight 技术报告:“保留 / 检索 / 反思”,四网络记忆,叙事事实提取,观点置信度演化。
  • SuCo: arXiv 2411.14754 (2024):“子空间碰撞”近似最近邻检索。