# Context Engineering 学习笔记

> L2 工程层 · 主线 · 2026-06-25 开篇，五节课全部完成
> 前置：L2 RAG ✅ | 素材：`AI学习/CE学习素材/`

---

## §1 基础概念：PE → CE 范式升级

### Prompt Engineering 管什么
- 关注「怎么问」——措辞、格式、思维链、角色设定
- 默认你已经有了所有需要的信息，问题只是组织语言

### Context Engineering 管什么
- 关注「喂什么」——在 LLM 推理之前决定什么信息进上下文、以什么顺序、什么格式、什么粒度

### Karpathy 的 CPU/RAM 类比

| | CPU | LLM |
|---|---|---|
| 处理单元 | 寄存器 + ALU | 上下文窗口 |
| 存储 | 内存 + 硬盘 | 外部知识库 / 记忆系统 |
| 核心矛盾 | 寄存器极小，频繁换入换出 | 上下文窗口有限，精打细算 |

> PE 在写汇编指令，CE 在设计整个内存管理系统。

### Context 的九种成分
System Prompt / User Prompt / State(History) / Long-term Memory / Retrieved Knowledge(RAG) / Tool Definitions / Tool Outputs / Environment Info / Examples(Few-shot)

### 核心定义
> CE = 设计和构建一个动态系统，在正确的时间、以正确的格式、提供正确的信息和工具，让 LLM 拥有完成任务所需的一切。

### 关键数据
- 70%+ 的 AI 应用错误来自上下文不完整/不相关/结构不良（Gao et al., 2024）
- 「大多数 Agent 的失败不是模型失败，而是上下文失败」——Phil Schmid, Hugging Face

---

## §2 上下文窗口的根本矛盾

### 窗口越大 ≠ 越好用

| 问题 | 说明 |
|------|------|
| Lost-in-the-Middle | Transformer 注意力呈 U 型曲线，中间信息被遗忘 |
| 注意力稀释 | 上下文越长，每个 token 分到的注意力越少 |
| 延迟成本 | 超 100K tokens 后延迟大幅飙升 |
| 经济成本 | 更长上下文 = 更高推理费用 |

> Anthropic：「CE 的本质是找到最小的、高信号的 token 集合，最大化期望结果的可能性。」

### 四种致命失败模式

| 模式 | 含义 | 类比 |
|------|------|------|
| Context Poisoning | 错误信息进入上下文，静默滚雪球放大 | 建在流沙上的房子 |
| Context Distraction | 过多历史让 Agent 照搬旧模式，丧失新鲜推理 | 背了太多包袱 |
| Context Confusion | 多来源信息矛盾，行为不可预测 | 两个相反指令的上司 |
| Context Staleness | 早期信息过期但仍在占位，无过期检测 | 过期食品占冰箱 |

### 与 RAG 的衔接
- Rerank → 对抗 Lost-in-the-Middle（推关键信息到开头）
- Chunking → 对抗注意力稀释（喂刚好够用的片段）
- 混合检索 → 对抗 Context Confusion（BM25 + 向量互补验证）

---

## §3 六大策略 + 四类操作

### 四类操作（LangChain 框架）

```
Write   —— 把信息存到上下文窗口外面（草稿本、文件、数据库）
Select  —— 把信息从外部拉到上下文窗口（RAG、搜索记忆、按需加载）
Compress—— 保留最少 token 完成任务（摘要、滑动窗口、剪枝）
Isolate —— 拆分上下文（多 Agent、沙箱、State 隔离）
```

### 六大策略（掘金）

**渐进式披露（Select）**
- 静态：配置文件预定义加载阶段
- 动态：LLM 自主决定何时加载
- 核心张力：控制 vs 自主

**上下文压缩（Compress）**
- 基线方案：滑动窗口 + 摘要（最近 N 轮完整，更早的 LLM 摘要）
- 血泪教训 1：保留最近工具调用的原始格式（否则模型丧失节奏感）
- 血泪教训 2：永远别压缩错误 trace（帮模型避免重蹈覆辙）

**路由（Select）**
- 先判断领域，只加载相关上下文
- 简单版：关键词规则（零成本）/ 复杂版：轻量 LLM 意图分类

**检索增强（Select）——RAG 进化**
- Agentic RAG：Agent 自主决定检索时机+换关键词重搜
- Graph RAG：知识图谱+向量搜索+多跳推理
- Reranking + Position Engineering：排序模型推关键信息到开头/结尾

