ai for designersApril 25, 202610 min read

上下文窗口详解,AI 长对话为何越来越差

上下文窗口究竟是什么,为什么长时间的 AI 对话在达到硬性限制之前就会变慢、失去精准度,以及告诉你何时继续、压缩或重新开始的百分比阈值。

By Boone
XLinkedIn
llm context window efficiency

大型上下文窗口并没有解决长对话问题,只是把它移走了。

一个能容纳一百万 token 的模型,在单次会话中塞入的内容越多,速度越慢、成本越高、精准度越低。硬性限制很少是真正的瓶颈,软性拖累才是。长对话会悄悄退化,大多数操作者只有在答案失准、成本失控时才察觉。

这篇文章是实用版本。上下文窗口究竟是什么,长会话为何在崩溃之前就开始变差,以及一张你今天就能截图使用的百分比表格。

上下文窗口是工作记忆

上下文窗口是 AI 模型在单次对话中能够主动考量的对话内容、文件和指令的总量。窗口内的一切都算在内:你的消息、模型的回复、系统提示、附件、检索片段、工具输出。只要模型需要"看到"才能作答的内容,都存在于窗口之中。

一个实用的心理模型:上下文窗口是 RAM,不是存储。它快速且有限。会话结束的瞬间,它就会刷新。除非你把内容保存到某个持久化的地方,否则它不会跨对话记住任何东西。

Token 才是真正的计量单位

Token 是模型实际计数的单位,不是字符或单词。一个简短的英语单词通常是一个 token,较长的单词会被拆分成两三个,而代码、标点符号和非英语文本往往比预期消耗更多 token。大多数现代模型按每百万输入 token 和每百万输出 token 收费,输入价格远低于输出,但在长会话中会快速累积,因为整个历史记录在每次对话时都会随行。

关于 token,如果你只记住一件事,请记住这个:模型在每次对话时几乎都会重新阅读整个对话历史。长历史记录并不免费。

大上下文不等于无限对话

200K、500K 或 1M token 的窗口是一个预算,不是许可证。模型在技术上能考量所有内容,但实际性能并非在整个范围内保持平稳。延迟随输入大小增加,成本随输入大小增加。而质量,那个没人愿意承认的部分,也是先升后降。大多数模型在会话开头和结尾附近密切相关的内容上表现最佳,在需要费力翻找才能回答最新问题的密集中间段落上表现最差。

更大的窗口提高了上限,却不能提高下限。

长对话每次都在消耗更多

随着会话增长,模型必须重新处理更多上下文,这会增加 token 用量、延迟和成本。这是机械性的,不是哲学性的。你发送的每条新消息都携带着之前的整个对话。

为什么输入 token 会滚雪球

一个只有三来三往的简短对话,每次对话可能消耗几千个输入 token。一个持续两小时、附带文件、生成截图和引用代码的设计评审会话,轻易能在你注意到之前就突破每次对话 5 万个输入 token。到这类会话的第 40 轮时,你花在重读已发生内容上的成本,已经超过了生成下一个答案的成本。

数学是残酷但简单的。如果一个会话已经积累了 8 万个 token 的历史记录,每次新对话都要为这 8 万个输入 token 付费,再加上生成的内容。这个成本在会话剩余的每次对话中复利递增。

为什么工具密集型会话增长更快

工具调用会加速这个滚雪球效应。每次模型调用工具并获得响应,工具输出就会加入上下文,并在会话剩余时间内一直存在。长文件读取、大型搜索结果、多文件差异比较、命令输出和图像生成,都会落入窗口并留在那里。

工程和分析会话耗尽上下文速度最快。一个读取十几个文件、运行几个测试、检查日志的编程会话,甚至在实际工作开始之前就能耗尽 20 万 token 窗口的 60%。等到真正的任务到来时,模型已经在一个拥挤的房间里导航了。

体素图,展示 AI 对话中输入 token 在每次对话中滚雪球的过程
体素图,展示 AI 对话中输入 token 在每次对话中滚雪球的过程

质量在触及硬性限制之前就已下降

真正的问题不仅仅是耗尽上下文,而是在此之前逐渐失去精准度。

软性退化与硬性失败

硬性失败是显而易见的。会话拒绝新输入或截断消息。你会立即注意到,并且清楚地知道发生了什么。

