Skip to content

持久化记忆

龙山灵码的记忆系统用于保存项目规则、历史事实和会话恢复信息。它和 checkpoint、上下文重建一起服务于长任务连续性。

为什么记忆对长任务重要

在真实仓库里,长任务会遇到这些问题:

  • 下一轮是否还记得项目约束
  • 下次恢复时是否还知道做到哪里
  • 子智能体做过的调查是否能回到主任务里
  • 长会话接近上下文上限后是否还能继续

龙山灵码把记忆、checkpoint 和上下文重建放在同一条路径上,就是为了解决这些问题。

记忆的三个层级

层级适合保存什么
global个人偏好、跨项目工作习惯
projects/<project-id>架构约束、项目规则、长期事实
sessions/<session-id>临时笔记、checkpoint、任务过程

这三个层级分别承担用户级、项目级、会话级信息,不要求所有内容都堆在一个文件里。

记忆与 checkpoint 如何协同

在龙山灵码里,长期连续性通常按下面的顺序发生:

  1. 会话启动时加载项目记忆与必要的全局记忆
  2. 任务进行中通过 /memory 搜索已有知识,必要时写入新事实
  3. 当上下文压力增大时,由 checkpoint 机制写入 checkpoint.mdnotes.md 和任务进度
  4. 会话恢复时,把记忆、checkpoint 和最近必要消息重新组合成可继续工作的上下文

因此,记忆负责“长期知道什么”,checkpoint 负责“当前推进到哪里”。

目录结构

text
~/.local/share/swust-code/memory/
  global/
    MEMORY.md
  projects/
    <project-id>/
      MEMORY.md
      facts/
        <fact>.md
  sessions/
    <session-id>/
      checkpoint.md
      notes.md
      tasks/
        <task-id>/
          progress.md

这里有两个值得注意的设计:

  • 项目事实可以按 one-fact-per-file 方式分开保存
  • MEMORY.md 支持 @path 导入,便于按专题组织内容

这让项目知识不会越来越难维护。

搜索与沉淀

龙山灵码会把记忆文件同步到 SQLite FTS5 索引,用于全文搜索。对用户来说,更重要的是这带来了两个日常动作:

  • /memory <查询>:在已有长期知识中检索
  • /dream / /distill:把近期工作沉淀成更稳定的项目资产

其中:

  • /dream 更偏向整理项目知识
  • /distill 更偏向提炼重复工作流

两者都服务于“下次不要重新解释”。

更适合写进记忆的内容

下面这些内容通常值得进入项目级记忆:

  • 稳定的架构决策
  • 常见陷阱和边界条件
  • 项目约定、目录规则、命名约束
  • 重复出现的排障结论

而下面这些内容通常只适合停留在会话层:

  • 一次性临时尝试
  • 尚未确认的猜测
  • 很快会失效的局部观察

记忆文件应优先保存适合长期复用的内容,而不是保存所有临时观察。