返回文章

为什么你的 AI 越聊越“笨”,还越来越慢?

Agent 聊久了会变慢、变贵、好像变笨。从聊天记录、Context 和 KV Cache 讲清原因,以及用 Agent 时可以怎么调整。

为什么你的 AI 越聊越“笨”,还越来越慢?封面

你有没有发现,Agent 刚开始还挺聪明,聊久了却越来越慢、消耗的 token 越来越多,甚至开始忘记前面说过的要求?

比如,国庆假期快到了,你让 Agent 帮你规划一次旅行。目的地、日期、预算和酒店都讨论过了,你又补了一句:“酒店换便宜一点的。”

这句话很短,但要改对,它得知道你住几晚、原来选了哪家酒店,以及前面哪些要求仍然有效。 如果还需要搜索、读取酒店页面、比较交通,一次回复背后可能已经调用了好几次模型。

我想从这个例子出发,讲清楚聊天过程中发生了什么,以及我们能怎么调整用法。

一、你发出消息后,AI 是怎么回答的?

聊天记录:你能翻到的历史。

它像一本账本,保存了你和 AI 的所有对话。但界面上能翻到,不代表这些内容会原样、完整地交给模型。

应用可能筛选历史,也可能用摘要替代部分原文。

Context:模型这一轮实际拿到的信息。

中文通常叫“上下文”。

可以把它想成这次工作的桌面:上面可能有系统指令、当前问题、部分聊天记录、文件内容和工具返回的结果。

桌面大小有上限,对应 Context Window,也就是上下文窗口。

你可能会问:Agent 不是有 Memory,也就是记忆功能吗?它不会记住我之前说过的话吗?

有些应用确实会保存你的偏好或重要信息,需要时再放进当前上下文。但这不等于每次都把所有历史对话带上。

比如,它可能记住了你旅行时偏向经济型,却未必保存了“这次不能坐早班机”。某条要求能否影响回答,还要看它有没有被带进这一轮输入,以及模型有没有正确使用。

答案是怎样一步步生成的

你有没有想过,AI 是不是早就生成了完整答案,只是在界面上一个字一个字地显示出来?

实际上,模型生成文字,本来就是一步步往后写:根据前面的内容预测下一个 token,接上之后,再继续生成。你看到的逐字显示,不只是一个播放效果。

token 可以理解成一小段文字,不一定是一个汉字,也不一定是一个完整单词。

“预测下一个”不是说它只看最后一个字。前面的上下文,都会影响它接下来生成什么。

既然每一步都要参考前文,它是不是每次都得把前面的内容重新算一遍?

这就是 KV Cache 发挥作用的地方。

模型处理前文时,会产生一些中间计算结果。其中有两组被称为 Key 和 Value,简称 K 和 V。KV Cache 会保存这些结果,让后面的生成可以继续复用。

它就像书桌旁的一张计算草稿:前面已经算过的部分,不必每次重新计算。

但它不是聊天记录,也不是一段任务总结。聊天还在,不代表这张计算草稿一定还在;能不能继续复用,要看具体的服务。

到这里,三者就分开了:聊天记录是账本,上下文是这一轮的书桌,而 KV Cache 是生成过程中留下的计算草稿。

信息来源、本轮 Context 与答案生成的关系

二、为什么聊着聊着就出问题了?

为什么聊久了,AI 好像“变笨”了?

继续用旅行举例。你说过不坐早班机、行程轻松一点,它后来却给出早上六点的航班,还把一天排得满满当当。

从上下文的角度看,这类错误有两种可能。

一种可能是,要求没有进入这一轮输入。假如历史被压缩时,“省钱,但不能坐早班机”被概括成“经济实惠的旅行”,关键限制就丢了。原话还在聊天界面里,却未必还在模型眼前。

另一种可能是,要求仍在输入里,但没有被正确使用。前面说“尽量多逛景点”,后来改成“轻松一点”,如果旧计划、新要求和大量酒店资料混在一起,模型可能沿用过时安排。

上下文还没装满,也可能出这种错。容量表示能容纳多少信息,不保证每个细节都能被准确利用;压缩历史则有遗漏重要信息的风险。

不过,这些只是可能的解释。模型能力、任务难度和错误的工具结果,也可能影响答案。单凭一次回答出错,或者让模型解释“自己为什么忘了”,都不能确定具体原因。

为什么没问几句,额度就用掉了不少?

还记得那句“酒店换便宜一点的”吗?前面说过,它可能连同之前的讨论、酒店资料和整份行程,一起交给模型。这些内容都会成为这次需要处理的输入。

你只新写了一句话,它要处理的却可能是一大段。上一轮的回答,到了下一轮,也可能变成输入的一部分。对话越长,这些反复带上的内容就可能越多。

如果你再让它“多找几家,比一比价格”,它还可能先搜索、读网页,再继续查,最后才整理出推荐。你只发了一次消息,背后却可能已经让模型工作了好几次。查到的资料,也可能跟着进入后面的每一步。

当然,重复的内容有时可以利用缓存,减少计算和费用。但缓存并不意味着整次任务都免费,新的内容和后续回答仍然需要处理。

这也解释了为什么,只让它读相关的几页,和让它逐份读取整个文件夹,即使最后问的是同一个问题,消耗也可能差很多。

为什么迟迟不回答,或者回答得越来越慢?

这些内容除了增加消耗,也可能让你等得更久。比如你发过去一份很长的资料,问了一个简单问题,结果等了半天才开始出字;可一旦开始,后面又挺顺。

