openclaw 记忆的顺序和作用机制

Feb 7, 2026

2026-02-07

今日关键结论(建设性)

  • OpenClaw 的 session start 会注入工作区 bootstrap 上下文:默认建议读取 memory/今天 + memory/昨天MEMORY.md 只在 main/private session 加载。
  • 这一步是“读文件→注入(可能截断)”,不是向量检索;不会全量加载 memory/*.md 历史。
  • memory_search / recall 才是“按需检索注入片段”的链路;设置 memory.backend="qmd" 主要优化这条检索链路(BM25+向量+重排),而不是优化 session start 注入。
  • 不触发 recall 时,QMD 多数情况下不会直接影响回答;触发 recall 时 QMD 才可能降低无关片段/减少注入长度,从而省 token。
  • token 的主要开销来自“最终注入到 prompt 的记忆片段长度/数量”,而不是 backend 名字。

决策 & 理由

  • 采用“分层记忆”策略:
    • 日常建设性内容写进 memory/YYYY-MM-DD.md(短、要点化,供 session start 读入)。
    • 跨日/月仍成立的稳定偏好/事实写进 MEMORY.md(长期记忆;也更适合被 QMD 索引检索)。
    • 避免把大量闲聊/原文全文塞进 memory 文件,以免拖慢检索、增加噪音与 token。

偏好/默认值变更

  • 每天的 memory 文件只记录“有意义/建设性”的要点;一般内容按日期留存但不扩展成巨长日志。

进行中(下一步)

  • 以后遇到“需要回忆/查历史”的问题:优先用 memory_search(QMD)按需召回片段,而不是扩大 session start 注入。

风险/踩坑记录

  • 可能出现“启动注入 + 检索注入”重复导致 token 增加:需要控制 daily memory 的长度,并在 recall 侧限制 topK/截断,必要时做去重策略。

clinch