Appearance
十二、上下文工程(Context Engineering)⭐ 比提示工程更大的命题
管好"进入模型视野的全部内容"(指令+历史+资料+工具结果+记忆),而不只是写好一句话。接第一课"Context 就是一切"。
从提示工程到上下文工程
- 提示工程 = 优化"你给的那段指令"
- 上下文工程 = 优化"进入有限窗口的全部内容" → 应用长大(RAG/Agent/长对话)后,重点从"这句话怎么写"变成"窗口里该放什么"。
核心矛盾:窗口有限,想进来的太多
想挤进窗口的:System Prompt + 对话历史 + RAG资料 + 工具结果 + 记忆 + 当前问题
→ 装不下 / 太贵 / 相互干扰 → 必须当"守门人"决定优先给谁核心技术
- 取舍:只放当前任务相关的,无关坚决剔除。
- 压缩/摘要:长对话历史 → 总结成几句再放(省窗口省钱)。
- 检索(RAG):知识库别全塞,只取最相关几块。RAG 本质就是上下文工程。
- 记忆管理:短期=当前上下文;长期=用户偏好/历史结论存外部(文件/DB),用时取回(Claude的MEMORY.md、龙虾记忆文件就是这个)。
- 排序:模型对开头/结尾更敏感,中间易忽略 → 重要信息放两头。
⭐ Agent 是最大战场
ReAct 每轮工具结果拼回 context,跑20轮就撑爆窗口 → 必须及时压缩/丢弃旧工具结果,关键结论存记忆。长程 Agent 会崩,一大半是上下文管不好。
常见"病"
| 病 | 说明 |
|---|---|
| 迷失在中间 | 重要信息埋在长上下文中间被忽略 |
| 上下文污染 | 塞太多无关/过时/矛盾内容带偏模型 |
| 窗口溢出 | 超上限,老信息被挤掉 |
| 成本失控 | context 越长每次调用越贵 |
核心教训:context 不是塞越多越好,而是少而精、放对的。塞垃圾进去,输出就是垃圾。
"如何给模型对的输入"四层次
第1课 Context就是一切(为什么) → 第3课 RAG(取知识)
→ 第10课 提示工程(写好指令) → 第12课 上下文工程(管好整个窗口,最高统筹)