同一段对话,开头答得干净利落,聊到二十轮之后开始自相矛盾甚至答非所问——多数时候不是大模型变笨了,而是上下文被污染了。它每回答一轮,都要把完整的历史记录重读一遍,历史里混进来的错误答案、被否掉的方案和无关闲聊,会跟着当前问题一起进入视野,干扰后面的判断。
一个没有橡皮擦的记忆
大模型在单次对话里没有独立的记忆模块,它的「记忆」就是上下文窗口里的全部文本。你说过的每句话、它答错的每一次、你放弃的每个方向,都会原样留在窗口里,并在之后的每一轮被重新读入。它没有能力把某一段「划掉」,也没有机制判断哪些历史已经作废。
这决定了污染的两个特点。一是只进不出:信息一旦进入窗口,就会一直产生影响,除非对话结束。二是权重不分:作废的方案和有效的结论,在它眼里都是平等的历史文本。理解这两点,很多「越聊越乱」的现象都能解释——你以为是它学偏了,实际是窗口里堆的杂音盖过了正题。
还有一个容易忽略的事实:污染不会因为对话被搁置而消失。今天关掉窗口,下周再打开继续聊,之前堆进去的杂音原样都在。存档的会话恢复后也是整段历史一起读入,所以「放几天再聊」解决不了问题,能解决它的只有重开。
三类污染源与识别信号
第一类是试错残留。你让它写过三个方案、否掉了两个,剩下一个的思路仍会被废案牵引,回答里时不时绕回被否掉的方向。第二类是错误信息。它前面某轮答错了,你随口回了句「哦,这样」,这句错话就以对话事实的身份留在历史里,持续影响后面的推理。第三类是话题混杂。一段对话先聊 A 项目再聊 B 项目,两边共用的名词会让它把细节串在一起,比如把 A 的预算数字接到 B 的方案里。
| 污染来源 | 识别信号 | 处理动作 |
|---|---|---|
| 试错残留 | 回答反复绕回已经否掉的方案 | 新开对话,只带最终结论进入 |
| 错误信息 | 后续推理建立在前面某句错话上 | 当场指出并要求修正,关键任务重开 |
| 话题混杂 | 不同事项的细节互相串场 | 一事一对话,换话题时显式声明 |
| 窗口接近上限 | 开始丢细节、前后矛盾、重复提问 | 分段重开,结论人工摘录带走 |
三个应对动作
动作一,任务换了就重开。这是唯一可靠的处理方式,别指望它自动「翻篇」。动作二,显式声明作废。需要在原对话里继续时,把作废的部分说清楚:「前面那个方案不用了,后续回答不要参考。」这能减轻影响,但因为那段文字仍在窗口里,效果不彻底。动作三,结论固化。聊清楚之后让它把结论整理成一段独立文字,新对话直接带着这段开始,历史包袱全部留在旧对话里。
历史越长,每轮要处理的 token 越多,等待时间也随之变长,这在生成速度的机制里有专门解释。另外,窗口容量和处理质量跟模型本身的规模有关,具体差异可以参考参数量不同带来的能力差距;免费版通常窗口更小、更容易触发截断,对比见免费版和付费版的区别。
这些情况不算污染
并非所有「越聊越差」都归咎于污染。提问本身越来越模糊、背景信息从头就没给够,这类问题重开对话也解决不了,得先把问题本身写清楚。模型能力不足导致的错误(比如复杂推理一直出错),换新对话同样会错,那是模型的问题,与历史无关。判断方法很简单:换个新对话重问一遍,新对话里还错,就不是污染。
上下文污染速查
- 任务换了就重开,别让旧对话拖累新问题
- 错误答案当场纠正,别让错话留在历史里
- 聊清楚的结论固化成一段话,带进新对话
- 一段对话只办一件事
- 新对话重问还错,说明是模型问题而非污染
三个常被问到的问题
- 让它「忘掉前面说的」有用吗?:它可以在回答里选择忽略,但那段文字仍会在每轮被读入窗口,干扰无法根除。要求彻底清除,只有重开对话这一条路。
- 长对话和多次短对话,哪个消耗更大?:单看 token 总量,短对话反复粘贴背景可能更费;但短对话的答案质量更稳。重要任务建议用短对话加固化结论,普通闲聊无所谓。
- 固化结论要写成什么样?:三样东西——背景约束、已达成的决定、悬而未决的问题。一段话控制在两百字上下,太长等于把污染带进新对话。


