2026-01-15 20:10:19 +08:00
# 上下文工程入门 (Context Engineering)
2026-01-16 19:10:21 +08:00
> 💡 **学习指南**:如果说 Prompt Engineering 是教 AI "怎么说话",那么 Context Engineering 就是教 AI "怎么记事"。本章节将通过一系列交互式实验,带你深入理解 AI 的记忆机制,从基础的滑动窗口到高级的 RAG 系统,掌握让 AI "过目不忘"的核心技术。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
## 0. 引言:金鱼与大象
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
想象一下,你正在和两个人聊天:
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
- **A (金鱼记忆)**:只能记住最后说的 3 句话。如果你问他"我刚才说了什么?",他可能会一脸茫然。
- **B (大象记忆)**:能记住你们聊过的每一句话,甚至是你上个月提到的细节。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
**上下文工程 (Context Engineering) ** 的目标,就是通过技术手段,让 AI 从 "金鱼" 进化成 "大象"。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
但这里有一个核心挑战:**AI 的"脑容量"(上下文窗口)是有限的**。我们不能把全世界的信息都塞进去。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
我们需要解决五个核心问题:
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
1. **容量限制 ** :到底能装多少东西?
2. **遗忘机制 ** :装满了怎么办?
3. **智能保留 ** :如何只忘掉不重要的?
4. **长期记忆 ** :怎么记住很久以前的事?
5. **信息压缩 ** :怎么把书读薄?
2026-01-15 20:10:19 +08:00
---
2026-01-16 19:10:21 +08:00
## 1. 第一步:理解瓶颈 (The Context Window)
2026-01-15 20:10:19 +08:00
### 1.1 什么是上下文窗口?
2026-01-16 19:10:21 +08:00
大语言模型 (LLM) 的记忆不是无限的。它有一个固定的**上下文窗口 (Context Window)**,就像一个只能写 1000 个字的黑板。一旦写满,要么擦掉旧的,要么停止写入。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
### 1.2 实验:Token 与容量
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
在 AI 的世界里,计量的单位不是"字",而是 **Token ** 。一个 Token 大约相当于 0.75 个英文单词,或者 0.5-1 个汉字。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
试着在下面的模拟器中输入文字,看看它是如何填满上下文窗口的:
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
<ContextWindowVisualizer />
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
**关键点 ** :
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
- **溢出即丢失**:一旦超过红色警戒线,模型不仅会报错,或者会直接截断后面的内容。
- **昂贵的记忆**:上下文越长,推理速度越慢,费用也越高。
2026-01-15 20:10:19 +08:00
---
2026-01-16 19:10:21 +08:00
## 2. 第二步:即时记忆 (Sliding Window)
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
### 2.1 问题:聊久了就忘
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
当对话持续进行,Token 数量不断增加,最终会通过窗口限制。最简单的处理方式是**滑动窗口 (Sliding Window)**。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
### 2.2 解决方案:先进先出 (FIFO)
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
就像一个滑动的相框,当新消息进来时,最旧的消息被"挤"出画面,被彻底遗忘。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
<SlidingWindowDemo />
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
**观察 ** :
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
- 当对话填满窗口后,最早的 `User` 消息变灰并消失。
- **缺陷**:如果我在第一句话里告诉 AI "我的名字叫小明",几轮对话后,它就忘了我叫什么。
2026-01-15 20:10:19 +08:00
---
2026-01-16 19:10:21 +08:00
## 3. 第三步:智能管理 (Selective Retention)
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
### 3.1 问题:重要的事不能忘
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
"滑动窗口"太笨了,它平等地对待每一句话。但有些信息(如你的名字、任务目标、系统设定)是**全局重要**的,无论对话多长都不能忘。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
### 3.2 解决方案:选择性保留 (Smart Context)
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
我们需要一种机制,将关键信息**钉 (Pin)** 在窗口里,不受滑动影响。这通常通过 `System Prompt` 或动态注入来实现。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
<SelectiveContextDemo />
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
**实验指南 ** :
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
1. 观察顶部的 * * 📌 Pinned** 区域,这里的信息永远不会被挤走。
2. 在下方添加新消息,注意观察 * * 📜 Scrolling** 区域的变化。
3. 尝试点击某条消息旁边的 📌 按钮,把它变成"永久记忆"。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
**原理 ** :我们牺牲了一部分流动窗口的空间,换取了关键信息的持久性。
2026-01-15 20:10:19 +08:00
---
2026-01-16 19:10:21 +08:00
## 4. 第四步:长期记忆 (RAG & Vector DB)
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
### 4.1 问题:如何记住一本书?
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
如果我们需要 AI 记住几百页的技术文档,或者你过去一年的日记,即使是 "Pinned" 也装不下(窗口太贵且有限)。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
### 4.2 解决方案:外挂大脑 (RAG)
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
**检索增强生成 (RAG, Retrieval-Augmented Generation) ** 是目前的终极解决方案。我们不把所有记忆都塞进大脑,而是把它们写在"笔记本"(向量数据库)里。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
当需要回答问题时,先去笔记本里**检索**相关的那一页,临时读入大脑。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
<RAGSimulationDemo />
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
**流程解析 ** :
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
1. **Embedding ** :将你的问题变成数学向量。
2. **Search ** :在数据库中寻找"长得像"(语义相似)的片段。
3. **Retrieve ** :只把那 2-3 个相关片段取出来。
4. **Augment ** :把这些片段和你的问题一起塞进 Prompt。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
这样,AI 就能回答它从未"背过"的知识了。
2026-01-15 20:10:19 +08:00
---
2026-01-16 19:10:21 +08:00
## 5. 第五步:信息压缩 (Compression)
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
### 5.1 问题:检索出来的内容还是太长
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
有时候,即使检索出的相关片段也太长了。我们需要一种方法,在保留核心含义的前提下,减少 Token 消耗。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
### 5.2 解决方案:上下文压缩
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
我们可以用更小的模型,或者专门的算法,对文本进行压缩。
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
<ContextCompressionDemo />
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
**常见策略 ** :
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
- **Summarize**:用自然语言总结大意。适合理解整体脉络。
- **Extract Key Points**:提取要点列表。适合逻辑性强的内容。
- **JSON Structure**:提取结构化数据。适合程序处理。
2026-01-15 20:10:19 +08:00
---
2026-01-16 19:10:21 +08:00
## 6. 总结:构建 AI 的记忆宫殿
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
上下文工程不仅仅是简单的"拼接字符串",它是一个精密的系统工程:
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
| 阶段 | 核心技术 | 适用场景 | 类比 |
| :----------- | :----------- | :----------------- | :------------------ |
| **L1. 限制 ** | Token 计数 | 了解边界 | 黑板的大小 |
| **L2. 短期 ** | 滑动窗口 | 日常闲聊 | 只能记 3 句话的金鱼 |
| **L3. 关键 ** | 选择性保留 | 角色扮演、任务设定 | 手心写字的备忘录 |
| **L4. 长期 ** | RAG / 向量库 | 知识库问答 | 随时查阅的图书馆 |
| **L5. 优化 ** | 压缩 / 摘要 | 降低成本、提速 | 读书笔记 |
2026-01-15 20:10:19 +08:00
2026-01-16 19:10:21 +08:00
掌握了这些,你就掌握了控制 AI "注意力"的钥匙。现在,去构建属于你的长记忆 AI 应用吧!