> For the complete documentation index, see [llms.txt](https://yeasy.gitbook.io/context_engineering_guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yeasy.gitbook.io/context_engineering_guide/di-san-bu-fen-jin-jie-ji-shu-yu-jia-gou/10_advanced/10.3_adaptive_context.md).

# 10.3 自适应与智能上下文管理

## 10.3.1 静态与自适应

传统上下文管理使用固定策略，而 **自适应上下文管理** 根据具体情况动态调整。未来的方向是让模型“参与”到上下文的选择中来。

## 10.3.2 自适应策略

### 自适应检索

根据查询复杂度调整检索强度：

```python
def adaptive_retrieve(query):
    complexity = assess_complexity(query)
    # 简单问题直接回答，复杂问题多跳检索
    if complexity == "high":
        return multi_step_agentic_retrieve(query)
    return simple_vector_search(query)
```

### 任务感知型重排

不同任务对上下文顺序的偏好不同。Transformer 模型对开头和结尾的内容关注度更高（Primacy/Recency Effect）。

* **代码调试任务**：错误日志置顶 > 相关代码 > 环境信息
* **法律分析任务**：法规条文置顶 > 案件事实 > 历史判例

可以通过分类器判断任务类型，动态调整 prompt 模板中的各部分顺序。

### 注意力预测注入

这是一种前沿的自适应架构：利用轻量级模型预测主模型对候选上下文的 **注意力热图**。

1. **候选池**：准备大量候选上下文片段。
2. **预测**：小模型预测主模型在回答当前问题时会“关注”哪些片段。
3. **注入**：只将高关注度的片段注入上下文。

这种方法实现了上下文的按需供给，最大化利用窗口的有效信息密度。

### 智能压缩

**上下文自动编码器 (In-Context Autoencoder, ICAE)** 是一种新兴技术。它训练模型将长文本压缩为短的“软提示词”（Soft Prompts）或潜在向量，而非人类可读的摘要。

* **编码**：将较长文本压缩为少量“特殊 Token/软提示词”（压缩规模取决于具体方法与模型）。
* **解码**：LLM 能够理解这些压缩 Token 并基于此回答问题。
* **优势**：压缩率极高，且保留了原始上下文的语义特征。

## 10.3.3 实现机制

### 反馈循环

基于结果反馈调整策略：

```mermaid
graph LR
    A["生成结果"] --> B["评估质量"]
    B --> C{"满意？"}
    C --> |"否"| D["调整上下文策略"]
    D --> E["重新生成"]
    E --> A
```

图 10-6：反馈循环优化策略

### 学习优化

从历史数据中学习最优策略：

* 记录不同策略的效果
* 分析成功和失败案例
* 自动优化参数

## 10.3.4 实施要点

1. **定义评估指标**：如何判断效果好坏
2. **设置调整范围**：避免过度调整
3. **保持可解释**：理解为什么做出调整
4. **监控效果**：验证自适应是否有效

## 10.3.5 渐进式上下文披露

**渐进式披露（Progressive Disclosure）** 是一种将上下文分层次、分阶段提供给模型的高级策略。

### 核心理念

不一次性提供所有信息，而是根据任务进展逐步披露：

```mermaid
graph TB
    L1["第一层：核心目标"] --> L2["第二层：约束条件"]
    L2 --> L3["第三层：详细规则"]
    L3 --> L4["第四层：边界案例"]
```

图 10-7：渐进式上下文披露

### 工具定义中的应用

以 Tool Search Tool 为例，工具定义可以分层加载：

**第一层（始终加载）**：

* 工具搜索元工具
* 核心常用工具（3-5 个）

**第二层（按需加载）**：

* 领域特定工具（通过搜索发现）
* 详细参数说明

**第三层（触发加载）**：

* 完整工具示例
* 复杂用法说明

### 实现模式

```python
def get_progressive_context(task, depth=1):
    contexts = {
        1: get_core_instructions(task),
        2: get_core_instructions(task) + get_constraints(task),
        3: get_core_instructions(task) + get_constraints(task) + get_examples(task)
    }
    return contexts[min(depth, 3)]

# 初始执行用第一层
context = get_progressive_context(task, depth=1)

# 如果失败，加载更多上下文重试
if not success:
    context = get_progressive_context(task, depth=2)
```

### 优势

* **降低初始 Token 成本**：简单任务只需第一层
* **避免信息过载**：复杂规则不干扰简单判断
* **支持自适应深度**：根据任务复杂度调整

## 10.3.6 自适应遗忘：从被动积累到主动治理

前面讨论的自适应策略主要关注“如何更好地选择和注入上下文”。但一个同样重要且常被忽视的问题是：**如何自适应地移除不再相关的上下文**。

### 为什么遗忘是自适应的核心能力

在长期运行的智能体系统中，记忆会持续积累。如果只做加法不做减法，系统会面临两个问题：

1. **噪声淹没信号**：过时的用户状态、已解决的问题、不再相关的偏好混在有效信息中，降低检索精度
2. **事实冲突**：旧事实与新事实共存，模型在推理时无法判断哪个有效

传统做法依赖固定的 TTL（生存时间）或 LRU（最近最少使用）策略进行淘汰，但这些机制是“时间盲”的——它们不理解信息的语义关系，无法判断“我住在纽约”应该因为“我搬到旧金山”而失效。

### 基于时间推理的自适应遗忘

新一代记忆框架（如 Supermemory）引入了 **语义感知的自动遗忘**。其核心不是按时间或访问频率淘汰，而是通过事实抽取和时间推理，自动检测并消解矛盾：

* 当新事实与旧事实存在覆盖关系时，标记旧事实为“已覆盖”
* 当事实包含时间约束（如“本周的会议”）时，过期后自动降权或移除
* 当用户画像的动态部分长时间未被引用时，逐步衰减其在检索中的权重

这种机制在 LongMemEval 等评测基准的“知识更新”和“时间推理”维度上效果显著——正是因为它不仅管理“记住什么”，还管理“忘记什么”。

### 与其他自适应策略的协同

自适应遗忘与本节前述策略形成互补：

* **自适应检索**（10.3.2）决定“取什么”，自适应遗忘决定“丢什么”
* **渐进式披露**（10.3.5）控制信息的注入深度，自适应遗忘控制信息库的质量
* **反馈循环**（10.3.3）提供效果信号，遗忘策略据此调整淘汰阈值

三者结合，构成了完整的自适应上下文生命周期管理：写入 → 选择 → 注入 → 评估 → 遗忘。

## 10.3.7 动态上下文发现：从静态注入到按需加载

**动态上下文发现（Dynamic Context Discovery）** 与自适应遗忘相反——不是管理已有的上下文，而是让模型主动发现所需的上下文，而非一次性静态注入。这种模式在 Cursor 等编码智能体中已显示出显著的 Token 节省效果。

### 五个核心模式

**1. 工具响应转化为文件**

长工具响应（如 shell 命令或 MCP 调用的输出）会导致上下文爆炸。不同于截断数据（可能丢失关键信息），将长输出写入临时文件，让模型通过 `tail`、`grep` 等命令按需读取，既避免信息丢失，也延迟了加载时机。

**2. 对话历史的总结回溯**

上下文填满时触发总结，但总结本质是有损压缩。解决方案是：将完整对话历史也作为“文件”可访问，模型在需要细节时可搜索历史记录，显著改善总结后的知识质量。

**3. MCP 工具的惰性加载**

MCP 服务器通常包含数十个工具，其完整描述会占用大量 Token，而大多数工具未被使用。将工具描述同步到文件夹，模型仅接收工具名称和轻量级索引，需要时才查阅完整定义。Cursor 的动态上下文发现 A/B 测试显示，在实际调用 MCP 工具的运行中，总 Token 减少 **46.9%**；该结果对安装的 MCP 数量高度敏感，不应直接外推到所有任务。

**4. 终端输出作为文件**

将集成终端的所有历史输出同步到本地文件系统，模型无需复制粘贴即可引用，并能通过 `grep` 等工具高效过滤长日志。

**5. Agent Skills 标准支持**

Skills 定义了领域特定任务的能力集合。仅在系统提示中包含 Skills 名称和概述，模型通过语义搜索按需加载完整定义和相关脚本，避免上下文被未使用的 Skills 占用。

### 实现要点

这五个模式的共同特征是 **延迟加载**：不预先注入所有信息，而是让模型显式请求需要的部分。这要求模型架构支持高效的文件操作、搜索和递归调用。相比静态上下文，动态发现已在 Cursor 的 MCP 工具场景中显示出 46.9% 的 Token 节省，但实际收益取决于工具数量、任务形态和上下文检索质量。
