上下文工程
比提示词工程更重要的概念:管理 AI 的"记忆",让模型在正确的信息上做推理。
核心观点
Shopify 的 CEO Tobi Lutke 提出了一个观点:提示词工程只是开始,上下文工程才是真正的突破。
什么意思?提示词工程关注"怎么问",上下文工程关注"给什么信息"。两者不是二选一,而是递进关系——先解决"给什么",再解决"怎么问"。
我越来越认同这个判断。在实际使用中,80% 的 AI 输出质量问题,根源不是提示词写得不好,而是上下文提供的不到位。
Context Window 是什么
上下文窗口(Context Window)是模型一次能"看到"的最大 Token 数量。你可以把它理解为模型的"工作台"——所有信息都要放在这个台面上,模型才能处理。
不同模型的窗口差异很大:
| 模型 | 上下文窗口 |
|---|---|
| Claude Sonnet 4.6 | 200K |
| DeepSeek V4 | 1M |
| Gemini 3 Pro | 2M |
| GPT-5.5 | 128K |
窗口大是好事,但不是越大越好。我的经验:
- 长上下文不是让你一次性把所有东西都塞进去。模型对中间部分的关注力天然比开头和结尾弱(lost in the middle 现象)。
- 窗口越大,单次推理的成本越高。因为计算复杂度随序列长度指数增长。
- 真正重要的是窗口内的信息密度,不是窗口尺寸。
为什么上下文比提示词更关键
给模型一个模糊的提示词,但配上高质量、高相关性的上下文,结果往往不差。反过来,提示词写得再精致,上下文里塞了一堆无关信息,模型照样跑偏。
举个例子:你要让 AI 帮你写一段 SQL 查询。
如果只给提示词"帮我写个 SQL",结果很泛。但如果你把数据库表结构、字段注释、一个已存在的查询示例都放进上下文,AI 几乎能一次写出可用的代码。
这就是上下文工程的核心:让任务所需的信息全部在上下文中可及。
上下文管理策略
1. 把最重要的放最后
模型对最近输入的内容关注度最高。如果你的提示词很长,把核心指令放在末尾。
2. 用摘要压缩历史
对话太长时,不要简单截断。让模型自己总结之前的对话,把总结作为新的上下文起点。我常用这个 prompt:
请用 3-5 句话总结我们之前的对话,保留所有技术决策和具体数字。3. 分块检索(RAG 思想)
不要把整个文档库塞进上下文。先检索最相关的 3-5 个片段,只放这些进去。质量 > 数量。
4. 系统提示词做框架,用户提示词做内容
系统提示词放不变的规则和角色设定,用户提示词放每次变化的具体需求。这样缓存机制能大幅降低成本。
什么时候上下文工程特别重要
- 大型代码库重构:把相关函数定义和调用关系组织好再给 AI
- 技术方案设计:把业务背景、现有架构、约束条件一次性交代清楚
- 数据分析任务:提前准备表结构、字段含义、样例数据