持久化记忆
龙山灵码的记忆系统用于保存项目规则、历史事实和会话恢复信息。它和 checkpoint、上下文重建一起服务于长任务连续性。
为什么记忆对长任务重要
在真实仓库里,长任务会遇到这些问题:
- 下一轮是否还记得项目约束
- 下次恢复时是否还知道做到哪里
- 子智能体做过的调查是否能回到主任务里
- 长会话接近上下文上限后是否还能继续
龙山灵码把记忆、checkpoint 和上下文重建放在同一条路径上,就是为了解决这些问题。
记忆的三个层级
| 层级 | 适合保存什么 |
|---|---|
global | 个人偏好、跨项目工作习惯 |
projects/<project-id> | 架构约束、项目规则、长期事实 |
sessions/<session-id> | 临时笔记、checkpoint、任务过程 |
这三个层级分别承担用户级、项目级、会话级信息,不要求所有内容都堆在一个文件里。
记忆与 checkpoint 如何协同
在龙山灵码里,长期连续性通常按下面的顺序发生:
- 会话启动时加载项目记忆与必要的全局记忆
- 任务进行中通过
/memory搜索已有知识,必要时写入新事实 - 当上下文压力增大时,由 checkpoint 机制写入
checkpoint.md、notes.md和任务进度 - 会话恢复时,把记忆、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更偏向提炼重复工作流
两者都服务于“下次不要重新解释”。
更适合写进记忆的内容
下面这些内容通常值得进入项目级记忆:
- 稳定的架构决策
- 常见陷阱和边界条件
- 项目约定、目录规则、命名约束
- 重复出现的排障结论
而下面这些内容通常只适合停留在会话层:
- 一次性临时尝试
- 尚未确认的猜测
- 很快会失效的局部观察
记忆文件应优先保存适合长期复用的内容,而不是保存所有临时观察。