通用方法 · 深入

AI 的记忆,一总结就开始丢东西

原话留着 · 索引做在检索上
「把历史压缩成摘要再喂回去」是所有 AI 记忆方案的第一直觉,也是最容易悄悄出错的一步。摘要是有损的:它会替你判断「什么重要」—— 而那个判断通常做在你还不知道将来要问什么的时候。于是半年后你想找的那一句,早在第一次摘要时就被合并掉了。这一页给的是那条反直觉的路:永不总结 —— 原始对话按天逐字留存(七字段一行:时间戳 / 说话人 / 角色 / 类型 / 逐字文本 / 模型 / 会话),检索交给精确匹配(全文索引),向量只在前一条把范围缩小之后才登场,而且时间短语的排位优先于语义相似度。再加一条给长会话用的保险:每轮注入一份极小的话题标记索引,即使发生上下文压缩,模型仍然知道「我们聊到哪了」。
方法 · 一图看懂
1
原始逐字,永不总结 — 对话按天追加进结构化日志,一个字都不删;⛔ 不做「先把这轮总结一下」的动作(那是唯一不可逆的损失点) —
2
字段固定成七样 — 时间戳 / 说话人 / 角色 / 类型 / 逐字文本 / 模型 / 会话;固定字段是后面所有检索的前提 —
3
精确检索打头阵 — 先上全文索引做精确匹配(关键词 / 短语 / 报错原文),它可解释、可复核 —
4
时间先于语义 — 先把范围按时间表达缩小(「上周」「那次改配置之后」),再在其中找相似;⛔ 不让向量相似度排在最前面 —
5
向量只作兜底 — 只有在精确匹配空手而归、且时间范围已知时才启用语义相似;向量是第二顺位,⛔ 不是第一排 —
6
每轮注入话题索引 — 单独维护一份极小的「话题标记」清单并每轮带上,防的是上下文压缩后模型忘了聊到哪 —
摘要到底损失了什么
摘要不是「压缩」,是替你判重要。而判重要必须知道目的 —— 可问题是,你在这个时点还不知道将来会问什么。于是它只能按「当下看起来重要」来合。损失有三类:① 具体数字与原文(「当时那个数是多少」)② 否定与例外(「除了 X 那次」)③ 过程中的失败分支(「试过两条路都不行」)。前两类是事实,第三类是经验 —— 三类都不是废话,但都会被摘要揉掉。
为什么索引要做在「检索」而不是「存储」上
把力气花在压缩存储上,会同时损失可解释性与可复核性 —— 你没法回答「这条结论是从哪句话来的」。反过来,全量照存 + 只优化检索,代价是磁盘(几乎不花什么钱),换来的是:每条答案都能指回原句、每次检索的结果可复现、以及「当初没预计重要」的信息仍然在。存储便宜、判断昂贵 —— 所以别在存储上做有损决策。
为什么时间要排在语义前面
人的回忆顺序是先想起「什么时候」,再想起「说了什么」。「上周那次改配置之后」「上个月评审前」—— 这类表达本身就是最有效的缩小范围手段,而且它精确、免费、不依赖模型。把它排在语义相似度前面有两个好处:① 检索结果稳定(同一句话问两次,拿到同一批)② 向量只需在很小的候选集上算,快且不易跑偏。反过来(向量打头)会让「意思相近但时间不对」的记录挤进来,那正是「AI 记错事」的典型来源。
话题索引防的是「压缩后失忆」
长会话一定会触发压缩。压缩之后,模型对「刚才聊到哪」的感知会突然变粗。补法不是塞更多正文(那正是压缩要解决的),而是注入一份极小的标记清单 —— 几个话题词、当前在第几个,几十个 token 的量级。它不在提供事实,只提供方位:知道自己在哪一段,模型才会去检索而不是硬猜。这是全篇最便宜的一招,也是最容易漏掉的一招。
原理 · 为什么有效
记忆的正确形态:存储零损失 · 检索多路 · 判断留给人。 三条:① 不总结(摘要是唯一不可逆的损失点,而判断「什么重要」的时点必然是错的)② 检索分层(精确匹配 → 时间缩小 → 语义兜底,顺序不可换)③ 时间轴优先于向量(人先想起「什么时候」;顺带让结果可复现)。配一条长会话保险:每轮注入极小的「话题标记」,抗压缩、不提供事实只提供方位。
适用场景
适合:单人单机、长期使用的 AI 助手(工作日志 / 项目决策 / 长期跟进某件事);也适合任何「说过的话以后要能翻出来」的场景(会议、访谈、排障过程)。
⛔ 不适合:一次性临时会话(没积累可言)· 有强合规要求必须删除原文的场景(那要先解决留存政策,再谈记忆)。
自测 · 5 问
我的记忆里,能不能回答「这句话是什么时候说的、原话是什么」?
我上一次想让 AI「总结一下再存」,是出于省钱还是出于真需要?(多半是前者,而省钱应该花在检索上)
我检索时给模型的第一顺位是时间还是语义相似?
长会话被压缩之后,模型还知道「我们聊到哪」吗?(不知道 ⇒ 缺话题索引)
关键结论能不能指回原句?(不能 ⇒ 中间做过有损处理)
怎么上手 · 验证步骤
最小可行版本(一小时内能搭):一个按天切分的逐字日志(`YYYY-MM-DD.jsonl`,七字段)+ 一份全文索引(SQLite FTS5 或任何全文引擎)。使用规则定两条:① 归档动作只追加、⛔ 不改写;② 提问时先做「时间范围解析」(把「上周」这类词先落到具体日期区间),再在区间内做精确匹配;只有精确匹配为空时才走语义检索。先不做向量也可以 —— 光「逐字 + 时间优先」这一半,就能明显减少「记错事」。
验证只看两问:① 随便挑一条上周的结论,能不能在三步内翻出它的原句?② 同一个问题问两次,拿到的记录是否一致?第二问若不一致,说明第一顺位仍是语义相似 —— 把它调到时间之后,再测一次。
[C级]Show HN · lossless-memory(aru-labs · 62 赞 / 27 条讨论 · 单人日用自 2026-07 的实测) [C级]The Context · AI Frontier Daily Briefing 2026-09-22(七字段 JSONL · FTS5 精确检索 · 时间短语排位优先于语义相似度 · 话题标记索引 LLL) [C级]ClawdBytes · New Benchmark Targets Long-Term Memory in AI Agents(2026-09-22:窗口大小不是记忆能力的代理指标 · 长上下文中段信息取不到) 同类:Agent Memory 配置:事件日志 → 投影摘要 → 预动作拦截 · 让AI记住你:跨会话不丢背景
继续往下读
同级:Agent Memory 配置:事件日志 → 投影摘要 → 预动作拦截 随机一篇