软性退化是无声的。模型仍然会作答,只是答案越来越差。它开始重复早期的错误。它丢弃了你十条消息前设置的约束条件。它抓住错误的细节一路跑偏。它开始在本该直接的地方犹豫对冲。会话感觉不对劲,但技术上没有任何东西真正崩溃。

软性退化是更昂贵的失败模式,因为它更难被发现。

陈旧的上下文如何污染好的工作

上下文不仅仅是体量,更是信噪比。一个充满相关细节、问题陈述清晰的专注会话,与一个包含三个被放弃的想法、两个已经过时的约束条件,以及一段关于完全不相关事物的题外话的杂乱会话,表现截然不同。

模型在试图提供帮助时,会对窗口中的所有内容赋予权重。如果你在会话中途改变了方向,却从未明确退出之前的方向,那两个版本都还在房间里相互竞争影响力。模型的答案开始在两者之间折中妥协,而那种折中几乎不是你想要的。

混乱的上下文比庞大的上下文更糟糕

一个专注在 60% 的会话,通常比一个充满死路和无关工作的混乱 30% 会话要好。窗口的填充程度,远不如窗口里装的是什么重要。

为什么频繁切换话题会降低效率

每次话题切换都会留下残留。之前的话题不会从上下文中删除,只是不再是焦点。模型在每次后续对话中仍然会考量它。如果你在一个会话中于三个不相关的任务之间来回切换,模型实际上被要求同时兼顾三者,即使你问的只是其中一个。

这会以混合输出的形式体现出来:代码解决了错误的问题,因为模型有一部分还在想着你二十条消息前讨论的营销文案;布局建议悄悄继承了你顺口提到的另一个品牌的约束条件。

为什么每个工作流各用一个会话是最优解

大多数重度用户最终都会收敛到同一个最简洁的模式:每个工作流一个会话。品牌工作在一个对话里,工程工作在另一个,策略或规划在第三个。切换工作流意味着开启新会话,而不是在同一个会话中跳转上下文。

这不是在搞形式主义,而是在给模型为每种工作提供一个整洁的空间。开启新会话的成本几乎为零,把错误的上下文拖进决策的代价却很高。

使用这些上下文百分比阈值

大多数人不需要完美的遥测数据,他们需要实用的阈值,告诉他们什么时候继续,什么时候重置。这是那张值得截图的表格。

上下文使用量状态感受如何该做什么
0% 到 40%绿灯答案精准,对话流畅,成本低廉继续,这是高效区间
40% 到 60%健康仍然精准,成本在悄悄攀升保持专注,避免切换话题
60% 到 75%警告对话变慢,偶有漂移,重读增多添加新工作前先压缩或总结
75% 到 85%拖累延迟明显,错误重现,对冲增多收尾当前任务,下一个任务开启新会话
85% 及以上重置截断风险,质量急剧下降,成本不经济压缩成计划,然后重置
体素上下文百分比仪表盘,带有绿、黄、橙、红色区间和对应操作标签
体素上下文百分比仪表盘,带有绿、黄、橙、红色区间和对应操作标签

0% 到 40% 是绿灯区

把这里当成一个全新的厨房,放手去做。单一工作流,高度专注,低开销。大多数高质量的工作实际上就发生在这里。

40% 到 60% 仍然健康

你正在飞行途中。延迟和成本在攀升,但如果会话一直保持专注,质量仍然出色。抵制拖入不相关任务的冲动。会话正在收回模型的启动成本,你要持续收割这份红利。

60% 到 75% 是警告区间

事情仍在运转,但模型为了完成同样的工作付出了更多努力。两个动作能帮上忙:将迄今为止做出的决策总结成一个简短的摘要,并删除明显已死的上下文(被放弃的方案、无关的附件)。此处一次小小的压缩,能省去日后大规模重置的麻烦。

75% 到 85% 是拖累区

每个运行过长会话的操作者都学会了感受这个区间。答案来得更慢,模型开始自我质疑,悄悄丢弃约束条件。收尾当前任务,把结论保存到文件或计划中,然后在新会话中开始下一个任务。

超过 85% 意味着压缩或重置

你现在正在为递减的回报支付溢价。模型距离截断也只有一次糟糕的对话之遥,而那比重新开始更糟糕。把重要内容压缩成一个清晰的计划,保存到对话之外,然后重置。

