大模型为什么会"忘事":聊聊上下文窗口
和 AI 聊了一下午,开头定好的约定它忘得干干净净。这不是它变笨了——模型根本没有记忆,所谓"记得"是每轮把整段对话从头重读一遍。把上下文窗口讲成人话:日记本会写满,写满就要撕页或缩写,而埋在中间的字还容易被扫读跳过。
前几天的一个下午,我让 AI 帮我改一批代码。开工前我特意交代:这个项目的函数命名用下划线风格,别用驼峰。它答得好好的,前一个小时也执行得好好的。到了傍晚,它交出来的新函数清一色驼峰——我提醒它,它道歉改正;过了半小时,又是驼峰。
第一反应是”它是不是变笨了”。后来我搞明白了:它没有变笨,它是真的”忘了”。而且这个忘,跟人的忘还不太一样——要理解它怎么忘的,得先接受一个反直觉的事实。
它根本没有记忆
大模型本身不存储任何对话。你和它”聊天”聊了三个小时,模型内部没有留下任何痕迹——它是个无状态的函数,进多少文字,出一段文字,仅此而已。
那它为什么显得记得前文?因为聊天记录是外面的应用替你存的。每次你发一句新消息,应用把从第一句到现在的完整对话打包成一个大文本,整个喂给模型,模型从头”读”一遍,然后接着写下一句。你看到的是”它记得”,实际发生的是”它每轮都重读了一遍全部历史”。
我喜欢用一个比喻:模型像一个每天早上醒来就失忆的人,靠床头一本日记维持连续性。每次要说话之前,它都把日记从头到尾读一遍,然后接着往下写。日记写得越厚,它读得越吃力——而且这本日记有最大页数。
这个最大页数,就是上下文窗口(context window)。

窗口是按 token 计的,而且很能吃
窗口的大小不按字数算,按 token 算。token 是模型处理文字的最小单位,一个英文单词通常一到两个 token,一个汉字往往也要占一到两个。早年的模型窗口只有几千 token,现在动辄几十万,听起来大得用不完。
但实际用起来完全不是这么回事。窗口里装的远不止你打的那几行字:系统提示(应用预置的角色设定和规则)、完整对话历史、你贴进去的文档、AI 读过的每个文件、跑过的每条命令的输出——全都要占地方。让 AI 干的活越重,日记本厚得越快。读一个几千行的代码文件,几万 token 就没了;跑一条输出啰嗦的命令,日志原样进窗口。一个下午的重度使用,塞满几十万 token 一点不难。
写满之后:撕页,或者缩写
日记写满了怎么办?应用层通常有两种办法,对应两种”忘法”。
第一种是硬截断:把最老的内容直接扔掉,给新内容腾地方。相当于把日记的前几页撕了。被撕掉的内容对模型来说不是”模糊了”,而是从未存在过——你三小时前说的话,它不是想不起来,是这一轮压根没读到。最麻烦的是,重要约定往往是开头说的,恰恰最先被撕。
第二种斯文一点,叫压缩:把前半本日记浓缩成一段摘要,放回窗口开头。用过 Claude Code 的人都见过那个 compact 提示,就是它在干这个。压缩保住了大意,但细节没了——摘要里写着”讨论并确定了代码命名规范”,至于定的是下划线还是驼峰?那个具体字眼在浓缩时蒸发了。我那个傍晚遇到的多半就是这种:约定还”在”,但只剩一句没有内容的概括,于是模型按自己的习惯写回了驼峰。
更冤的是:没写满它也会忘
还有第三种忘法,最容易让人误判。有研究专门测过:同一条信息放在长上下文的不同位置,模型的利用率差别很大——放在开头和结尾的记得最牢,埋在中间的最容易被忽略。这个现象有个形象的名字,叫 “lost in the middle”。
也就是说,哪怕窗口还没满、你的话明明白白在日记里,只因为它出现在中间部分,模型也可能扫读而过。像人翻一份一百页的材料:开头认真看,结尾印象深,中间几十页快速翻过去。所以”我明明说过,它怎么当没看见”这种委屈,很多时候不是它没读到,是读到了没当回事。

既然治不了,就换个思路
窗口有限、压缩丢细节、中间被扫读——这些都不是 bug,是这套机制的物理约束。与其反复提醒”你忘了吗”,不如换几个真正管用的做法,都是我自己日常在用的:
**重要约定写进每轮必读的位置。**系统提示、项目里的固定说明文件(比如 Claude Code 的 CLAUDE.md),这些内容每一轮都会被重新塞进窗口,永远”在开头”,既撕不掉也压不到。口头说一遍的约定是易碎品,写进固定文件的约定才是制度。
**一件事一个会话。**别攒马拉松式的长对话——上一个任务的几万 token 残留,对新任务不但没帮助,还占着窗口加速下一轮压缩。事情办完就开新会话,让日记本从薄的开始写。
**让 AI 自己做笔记。**长任务进行到一半,让它把当前结论和关键决定写进一个文件;下次开新会话,第一件事读这个文件。相当于把”记忆”从会挥发的窗口,搬到不会挥发的磁盘上。
**跑腿的活派出去。**读十个文件找一个答案这种事,交给子代理去干,主会话只收结论——我在前一篇里写过这套玩法,本质上就是在保护主会话的窗口。
一点看法
人的工作记忆同样小得可怜,心理学的经典说法是一次只装得下大约七项。但人类没有靠进化出更大的脑子解决问题,而是发明了纸。清单、账本、备忘录——文明的大部分可靠性,建立在”别信脑子,写下来”上。
大模型这几年窗口翻了几个数量级,但我不觉得”无限窗口”会是终点。窗口再大也是工作记忆,工作记忆的宿命就是会满、会丢、会走神。真正的解法和人类一样:把该记住的外化成结构——文件、笔记、固定的约定。会用 AI 的人和用不好的人,差别往往不在提示词写得多精妙,而在于懂不懂在合适的时候,递给它一支笔和一张纸。
评论