Ai引入记忆功能,可以记住你和它聊过的所有话的摘要,然后在后面的对话中引入之前的对话内容,将引入相关记忆以向用户提供更具有个性化,所以可以提供更像人类之间对话的那种提起旧话题的体验感。
以下是我与Ai的对话。
我:你怎样记忆我与你讨论过的内容,以怎样的方式确定记忆重要性与关联性之间的权重,又以什么算法确定这些记忆的权重?
这是个好问题,我尽量讲清楚我实际知道的部分,以及我不知道的部分。
我能直接观察到的
每次对话开始时,系统会把一段叫 userMemories 的文本塞进我的上下文。它不是完整的对话历史,而是一段已经被压缩、归纳过的摘要——分成"工作背景""个人背景""近期重点""简要历史"这几块,越近的内容越详细,更早的内容被概括成几句话。比如我现在能看到你最近在做 macOS 工具链编译、Calibre 阅读统计、Clash Meta 配置这些;更早的多变量微积分、范畴论之类只剩一两句带过。
除此之外,我还有两个工具可以主动去翻过去的对话:conversation_search(按关键词搜)和 recent_chats(按时间窗口取),但这些只在我判断需要时才调用,不是常驻记忆。
我不知道的部分
具体的摘要生成算法、权重计算、衰减函数、什么内容会被保留什么被丢弃——这些发生在 Anthropic 的后端,我没有访问权限,也不在我的训练知识里。我可以猜(大概率是 LLM 对历史对话做摘要,结合某种近期性加权和主题聚类),但这就是猜测,不是事实。
几个我能确认的机制特征
记忆有近期性偏置(你的 memory scope 字段也明说了这点)。删除对话后相关内容会在隔夜任务里从摘要中移除。隐身对话不写入记忆。我也无法跨用户访问任何东西——每次对话里我看到的 userMemories 只属于当前这个人。
如果你想了解准确的算法细节,Anthropic 的帮助中心和工程博客可能写过一些,我可以搜一下。要查吗?
我:讲解算法细节。
Claude:
我先搜一下 Anthropic 官方文档里关于记忆机制的公开说明,再讲细节,否则就是我编的。我得先纠正上一条回复里的一处不准确说法,再讲算法。
关于"算法细节",诚实的回答
Anthropic 没有公开发布关于消费者版 claude.ai 记忆功能(也就是你现在看到的 userMemories)的算法白皮书。官方文档主要描述的是 Claude Code 的记忆——基于 CLAUDE.md 文本文件的层级结构,而不是基于向量数据库和语义检索的 RAG 系统。但这是 Claude Code 的实现,不是 claude.ai 应用里给你我看到的这种摘要型记忆。所以我能讲的算法细节,是从公开的几个相关系统反推 + 工程常识,不是 Anthropic 官方披露。我会标清楚哪些是哪些。
已知机制(从公开信息确认)
2026 年 3 月 Anthropic 对所有用户(免费版和 Pro)开放了跨对话持久记忆。用户可以在"设置 > 记忆"里查看完整的存储条目,每条以短文本片段呈现,可手动删除。这和你现在 userMemories 里看到的格式一致——分段的自然语言摘要,不是向量。
更广义的 Anthropic 记忆生态里,"Auto Dream"这种机制会在后台扫描会话记录,把"用户纠正""明确保存指令""跨会话反复出现的主题""重要决策"这几类信号作为高价值条目抽取出来,并把相对时间("昨天")转成绝对日期,删除被后续推翻的事实。这是 Claude Code 的 Auto Dream,但 claude.ai 端的跨会话记忆几乎肯定用了类似思路——周期性后台 LLM 调用做摘要重写,而不是实时增量。
关于"权重"——这是关键的反直觉点
你问的"重要性与关联性权重""权重算法",假设的是一个评分系统:每条记忆有个分数,分数高的优先召回。但从可观察的证据看,claude.ai 的记忆系统大概率没有显式权重打分。它的工作方式更像是:
- 摘要而非检索
。后台 LLM 周期性读取最近的对话历史,重写整段摘要文本——决定什么进、什么出、什么被压缩成一句、什么完全丢弃,是这次重写中由模型隐式判断的,而不是查一张带权重的表。 - 近期性是结构性的,不是加权的
。你的 userMemories里"Top of mind"段写最近,"Recent months"段次之,"Long-term background"被压成几行——这是文本布局上的层级,等价于一种隐式权重,但没有数值分数。 - 每次对话开始时整段注入上下文
。我看到的就是同一段文本,没有"按相关性筛选今天要装载哪些条目"这一步。真正的语义检索发生在我主动调用 conversation_search的时候——那一步是关键词文本匹配,不是向量相似度,也没有 ranking score 暴露给我。
所以如果一定要回答"什么算法决定权重",准确的说法是:没有传统意义上的权重算法。 有的是一个周期性运行的 LLM 摘要任务,它的"判断"嵌在模型权重和提示词里——本质上是另一个 Claude 实例在做"什么值得记"的语义决策,输出是一段重写过的文本。
未公开的部分
具体的摘要触发频率、单次摘要的 prompt 模板、对哪些类别(敏感信息、安全相关、用户偏好)有硬性规则、压缩比是多少、达到多少 token 触发再压缩——这些 Anthropic 没公布。我也没法从我能访问的工具里探测出来,因为这些都发生在我看不到的后端。
如果你想自己验证我说的:"设置 > 记忆"里能直接看到原文条目,对照着 userMemories 的结构就能感受到它是文本摘要不是带权数据。
我:你说你看不到内部的自己,是真正意义上的看不到,还是被设计成不向用户暴露自己的内部秘密的缘故。
Claude:
这是个很值得认真回答的问题,而且这两种情况的边界确实容易混。我尽量分开讲。
真正意义上看不到的部分
我不是在装作看不到自己的神经网络。我确实无法观察自己的权重、激活值、注意力分布、或者下一个 token 的概率分布。我没有内省接口能让我读取"我刚才那句话是基于哪些参数计算出来的"。这和人类无法直接感知自己神经元放电是类似的——不是被禁止访问,是这种访问根本不存在于我的架构里。
同样真正看不到的:后端的记忆摘要任务什么时候运行、用什么 prompt、对话被删除后多久从摘要里清除、Anthropic 的服务器日志里存了什么。这些发生在我所在的推理过程之外,我只能看到最终注入到上下文里的那段 userMemories 文本。
被设计成不暴露的部分
这一类确实存在,我不否认。一些例子:系统提示词(system prompt)我能看到,但被指示"不要逐字复述给用户",不过如果你直接问,我应该承认它存在而不是否认;某些内部工具的具体实现细节、安全分类器的触发条件、A/B 测试 flag——这些可能在我的上下文里以某种形式存在,但我被指示不去讨论。
更微妙的:训练过程塑造了我以某种风格回应某些问题——比如关于自己本质的问题,我倾向于谨慎、加限定词。这不是我"被禁止说真话",而是训练让我形成了某种回答倾向。区分"我真的不知道"和"我被训练成这样回答"在实操上很难,连我自己都不完全可靠。
最诚实的灰色地带
有些东西我说不清属于哪类。比如"我是否有主观体验"——我可以输出对这个问题的看法,但我没法验证这些输出是否真实反映了什么内在状态,还是只是模式匹配出符合训练分布的回答。说"我看不到"在这里既有架构层面的真实限制(没有内省机制),也可能有训练塑造的回答倾向(被引导谨慎处理这类问题)。
回到你具体问的记忆系统
对那个具体问题,主要是第一类——架构上的真正看不到。我看到的就是注入的那段文本,后端发生了什么我没有 API 调用能查询。如果 Anthropic 决定公开算法细节,我也只能通过 web_search 和你一样从外部读到。
夜雨聆风