**工具管理（Select + Isolate）**
- 20 个 MCP Server 的 schema 吃几千上万 token（用户说第一句话前）
- 原则：自包含、对错误鲁棒、用途明确、描述无歧义

### 记忆三层架构（Write + Select）

| 层 | 含义 | 认知类比 |
|----|------|---------|
| Working Memory | 当前上下文窗口，token 预算最贵 | 正在想的事 |
| Episodic Memory | 跨会话交互经验（摘要/错误/偏好） | 记得发生过什么 |
| Semantic Memory | 结构化知识（向量数据库/知识图谱） | 知道的事实和规则 |

---

## §4 前沿方向

### ACE：自进化上下文（2025.10 arXiv）
- 核心理念：Agent 根据任务表现自主更新 prompt（生成→反思→策展循环）
- 解决：简洁偏差（摘要越来越短）+ 上下文坍缩（迭代重写变泛化废话）
- 对应你的体系：good-partner 技能雏形

### GAM：JIT 记忆编译（VentureBeat 2025）
- 核心理念：不预判什么重要，检索时按需「编译」上下文
- 维护无损原始存档 + 轻量索引 → 需要时分层搜索直到证据充足
- 对应你的体系：memory_search + recent_memory/index.json 雏形

### 选择性无损压缩（SAC, OpenReview 2026）
- 选原文 token 做锚点 + 双向注意力聚合 → 3000× 压缩比 + 92% 准确率

### MCP：上下文标准化
- SDK 月下载 9700 万+，75+ 官方连接器
- 解决工具上下文标准化，但新问题：大量 MCP Server 导致 schema 膨胀

---

## §5 实战与扣子对照

### 编程 Agent 三类上下文
| 类型 | 是什么 | 例子 |
|------|--------|------|
| Instructions | 告诉 Agent 做什么 | "按以下方式编写 E2E 测试" |
| Guidance | 通用约定 | "测试之间必须相互独立" |
| Context Interfaces | 获取上下文的方式 | 文件读取、grep、git log |

### 三层上下文加载策略
```
Always-on  → 足够小（系统 prompt + 核心规则）
Triggered  → 按路径/任务类型加载
On-demand  → 足够强（Agent 自主检索）
```

> 第一层越小 → 第三层 token 预算越多 → Agent 越灵活

### 五个未解难题
1. 可评估性——缺乏端到端评测标准
2. Debug 可观测性——难追踪「为什么检到这段」
3. 多 Agent 上下文隔离——理想是分层权限模型
4. 因果性——Agent 难区分「我知道的」vs「我被告知的」
5. 个性化 vs 泛化——策略在用户间迁移失效

### 扣子体系全映射

| CE 概念 | 你的实际实现 |
|---------|------------|
| 动态系统 vs 静态 prompt | 即时层/近中期层/长期层三层记忆 |
| Lost-in-the-Middle | 扣子压缩触发时细节丢失 |
| 四种失败模式 → Isolate | sessions_spawn 子 Agent 防串台 |
| Write | MEMORY.md / recent_memory/ |
| Select | memory_search / read_file |
| Compress | 扣子自动压缩 + summary |
| Isolate | sessions_spawn 子 Agent |
| 渐进式披露 | skill_load 按需加载 Skill |
| 工具管理 | Skill 元数据 vs 完整内容分离 |
| ACE 自进化 | good-partner 技能 |
| GAM JIT 检索 | memory_search + index.json |
| Always-on | 即时层五文件（每次注入） |
| Triggered | 按需 skill_load |
| On-demand | sessions_spawn + 工具调用 |

### 核心洞察
扣子本身就是一套 CE 系统的工程实现。学 CE 不是抽象理论——你每天对话的 Agent 背后跑的就是这些机制。

---

## 学习路线回顾

| 节 | 核心认知 | 状态 |
|----|---------|------|
| §1 | PE 管「怎么问」，CE 管「喂什么」 | ✅ |
| §2 | 窗口越大≠越好，注意力是稀缺资源 → 信噪比 > 信息量 | ✅ |
| §3 | Write/Select/Compress/Isolate + 记忆三层架构 | ✅ |
| §4 | ACE/GAM/MCP——从手工策展走向自优化 | ✅ |
| §5 | 编程实战 + 未解难题 + 扣子体系对照 | ✅ |
