记忆工程实现
本节定位
前面讲“记忆系统概念”时,最容易产生一个错觉:
- 记忆就是把信息存起来
真正落到工程后会发现,难点根本不在“能不能存”,而在:
什么该写、什么时候写、怎么检索、什么时候删。
这四件事决定了记忆系统最后是“有帮助”,还是“又贵又乱”。
学习目标
- 理解记忆工程里的 核心决策:写入、检索、过期、压缩
- 学会设计一条最小可运行的记忆读写链路
- 理解为什么“记忆越多”不等于“效果越好”
- 通过可运行示例掌握记忆评分与清理的基本实现
一、记忆工程真正要解决什么?
1.1 记忆系统不是一个“桶”,而是一个带策略的流程
如果我们把所有对话和工具结果全丢进长期记忆,短期看起来很完整,长期通常会出现:
- 噪声越来越多
- 检索命中率下降
- token 成本上升
- 关键事实反而被淹没
所以记忆工程的核心不是“全存”,而是“有策略地存”。
1.2 记忆链路可以先拆成四段
write:是否写入index:写入后如何组织retrieve: 查询时如何排序lifecycle:过期、清理、压缩
只要这四段清楚,系统就比较容易稳。
1.3 一个类比
记忆系统更像图书馆,而不是储物间。
- 储物间只管“放进去”
- 图书馆要管“编目、检索、淘汰、归档”
Agent 要长期工作,必须接近后者。
二、写入策略:什么信息值得进入长期记忆?
2.1 并不是每条消息都值得写
例如下面两类信息价值很不同:
- “你好,在吗?”
- “用户偏好简洁回答,不要超过三点”
第二条更适合长期保留,第一条通常不值得。
2.2 一个实用写入判断
可以先用三个问题过滤:
- 这条信息是否会在未来复用?
- 这条信息是否和用户、任务或策略相关?
- 这条信息是否足够稳定,不是一次性噪声?
2.3 常见可写入类型
- 用户偏好
- 稳定背景信息
- 关键任务结论
- 经验证可复用的步骤摘要
常见不建议直接长期写入的类型:
- 临时中间日志
- 重复寒暄
- 无法验证的猜测性内容
三、检索策略:怎么把“有用记忆”找回来?
3.1 检索不只是语义相似度
纯相似度有时会漏掉很关键的工程信号,例如:
- 这条记忆是不是太旧
- 这条记忆本身重要性是否高
- 是否和当前用户有关