大家好,我是邵奈一,一个爱折腾的实战派技术博主。
文章对你有帮助是我的荣幸,欢迎评论区交流。
0x00 教程内容
上篇我把"记忆长什么样"立了一把尺子:基础回忆 → 多会话检索 → 主动服务,三层标尺。尺子有了,接下来要动手存了------可记忆不是往仓库里一倒就完事。
存,有"存得对"的问题:同一条信息,存成一行流水账,还是存成带背景的档案卡,效果天差地别。管,有"管得住"的问题:记忆越攒越多会爆炸、越攒越敏感会泄密。
这一篇把"存"和"管"拆开讲:先讲四种存法(从记账本一路演进到档案卡),再讲三件管理活(用框架管、压掉冗余、挡住泄密)。
0x01 存之前,先分清三层
动手存之前,先搞清楚记忆该往哪放。按"活多久、给谁看"分三层:

轨迹是单次会话的流水账,用户长期记忆是跨会话提炼出的档案,业务状态是任务走到哪一格的进度牌。这篇要讲的"用户记忆",主要指中间这一层------用户长期记忆。
0x02 四种存法:从记账本到档案卡
同一条信息,可以存成不同"粒度"。从简到繁有四种格式(见下图):

细节对比如下:

核心洞察一句话:同一条信息,在不同场景下可能是完全不同的意思,脱离情境就理解错。
所以工程上的取舍很实在:关键且少量 的数据,用 Advanced JSON Cards 把检索性拉满;大量且非关键的对话事实,用 Simple Notes 控成本;多数生产系统两种混着来。
再补一个"存什么"的维度。认知科学把记忆分三类,正好能对上 Agent 的场景:

到这里,"放哪里(层次)、怎么存(格式)、存什么(类型)"三套体系就齐了,它们互不冲突、可以自由组合------一条"偏好靠窗"的语义记忆,用 Simple Notes 存进用户长期记忆,完全成立。
0x03 进阶:把记忆当代码写
前面四种格式,本质都是文本。文本擅长召回单条事实,却有个短板:聚合、冲突检测、约束执行这些"算出来的"活,只能丢给 LLM 去心算。
有一种更稳的存法叫 User as Code :把用户状态做成带类型的数据对象 ,把规则写成普通函数。表示和推理用同一种可验证的介质,该算的交代码算,不靠模型心算。
它借鉴了数据库那句老话------"预写日志 + 检查点":会话结束先把事实追加 到只增不改的日志里(保留原始证据),再定期从完整日志重建带类型的状态(拿到可查询、可执行的派生态)。
这类确定性函数干的就是这些活,比如聚合跨年旅行次数:
python
count(trip for trip in state.trips
if trip.is_international and year(trip.departure_date) == 2025) # => 2
同样的思路还能干更多:交叉比对当前用药与过敏史、发现同药类冲突;给国际航班检查护照有效期不足 180 天就预警。这些交给代码,比让模型"读一遍再心算"可靠得多。
一句话收束:文本记忆擅长"召回",代码记忆擅长"算准"------真正复杂的个性化,往往两者都要。
0x04 存完要管:框架、压缩与脱敏
存法选好了,接下来是三件"管"的活。
用框架管:两个开源项目的取舍。 有一个值得借鉴的演进来自 Mem0------一个做"个性化 AI 记忆层"的开源项目。它最有意思的一点是:消歧这件事,从"写入时"挪到了"检索时"。

这个转向很启发人:与其在写的时候急着"消除冲突"(还容易删错),不如把不同说法的原始事实都留着、带上时间,等查的时候再按时间判谁最新。
另一个项目 Memobase 把重心偏到另一边:它自称"为用户记、不为 Agent 记",聚焦"用户画像"这一具体形态------把用户拆成一堆可配置的槽位(按"主题---子主题"两级组织,如 basic_info→姓名、interest→兴趣偏好),再配一条"事件记忆"时间线,回答"我们上次聊预算是什么时候"。为省成本,它给每个用户配一个缓冲,攒够一批再批量提取,摊薄 LLM 调用。
压缩整理,防止记忆爆炸。 简单累积会越存越多、越存越糊。三个动作:重要性评分筛选(按访问频率、时间衰减、情感强度、信息独特性给每条打分,低于阈值的压缩或删除)、聚类摘要(相似记忆归组、每组出一条代表,原始细节归档到二级存储)、抽象泛化(从具体情景里提规律,升成语义或程序记忆)。
日志脱敏,防止泄密。 记忆越全越敏感。一个可行的做法是用本地小模型先做 PII 检测与脱敏------例如通义千问 Qwen3 的 0.6B 版本,消费级设备的 CPU 就能跑,能识别身份证号、银行卡号这类结构化信息,也能识别"我的密码是 abc123"这种自然语言里的敏感表达。坚持本地不联网的模型,本身就是为了"连脱敏这一步都不把原始日志送上云端"。
0xFF 总结
- 存前先分层:轨迹 / 用户长期记忆 / 业务状态,讲的"用户记忆"主要指中间层。
- 四种存法从简到繁:Simple Notes → Enhanced Notes → JSON Cards → Advanced JSON Cards,核心是"同一条信息在不同场景含义不同",关键少量用高级格式、海量非关键用简单格式。
- User as Code 把记忆当代码写:带类型状态 + 确定性函数,算准不靠心算。
- 存完三件管的事:用框架管(Mem0 把消歧从写入挪到检索、Memobase 聚焦用户画像)、压缩防爆炸、脱敏防泄密。
记住一句:会存只是第一步,会管才算记得住。
邵奈一 三百篇原创沉淀,十万+读者同行。感谢你的阅读,咱们下篇接着聊。