它在前面那段时间里干什么?其中一项工作,就是先处理这次收到的问题、资料和聊天记录,为接下来生成回答做准备。这一步叫“预填充(Prefill)”。需要处理的内容越多,这一步就可能越耗时。

等开始生成回答,就接上了前面说的过程:一个 token 接着一个 token 往下写。这一步叫“解码(Decode)”。

生成时虽然能复用 KV Cache,但模型仍然需要读取和利用前面的计算结果。上下文很长时,这部分开销也可能增加,所以开始出字后,也不一定一直很快。

但屏幕上还没出字,也可能是它正在搜索、调用工具、做内部推理,或者服务正在排队。单凭等了多久,没法确定是哪一种原因。

忘事、消耗增加与等待变长的可能原因

三、用 Agent 时,可以怎么做?

1. 先把任务和要求说清楚

先告诉 AI 你想做什么,以及哪些条件必须满足。比如规划旅行,除了目的地和日期,还可以说清预算、不坐早班机、每天最多安排两个景点。这样它一开始就有具体的依据,不用等安排完了,你再一条条纠正。

如果聊到一半改了主意,就明确告诉它,之前哪条要求取消了。

比如你可以这样说:

前面说的“尽量多逛景点”取消。现在每天最多安排两个地方,酒店和日期先不动,只调整路线。

这样它就更容易分清,你是在补充要求,还是推翻之前的决定。也不用每次都把全部要求重说一遍;有变化时说清楚,发现它漏了重要条件时再补上。

如果有些要求每次都一样,也可以把它们固定下来。比如你用 Codex,可以把长期适用的规则写进项目里的 AGENTS.md 文件。它就是一份给 AI 看的说明书:比如“用中文回答”“查资料时附上来源”“修改文件前先读已有内容”。放在工具支持的位置后,Codex 开始工作时会自动读取,你就不用每次手动重说。

这类文件适合放简短、长期有效的约定。这次旅行的日期和预算,还是跟着具体任务交代。如果你用的是普通聊天应用,可以看看它是否提供自定义指令或项目说明,用来保存类似的要求。

不过,省掉的是你反复输入的麻烦。这些规则仍然需要交给模型处理,写进文件也不代表它就永远不会漏掉,所以最关键的结果还是要检查。

2. 限定查找范围

比如你想买一副耳机,已经选出了三款,就先给它这三款的资料,说清预算,以及你更在意舒适度、降噪还是通话效果。不用把之前看过的十几篇推荐文章全贴进去。

让它帮忙搜索时,也可以把范围说具体一点:

帮我比较这三款耳机,主要用于通勤和线上会议。重点看佩戴舒适度、降噪和麦克风效果,附上来源链接,查不到的就标出来。

这样你更容易看出差别,也能顺着来源检查。至于背后究竟读了多少网页,普通用户通常看不到;让它“回答短一点”,也不保证后台消耗就一定少。我们能直接做的,是少塞无关资料,把要查的问题说具体。

读文件也是一样。比如你只是想了解一份课程介绍里的上课时间和作业要求,可以先提供相关章节,连同必要的说明一起给它。问题涉及整份文件时,再提供完整内容。

3. 聊出结果后,把已经确定的事记下来

回到前面那次旅行。目的地和日期已经定了,酒店也选好了,接下来只剩每天怎么玩。这时可以让 AI 先整理一下:

请整理一份可以复制到新对话的行程记录,包括已经确定的日期、预算、酒店和必须遵守的要求,再列出还没决定的事。只是讨论过、但我没确认的方案,不要写成已经决定。

花一点时间看一遍,尤其检查“不坐早班机”这类不能漏的条件。核对后,把这份记录保存到自己的文档里。以后继续讨论或换工具时,可以连同最新行程一起提供。

如果原来的对话还很顺,就接着用。如果它开始反复拿出已经否定的方案,可以把核对过的记录和最新行程带到一个新对话里,不再附上之前反复讨论的旧方案,减少这些内容的干扰。

这里要记住:在原对话里补一份摘要,前面的聊天并不会因此被删除。也不需要聊几轮就强行重开,整理是为了方便继续,而不是给自己多加一道手续。

4. 换模型时,做好交接。

比如你用 ChatGPT 写好了一封邮件,想让 Claude 帮你把语气改得自然一点。

把它当成请另一个人接手:把最新邮件发过去,说明写给谁、要表达什么,以及哪些内容已经确定。

这封邮件是想和老师约个时间讨论作业。请把语气改得礼貌、自然一点,保留我列出的可用时间,不要替我增加新的承诺。

如果直接换到另一个应用,之前的聊天和附件通常需要你另外提供。如果只是在同一个应用里切换模型,应用可能会带上原来的聊天,不一定要从头交代。

前面讲过的 KV Cache,是模型计算时的草稿,不同模型一般不能直接共用。但只要接手的 AI 收到了必要的文字和资料,它就可以重新处理,再继续帮你做事。


下次 Agent 又拿出已经否定的方案,可以先把当前要求和最新版本重新交代清楚。需要换对话或换工具时,就把核对过的记录一起带过去。

这不能解决所有模型问题,但能少一些重复解释和返工。


希望能帮助到大家,对大家有用。

谢谢你愿意认真看到这里。

愿你始终对世界保持好奇。

同标签文章

AI

AI 技能地图

吴恩达团队从上万招聘职位里归纳出四项 AI 工程能力。这看起来是技能清单,实际讲的是开发者职责正在发生什么变化。

阅读全文