KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA

持久记忆:先理解它是什么,再亲手把它做出来 — keel 龙骨

Persistent Memory 的参考信息:持久记忆:先理解它是什么,再亲手把它做出来

从一个很具体的问题开始:

为什么昨天的对话结束后,今天的 Agent 仍然应该知道“我希望故障报告使用中文”?

答案不是“把昨天的聊天记录全部塞回来”,也不是“安装一个向量数据库”。持久记忆是一套让 Agent 在不同运行之间保存、查找、纠正和删除信息的机制。它同时涉及数据建模、运行时编排、模型抽取、检索、授权和评估。

这里从概念走到代码。每一步先回答一个问题,再写刚好解决这个问题的代码。不要一开始背框架;先用最小程序看见数据怎样流动,再把它接回 Agent Harness 和本地 Ollama。

这条路径要让你能做什么

学完后,你应该能够:

先看全局,再进入细节

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 协作课程。

进入 keel 阅读