KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
持久记忆:先理解它是什么,再亲手把它做出来 — keel 龙骨
Persistent Memory 的参考信息:持久记忆:先理解它是什么,再亲手把它做出来
从一个很具体的问题开始:
为什么昨天的对话结束后,今天的 Agent 仍然应该知道“我希望故障报告使用中文”?
答案不是“把昨天的聊天记录全部塞回来”,也不是“安装一个向量数据库”。持久记忆是一套让 Agent 在不同运行之间保存、查找、纠正和删除信息的机制。它同时涉及数据建模、运行时编排、模型抽取、检索、授权和评估。
这里从概念走到代码。每一步先回答一个问题,再写刚好解决这个问题的代码。不要一开始背框架;先用最小程序看见数据怎样流动,再把它接回 Agent Harness 和本地 Ollama。
这条路径要让你能做什么
学完后,你应该能够:
- 解释聊天历史、上下文、运行状态、检查点和长期记忆的区别;
- 判断一段信息应该留在当前运行,还是值得跨会话保存;
- 设计带有所有者、来源、状态、版本和过期时间的记忆记录;
- 在不依赖模型的情况下完成保存、读取、更新和删除;
- 让 Harness 在运行开始时读取记忆、在运行结束后产生候选记忆;
- 使用 Ollama Structured Outputs 提取候选,而不是让模型直接写数据库;
- 使用 Ollama Embeddings 做有作用域过滤的语义检索;
- 把检索结果转换成有限、可审计且不被当作指令的上下文;
- 处理冲突、遗忘、敏感信息、记忆投毒和服务不可用;
- 用离线数据和端到端对照实验判断记忆是否真正改善任务。
先看全局,再进入细节
flowchart TB
A[本次用户消息] --> B[Harness 运行]
B --> C[读取已有记忆]
C --> D[构建当前上下文]
D --> E[模型回答与工具循环]
E --> F[发现候选记忆]
F --> G[校验、确认与写入策略]
G --> H[记忆存储]
H --> C
图中有两个方向:读路径帮助当前任务,写路径为未来任务留下经过筛选的信息。两条路径的时机和失败处理不同,因此不应该混成一个“记忆函数”。
学习路线
| 章节 | 你要解决的问题 | 代码产出 |
|---|---|---|
| 01. Agent 到底需要什么样的记忆? | 建立运行时数据空间的心智模型 | 两次会话的对照实验 |
| 02. 什么信息值得留下来? | 区分语义、情景、程序性记忆和权威数据 | 记忆分类练习 |
| 03. 一条记忆怎样才算完整? | 设计记录、来源、作用域、状态和版本 | 记录契约草图 |
| 04. 先不用模型,手动完成记忆生命周期 | 先掌握保存、读取、修改和删除 | SQLite 最小实践 |
| 05. 持久记忆怎样接回 Harness? | 找到读写路径在 Agent 运行中的位置 | 运行时流程图与接口 |
| 06. 让 Ollama 提取候选记忆 | 让模型做语义抽取,但不授予写库权限 | Structured Outputs 实践 |
| 07. 相关内容怎样被检索并放进上下文? | 理解 embedding、过滤、排序和预算 | 语义召回与 Context Builder |
| 08. 记忆怎样被纠正、遗忘和保护? | 建立生命周期、安全和失败控制 | 更新、删除与风险实验 |
| 09. 怎样证明记忆真的有用? | 从“看起来记住了”走向可评估系统 | 评估方案与结课项目 |
建议按顺序阅读。每章结尾都给出“你现在应该能解释什么”和下一步为什么出现;不要一开始跳到 embedding 或向量数据库。
把概念落到代码里
代码和运行方式写在 project/README.md 中。它按前面概念逐步累积,不需要一开始通读全部模块。
先运行不依赖模型的示例:
cd courses/foundation/persistent-memory/course/project
python examples/01_store_and_recall.py
python examples/04_build_context.py
$env:PYTHONPATH = "src"
python -m pytest -q
理解读写路径后,再启动 Ollama:
ollama serve
ollama pull qwen3:8b
ollama pull qwen3-embedding:8b
python examples/02_extract_candidate.py
python examples/03_semantic_recall.py
Ollama 的调用依据来自官方文档:Structured Outputs、Embeddings。
遇到术语时
第一次遇到术语时,先查术语地图。“中文定义”帮助建立理解,“工程边界”说明它在项目里不能被滥用的地方。
这条学习线与 Agent Harness 的上下文、状态与记忆章节互相连接:先在 Harness 中理解整次运行如何推进,再在这里深入记忆子系统的读写和治理。
当多个 Agent 共同读取和产生记忆时,工件、作用域和写入门禁仍然必须保持独立;相关协作边界见多 Agent 协作课程。