更早地开启新对话

如果你真正的记忆存在于文件、计划和结构化笔记中,那么开启新对话并不是在丢失上下文,而是让工作记忆做回它本来应该做的事,同时把长期记忆放在它真正应该在的地方。

什么时候保留当前会话

当工作是一个连续任务、上下文窗口低于 60%、会话专注于单一工作流,且模型仍然保持精准时,继续下去。这些是你应该充分榨取的会话。

什么时候立即重置

当你切换工作流、上下文超过 75%、模型开始重复错误或犹豫对冲,或者会话已经积累了三个及以上的支线时,立即重置。每次完成一个独立任务后也要重置。把一个完成的任务拖进下一个任务的代价,几乎总是高于全新开始的代价。

体素图,展示杂乱的对话会话与整洁的重置工作区的对比
体素图,展示杂乱的对话会话与整洁的重置工作区的对比

构建系统,而不是长生不死的对话

最聪明的 AI 使用方式,是将持久知识存储在对话之外,让会话保持战术性和整洁性。对话是工具,不是档案。

使用文档、计划和清单

最廉价的外部记忆是一个 markdown 文件。一个简短的计划、一份决策清单、一个下一步行动清单。把它们放进你的项目,而不是放进对话。新会话通过读取文件开始,其成本只是拖着整个 8 万 token 对话历史的一小部分。

将可复用的工作流保存为技能

任何做超过两次的事情,都值得放到对话之外。一个可重复的设计评审流程、一个标准的交接格式、一个研究工作流。把它捕捉成可复用的技能、提示模板或系统笔记。每个新会话继承工作流,而不继承噪音。

一个运行良好的 AI 工作站,看起来不像是一个无尽的天才对话,而更像是一个工具锋利、抽屉有标签、每项工作都有新便签本的整洁工作坊。工作坊是持久的,便签本是可抛弃的。

常见问题

这些是人们意识到问题不在于模型而在于工作流之后,会问的问题。

一百万 token 的上下文能解决所有问题吗?

不能。一百万 token 的窗口提高了上限,但不能提高下限。长会话在触及限制之前,仍然会变得更慢、更贵、更不精准。对于那些真正需要一次性加载大量相关材料的任务,比如读取整个代码库或大型数据集,这种提升是实在的。但它不会把一个混乱的会话变成一个专注的会话。

开启新对话会损害连续性吗?

只有当连续性存在于对话中时才会。如果你的决策、计划和指令存在于文件中,新对话就能从旧对话结束的地方精确接续,还少了噪音。大多数觉得"新会话会丢失上下文"的操作者,实际上是在丢失那份上下文唯一的副本,这是工作流问题,不是对话问题。

我应该多久重置一次 AI 会话?

没有固定节律。每当一个独立任务完成、每当你切换工作流,或者每当会话的上下文使用超过 75% 时,就重置。对于重度用户,这可能一天发生三到十次。对于轻度用户,可能一个会话一次。触发点是工作本身,不是时钟。

为什么我的 AI 在长对话中越来越慢?

因为每次对话都会重新阅读整个对话历史。随着历史增长,每次对话的输入大小也随之增长,所以每个新答案都要消耗更多算力,启动时间也更长。再加上工具输出、附件和大型代码读取,输入大小增长的速度比对话感受到的更快。

把会话当工作区来对待

使用 AI 最聪明的方式,是让身份和记忆保持持久,同时让会话保持可抛弃。

会话是工作区。你设置它,使用它,然后拆除它。重要的工作被保存到文件、计划和持久化笔记中。会话本身不需要存活,它本就应该是廉价的。

错误在于把对话当成一段关系,漫长、不断积累、难以割舍。正是这个错误让 AI 的使用感觉随着时间推移越来越慢、越来越糟,即使底层模型变得越来越快、越来越好。对话不是你的协作者,对话是工作台。整洁的工作台永远比杂乱的快,每一次都是。

构建更干净的系统,而不是长生不死的对话。如果你想要帮助围绕你的 AI 工具、品牌和产品设计真正的工作流,雇用 Brainy。我们构建工作坊,不只是提示词。

Build cleaner AI systems instead of immortal chats. Brainy designs the workflows, not just the prompts.

Get Started

More from Brainy Papers

Keep reading