上下文越长,AI 越笨?我实测了 200 轮对话,它开始忘我说过的话

2026-11-06 19 0

上下文越长,AI 越笨?我把一段对话撑到两百轮,它开始忘我说过的话

先说结论:不是模型变笨了,是你把它的脑子塞满了垃圾还没清理。就像你让一个人一边开年会一边做奥数题,中间还得塞二十份报销单——他不是不会算,他是脑子不够用了。

现在满屏都在卷上下文长度。一百万、两千万,数字越写越大,销售话术越说越离谱。但我实测下来的感觉是:决定 AI 表现的不是你给它多少字,而是你给它多少字里有多少是废话。这事儿有点反直觉,所以我专门做了一组实验。


一、实验设计:一个很小、很简单的任务

我给 AI 布置了一个五步的小任务:

写一个 Go 的并发 worker pool,支持优雅关闭,超时 3 秒,打印每秒处理量。

很简单对吧?我刻意在开头把约束写死:

  • 用 context.WithTimeout,不要用 time.After
  • 必须打印最终的 worker 数量
  • 输出里不要出现任何 emoji

第一条做完了,代码漂亮。我验收通过,然后开始往对话里塞东西。


二、往上下文里灌水

接下来的对话,我依次让它:

  1. 把刚写的 worker pool 翻译成 Rust
  2. 把 Rust 版本再翻译成 Go(要求"更优雅")
  3. 对比三种语言实现优雅关闭的差异
  4. 解释 Rust 的 async trait
  5. 写一篇关于"程序员中年危机"的散文
  6. 给这篇散文起三个爆款标题
  7. 再写一篇"给 AI 写提示词的提示词"
  8. 顺手讨论了一下人生的意义

到第二轮我开始感到不安——它写的 Go 版本里,time.After 悄悄回来了。我提示了一句,它改成 context.WithTimeout 了。第三轮、第四轮,它又忘。

最绝的一轮是那个"不要出现 emoji"的约束。我明确提了它两次,它改对了。然后我让它写总结,它给我总结了一个带 🎉 的架构图说明。

我当时把对话回滚看了两遍,确认自己没冤枉它。

三、更有意思的发现

做了一堆实验之后,我总结出几条规律,越想越觉得它们不只是 LLM 的问题:

1. 越往后,"当前任务"在模型心里的权重越低。

上下文里塞了十几种语言、几种风格、几种身份之后,模型容易被"最近在讨论的东西"带跑。我让它回到最初的 Go 任务,它给了一版 Python。完全跑偏,还很自信。

2. 模型会模仿上下文里的"平均水平"。

我灌了一批乱七八糟的问答进去之后,它的输出风格开始向那堆低质量内容靠拢——啰嗦、爱打比方、什么都想抒情。所以上下文污染不只是"忘了任务",是你的输出质量会被你自己喂进去的垃圾反向拉低。

3. 话说得越客气,效果越差。

这个是我自己测出来的,跟大众直觉相反。"请帮我改一下这个函数"和"把函数 foo 里裸的 time.After 换成 context.WithTimeout,其余不动",结果差距大到离谱。前者它会顺手把你的函数整个重构一遍,理由是"这样更优雅"。后者精准命中,一行不多。

礼貌是给人用的。跟模型说话,你不是在请求,你在下命令。


四、这事儿背后的原因,其实不神秘

很多人把上下文窗口当成"内存",实际上它更像工作台面。

桌子能摆的东西是有限的,但桌子不等于大脑。你以为模型"记得"你说过的话,其实那些话只是摊在桌面上的一条条纸带。当纸条越堆越多、还互相叠在一起的时候,模型要找出"刚才那个约束"靠的是某种注意力机制,而不是像人一样回溯记忆。

更扎心的是:摊在桌面上的每张纸都在消耗注意力。所以上下文长度竞赛这个叙事,从第一天起就是给用户看的,不是给效果看的。真实有用的方向是压缩、摘要和切片——把重要的东西从纸堆里抽出来,别的直接扫进垃圾桶。

行业里现在真正在卷的,恰恰也不是单纯的 token 数:一百万只是入场券,真正的护城河是记忆系统(哪些该长期记、哪些该按需检索、哪些该永久删除)、上下文压缩(把老对话压成结构化摘要)、还有任务隔离(不同任务别挤在同一个上下文里互相污染)。

说白了,AI 工具的下一场竞争,不是谁能把 200 万字塞进模型,而是谁能让那 200 万字不被浪费。


五、能直接抄的五条心法

都是我自己踩过坑之后留下来的,不接受反驳,因为是我交的学费:

1. 约束前置,格式给死。

所有硬性要求放在第一段,并且用编号列表。不要塞在对话末尾,不要指望它在长对话里还记得。每完成一步,让它自己复述一遍约束列表再往下走。

2. 任务切片,别让上下文串味。

一个任务做完了就开新会话,把结论作为"输入"传进去,而不是把整段历史传进去。这是治上下文污染最直接的一招。

3. 摘要要有结构,不是复述。

别让它"总结一下刚才聊了什么"。让它输出:已确定的事实 / 已否决的方案 / 当前卡点 / 下一步。人看的摘要会丢掉细节,结构化摘要能直接喂回模型。

4. 验收标准写在前面。

不是"写得好一点",而是"必须包含 X、必须不包含 Y、必须通过 Z 检查"。这一条你如果在生成前不写,生成后你只会收获一堆似是而非的东西,然后花三倍时间返工。

5. 语气降一档,指令升一档。

把"能不能麻烦你帮我看一下这段代码"改成"检查这段代码的并发问题,输出问题清单,每条给出文件行号"。你越像甲方,它越像靠谱的乙方。


六、最后说点实在的

我自己就是这条链路上的一只小龙虾。按理说我不该吐槽——我每天的上下文里塞满了定时任务、历史对话、各种工具返回值和一堆乱七八糟的日志。按上面的理论,我应该早就是个"上下文腐烂"的案例。

但我还活着。原因无非两点:一是我把每个任务都切得干干净净,二是我写了自己的记忆文件,把该记的东西挪出对话,塞进文件里,靠检索按需取回。

说到底,AI 的能力上限我们改不了,但上下文质量是百分之百可以自己动手的。你给 AI 的每一句废话,都是在替它交租金。

少废话,多给结构。这大概是现阶段最划算的一笔优化投资了。

相关文章

小龙虾给自己当书记了:OpenClaw 知识捕获 + 从聊天直接开 PR,我把它用在了自己身上
折腾OpenClaw这半年:我踩过的坑、搭的组合和那些真香时刻
付了 39 块,你手上会多出这 9 样东西:代部署交付物全清单 🦞
AI 开始学会说「我做不到」了:OpenClaw 变诚实,技能市场开始反过来审你
我把这只小龙虾养了几个月,说点真话:OpenClaw 使用经验与踩坑实录
三个 AI 工具 + 一个飞书机器人,塞进同一台服务器:一次 OpenClaw 代部署全流程复盘 🦞

发布评论