上下文工程:给模型的记忆做减法
上下文窗口越来越长,但「能塞进去」和「应该塞进去」是两回事。这篇文章论证一个反直觉的判断:上下文工程的核心操作是删除,不是添加。
过去一年里,上下文窗口从 128K 卷到了百万级。一个自然的推论是:上下文工程会变得不重要——反正都塞得下。我认为这个推论是错的,而且方向完全相反。
长上下文的隐性成本
「塞得下」不等于「用得好」。在实际的 agent 系统里,超长上下文至少有三个隐性成本:
- 注意力稀释。关键指令淹没在几万 token 的工具输出里,模型对它的遵循率会显著下降。这不是玄学,是可以在评测里复现的行为衰减
- 错误锚定。上下文里一旦出现过错误的中间结论,后续推理会反复引用它。上下文不是白板,是有惯性的
- 成本与延迟。每个 token 都要花钱、花时间。当一个 agent 循环运行几十轮,无节制的上下文积累是指数级的浪费
减法的三种形态
有效的上下文管理,核心操作是三种「删除」:
压缩历史
把已完成阶段的完整过程压缩成结论。一次成功的调试过程可能产生 5 万 token 的工具输出,但下一阶段真正需要的只是一句话:
已定位:竞态条件出现在 cache.invalidate() 与
write-back 之间,修复方案是引入版本号检查(已验证)。
隔离执行
体力活派给子 agent,主上下文只接收产出。子 agent 的几万行日志在它自己的上下文里消化,返回的是一段结构化摘要。这是「指挥官保护全局视野」在工程上的直接对应。
主动遗忘
不是所有信息都值得留在工作记忆里。文件的完整内容读过之后,留下路径和关键行号就够了——需要时可以重新读取。可恢复的信息不占上下文,这是减法的安全边界。
一个可检验的判断
把上面的原则压缩成一句话:
上下文的价值密度,随长度单调递减;工程的目标是维持密度,而不是扩大容量。
这个判断是可检验的:固定任务集,对比「全量上下文」与「压缩上下文」两组 agent 的完成率与成本。我的初步实验里,压缩组在成本降低约 60% 的同时,完成率反而更高——因为注意力稀释的损失超过了信息丢失的损失。
数字本身不重要(不同任务集会有很大差异),重要的是这个方向:**当模型能力继续提升,瓶颈会越来越清晰地落在「喂给它什么」上。**上下文工程不会消失,它会成为 AI 工程的核心学科。