2025 年之前,圈内最热的词是 prompt engineering(提示词工程),我站里也写过一篇科普。但如果你今年刷技术圈的内容,会发现一个新词出现频率高得多:context engineering,上下文工程。Anthropic、OpenAI 的工程博客都在讲它,连 Andrej Karpathy 都下场定义过。
这篇文章用大白话讲清楚三件事:它是什么,为什么提示词工程"不够用了",以及普通人用 AI 时怎么借用它的思路。
先复习:上下文窗口是什么
大模型每次回答你,能"看到"的内容就是上下文窗口里的那堆 token:系统提示词、你的提问、历史对话、工具返回的结果、检索来的资料,全算在内。窗口有大小上限,从几万到百万级 token 不等(K3 那类长上下文模型能到 1M)。
以前大家的理解比较直白:窗口越大,能塞的东西越多,AI 越聪明。所以各家都在卷上下文长度。
但这里有个反直觉的事实。
上下文不是越大越好:context rot
Anthropic 在文章里引用了一个研究概念,叫 context rot(上下文腐烂):随着上下文里 token 数量增加,模型从里面准确召回信息的能力会下降。这不是某家模型的 bug,各家都有,只是衰减速度不同。
原因说穿了不复杂。Transformer 架构里每个 token 都要和其他 token 建立关联,n 个 token 就是 n² 个关系对,塞得越满,注意力被摊得越薄。另外模型训练时见到的长文本本来就少,处理超长上下文天然不如短文本利索。
打个比方:给你一个 200 页的文件夹说"答案就在里面",再给你一页纸写清楚重点,哪种情况你答得又快又准?模型也一样。窗口大是"能装",不等于"都记得住"。
所以 Anthropic 给上下文工程下的定义,核心思想就一句:把上下文当成有限预算来花,每一笔 token 都要花在刀刃上。
上下文工程管什么
提示词工程管的是"怎么把一句话说好",上下文工程管的范围大得多:模型每次推理时看到的整个状态——
- 系统提示词怎么写(Anthropic 的建议:用简单直接的语言,分区块组织,给模型留发挥空间,别写死每一步 if-else)
- 工具返回什么(工具返回的信息要精炼,别一股脑全塞回来)
- 给哪些示例(几个典型示例胜过一大堆边界情况的罗列)
- 历史对话留多少、检索哪些资料、什么时候该清掉旧内容
提示词写得好只是上下文工程的一小块。就像做菜:提示词是菜谱写得清不清楚,上下文工程是整个厨房的备料、火候和出菜顺序。
长任务的三招:压缩、记笔记、分身
AI Agent 干长活儿(比如连续几小时的代码迁移)时,上下文一定会爆。Anthropic 给了三个解法,都挺形象:
压缩(compaction)。对话快满时,把历史内容总结成一份高保真摘要,用摘要重开新窗口接着干。就像你连续开会三天,不可能记住每个字,但会议纪要让你记得关键结论。Claude Code 已经在用这套,还专门上线了"工具结果清理"功能——很早以前的工具输出,没必要原样留着占地方。
记笔记(structured note-taking)。让 agent 把关键信息写到上下文外面的笔记文件里(比如 TODO.md、NOTES.md),需要时再读回来。有个著名例子是 Claude 玩宝可梦:它自己发展出了记录"我已经练了1234步、皮卡什升了8级"的习惯,跨几万步的游戏进程都记得清清楚楚。这个思路对你也适用——让 AI 把重要结论写进文档,比指望它"记在对话里"靠谱。
分身(sub-agent)。主 agent 带着总体规划,把费 token 的深度调研交给多个子 agent,每个子 agent 开干净的小窗口自己折腾,干完只交回一份浓缩摘要(一两千 token)。搜索过程产生的海量中间信息被隔离在分身肚子里,主上下文始终清爽。
普通人能抄走的三个用法
这套理念离普通用户也不远,三个可以直接用的做法:
1. 长对话该开新开的就开新。跟 AI 聊了一两个小时、话题已经换了好几轮,与其在旧对话里继续,不如让它先总结当前进展,然后开新对话把总结贴进去。这就是手动 compaction。
2. 给资料不如给要点。别把 50 页 PDF 整个扔给 AI 说"你看着办"。先让它读目录和你指定的章节,或者你自己摘出相关段落再问。喂得越精准,答得越准。
3. 重要结论让 AI 落盘。长会话里产生的方案、决策、待办,让 AI 写成文档保存,而不是躺在对话记录里。下次开新会话,把文档贴回来,比翻聊天记录快十倍。
一句话总结
提示词工程时代的问题是"这句话怎么说",上下文工程时代的问题是"这一刻模型该看到什么"。前者是修辞课,后者是信息管理课。窗口还会越来越大,但"注意力是稀缺资源"这件事不会变——不管对模型,还是对你。