---
title: "上下文管理"
description: "有效管理上下文以获得更好的结果"
---

---

有效的上下文管理能确保 Verdent 在正确的时间获得正确的信息，同时避免因上下文过载导致的性能下降。

### 你将学到什么

- 理解上下文窗口及其限制
- 有策略地选择文件以获得最佳上下文
- 识别并应对上下文过载
- 何时重置上下文以获得更好的性能
- 工作区组织方式如何影响上下文

---

## 理解上下文窗口

Verdent for VS Code 的上下文窗口大小取决于所使用的模型。

<Tabs>
  <Tab title="标准模型 (200K)">
    大多数模型使用标准的 `200K` 上下文窗口：

    - **Claude 4.5 Sonnet** —— 适合复杂任务的均衡选择
    - **Claude 4.5 Haiku** —— 快速高效
    - **GPT-5** —— 推理能力出色（Beta）
    - **GPT-5-Codex** —— 为编码优化（Beta）

    **容量：**

    - 约 `200,000` tokens 的总记忆容量
    - 足以应对大多数开发任务和中型项目

    **包含的内容：**

    - 对话中的所有消息
    - 加载进上下文的文件内容
    - 工具输出和响应
    - 系统提示词和指令
    - MCP 服务器定义

    **性能：**

    - 接近上限时会明显下降
    - 注意上下文过载的信号（响应变慢、输出准确度降低）
    - 更频繁地重置上下文以获得最佳性能
  </Tab>
  <Tab title="扩展上下文 (1M)">
    当显式选择，或输入超过 `200K` tokens 时，Claude Sonnet 4.5 提供扩展上下文（`1M` tokens）。

    **容量：**

    - `1,000,000` tokens 的总记忆容量
    - 比标准模型大 5 倍

    **优势：**

    - 非常适合无需分块就能加载整个大型代码库
    - 消除了大型项目中的大部分上下文管理顾虑
    - 在触及上下文上限前可工作更长时间
    - 需要重置会话的次数更少

    **何时使用：**

    - 包含 `1000+` 文件的大型代码库
    - 跨整个项目的复杂多文件重构
    - 横跨多个相关任务的长时间开发会话
    - 当你希望尽量减少上下文管理开销时
  </Tab>
</Tabs>

---

## 有策略地选择文件

选择文件时要有策略，以优化上下文使用并避免触及上限。

<Tip>
  先从较少的文件开始，仅在需要时再添加，Verdent 在对话中随时可以读取更多文件。
</Tip>

### 使用 @ 提及进行显式纳入

```
@filename.js
```

Verdent 会自动加载相关文件，但 `@-mentions` 能确保精确的上下文。要有选择性——只纳入与当前任务直接相关的文件。

### 监控上下文使用

- 注意会话变长时的性能下降
- 留意对话长度和文件数量
- 在可能时从上下文中移除不必要的文件

### 避免上下文过载

- 将大任务拆分为更小的部分，每个任务使用更少的文件
- 只关注相关文件——不要一次加载整个代码库
- 使用 MCP 服务器管理来禁用未使用的集成

### 最佳实践

- 只纳入需要修改或引用的文件
- 引用已有的模式，而不是加载示例文件
- 对于大型代码库，一次只处理一个模块
- 使用项目文档（`AGENTS.md`）而不是加载大量文件
- 对于内存密集型任务，避免使用上下文窗口的最后五分之一

### 对于扩展上下文 (1M tokens)

文件选择的重要性大幅降低——你通常可以加载整个项目仓库而不会触及上限。

---

## 识别上下文过载

<Tabs>
  <Tab title="响应质量">
    **信号：**

    - 响应准确度降低或不完整
    - 遗漏对话中较早出现的重要细节
    - 难以在长会话中保持一致性
    - 对最近的更改或上下文感到困惑

    **具体示例：**

    - 提出你在本次会话早些时候已经否决的方案
    - 忽略你在 `20` 条消息之前确立的编码约定
    - 生成与对话早期所做更改相冲突的代码
    - 提出与之前讨论过的项目架构不符的实现方案

    **主要信号：** Verdent 的响应准确度降低或不一致
  </Tab>
  <Tab title="速度问题">
    **信号：**

    - 响应时间明显变慢
    - 开始响应前的处理延迟变长
    - 消息之间的延迟增加

    **具体示例：**

    - 通常需要 `5-10` 秒的响应现在需要 `30+` 秒
    - 发送消息后，输入指示器出现前有明显延迟
    - 流式响应开始得比平常慢得多
    - 工具执行（文件读取、搜索）耗时明显变长

    **主要信号：** 响应耗时比平常明显更长
  </Tab>
  <Tab title="行为变化">
    **信号：**

    - 要求澄清已经提供过的信息
    - 忘记之前确立的模式或约定
    - 无法引用之前讨论过的文件或代码
    - 重复询问项目结构

    **具体示例：**

    - 在你 `30` 条消息前已说明使用 React 后，仍问"你用的是什么框架？"
    - 重复索要你已经 `@-mentioned` 多次的文件路径
    - 不记得你在会话开始时确立的命名约定
    - 重新解释你已附理由否决的概念或方法

    **主要信号：** Verdent 询问已经讨论过的内容
  </Tab>
  <Tab title="技术指标">
    **信号：**

    - 接近 `200K` token 上限的最后五分之一（已使用约 `160K+` tokens）
    - 包含大量文件读取和工具输出的长对话
    - 启用了多个带有大量工具定义的 MCP 服务器
    - 反复将大文件加载进上下文

    **具体示例：**

    - 会话已运行 `2+` 小时，包含 `100+` 条消息
    - 你在对话中加载了 `20+` 个文件，`@-mentions`
    - 多个大文件（每个 `>1000` 行）都在上下文中
    - 你启用了 `5+` 个带有大量工具定义的 MCP 服务器
    - 对话包含大量 grep/搜索结果和文件读取

    **主要信号：** 伴随大量文件/工具使用的超长会话
  </Tab>
</Tabs>

**何时采取行动：** 性能下降是你的主要信号。如果 Verdent 的响应变得准确度降低、变慢或不一致——就开启一个全新会话或使用上下文管理策略。

<Warning>
  如果 Verdent 的响应变得含糊或重复，可能正在发生上下文过载。重置对话以恢复完整性能。
</Warning>

**注意：** 使用 `1M` token 上下文（Claude Sonnet 4.5）时，这些问题要少见得多。

---

## 何时重置上下文

<Tabs>
  <Tab title="性能指标">
    - 响应时间明显变慢
    - 响应准确度降低或不一致
    - Verdent 遗忘早期的上下文或模式
    - 接近上下文窗口上限（注意下降信号）

    **行动：** 质量下降时开启全新会话
  </Tab>
  <Tab title="任务切换">
    - 在不相关的功能或模块之间切换
    - 完成一个待办事项并转向下一个
    - 在内存密集型任务（大型重构、架构工作）之后
    - 从研究阶段转向实现阶段

    **行动：** 为新的主要任务开启新会话
  </Tab>
  <Tab title="提交之后">
    - 在将完成的功能提交到版本控制之后
    - 在开发工作流的逻辑检查点之间
    - 在测试-验证-提交循环之后

    **行动：** 提交 → 测试 → 新会话
  </Tab>
  <Tab title="会话管理">
    - 在开始重要新功能之前
    - 当对话历史变得很长时
    - 在完成多文件更改之后
    - 在不同类型的工作之间（调试 → 功能开发）

    **行动：** 在上下文下降之前主动开启全新会话
  </Tab>
</Tabs>

**最佳实践工作流：** 完成一个原子工作单元 → 测试 → 提交 → 清除上下文 → 为下一个任务重新开始。

**注意：** 开启新会话即可重置上下文。对于 `1M` token 上下文，需要清除的频率要低得多。

---

## 工作区组织的影响

工作区组织方式直接影响上下文的使用效率，以及 Verdent 浏览代码库的难易程度。

<Tabs>
  <Tab title="组织良好">
    **更小、更聚焦的文件：**

    - 许多小文件比少数大文件更高效地利用上下文
    - 更容易只加载相关模块
    - 对上下文中的内容有更精细的控制
    - 减少加载整个大文件的需要

    **清晰的目录结构：**

    - 合理的组织帮助 Verdent 定位相关文件
    - 基于功能或模块的组织改善上下文定位
    - 减少加载无关代码的需要

    **`Documentation in AGENTS.md:`**

    - 项目文档替代了加载大量示例文件的需要
    - 架构模式描述一次，反复引用
    - 编码规范集中记录
    - 减少探索性文件读取带来的上下文开销

    **优势：**

    - 在不加载整个代码库的情况下处理独立模块
    - 清晰的边界使会话更聚焦
    - 沿模块边界拆分工作变得自然
  </Tab>
  <Tab title="组织不佳">
    **问题：**

    - 庞大的单体文件迫使加载整个大型上下文
    - 结构不清晰需要加载大量文件才能理解架构
    - 同一文件中混杂多种关注点，在无关代码上浪费上下文

    **影响：**

    - 频繁出现上下文上限问题
    - 在无关代码上浪费 tokens
    - 难以将工作隔离到特定模块
    - 更频繁地需要重置会话

    **常见反模式：**

    - 单个 `5000+` 行且混杂多种关注点的文件
    - 根目录下有 `100+` 个文件的扁平目录结构
    - 功能/模块之间没有清晰分离
    - 缺乏集中的文档
  </Tab>
  <Tab title="改进策略">
    **重构方法：**

    - 将大文件拆分为更小、更聚焦的模块
    - 按功能或领域组织（而非按文件类型）
    - 创建清晰的目录层级
    - 将共享代码提取到独立模块

    **文档：**

    - 创建包含架构模式的 `AGENTS.md`
    - 集中记录编码规范
    - 每个模块维护 `README` 文件
    - 记录设计决策

    **上下文影响：** 对于标准 `200K` token 上下文，组织良好的工作区决定了你是频繁还是很少触及上限。对于 `1M` token 上下文，组织的影响较小，但仍能提升效率。
  </Tab>
</Tabs>

---

## 上下文优化策略

有效的上下文优化结合了监控、策略规划和技术配置。

<Tabs>
  <Tab title="监控">
    **注意性能信号：**

    - 在整个会话中监控响应质量和速度
    - 注意响应何时变慢或准确度降低
    - 手动跟踪对话长度和文件数量
    - 主动开启全新会话

    **需监控的内容：**

    - 响应的准确性和一致性
    - 首次响应时间（输入指示器延迟）
    - 整体响应完成时间
    - 对早期对话细节的记忆

    **子智能体管理：**

    - 不需要时禁用未使用的自定义子智能体
    - 每个启用的子智能体都会向系统开销添加定义
    - 只保留正在使用的子智能体处于启用状态
    - 在特定任务需要时再重新启用

    **行动阈值：** 当你注意到 `2-3` 个下降信号时，就该开启全新会话了。

    <Tip>
      将响应质量作为上下文健康度的领先指标，响应质量下降意味着该重置了。
    </Tip>
  </Tab>
  <Tab title="任务规划">
    **分块方法：**

    - 将大任务拆分为更小的部分
    - 在聚焦的会话中完成相关工作
    - 避免在长对话中混合不同类型的任务
    - 对于内存密集型工作，避免使用上下文窗口的最后五分之一

    **会话管理：**

    - 在主要任务之间开启全新会话
    - 提交后清除上下文：测试 → 验证 → 提交 → 新会话
    - 使用待办事项进行多步骤规划
    - 在各自聚焦的会话中处理待办事项

    **最佳实践模式：**

    1. 在 Plan Mode 中规划任务
    2. 在全新会话中执行聚焦的实现
    3. 测试并验证更改
    4. 提交到版本控制
    5. 为下一个任务开启新会话

    **任务隔离：** 将调试与功能开发分开，将研究与实现分开。
  </Tab>
  <Tab title="文件管理">
    **策略性纳入：**

    - 仅在必要时使用 `@-mentions` 进行显式文件纳入
    - 利用 `AGENTS.md` 文档而非加载大量文件
    - 对于大型项目，一次只处理一个模块
    - 将大文件拆分为更小、更聚焦的组件

    **文件选择原则：**

    - 只纳入需要修改或直接引用的文件
    - 优先使用文档而非加载示例文件
    - 不再需要时从上下文中移除文件
    - 即时加载文件，而非提前加载

    **大文件处理：**

    - 考虑拆分超过 `500` 行的文件
    - 将工具函数和辅助函数提取到独立文件
    - 使用清晰的模块边界
    - 在 `AGENTS.md` 中记录文件关系
  </Tab>
  <Tab title="工作流">
    **优化工作流：**

    监控性能 → 识别会话膨胀 → 禁用未使用的子智能体 → 主动开启全新会话 → 专注于任务质量

    **日常实践：**

    - 每个主要功能都以全新上下文开始
    - 频繁提交，并在提交之间重置
    - 让每次会话聚焦于单一目标
    - 在自然的断点处审视上下文使用情况

    **`For Extended Context (1M tokens):`** 借助 Claude Sonnet 4.5 更大的上下文窗口，优化变得不那么关键——专注于任务质量而非激进的上下文管理。不过，良好的实践仍能提升效率和组织性。
  </Tab>
</Tabs>

---

## 常见问题

<Accordion title="200K 与 1M 上下文窗口有什么区别？">
  标准模型（Claude 4.5 Sonnet、Haiku、GPT-5、GPT-5-Codex、MiniMax-M2）拥有 `200K` token 上下文窗口，足以应对大多数任务。Claude Sonnet 4.5 提供扩展的 `1M` token 上下文（大 5 倍），适用于包含 `1000+` 文件的大型代码库、复杂的多文件重构或长时间的开发会话。当输入超过 `200K` tokens 时，`1M` 上下文会自动激活，也可以显式选择。
</Accordion>

<Accordion title="我应该手动重置上下文，还是 Verdent 会自动重置？">
  你必须手动开启新会话来重置上下文——Verdent 不会自动清除上下文。最佳实践：在完成一个原子工作单元、测试并提交到版本控制后再重置。对于 `1M` token 上下文，需要重置的频率要低得多。
</Accordion>

<Accordion title="我可以安全地向上下文加载多少个文件？">
  没有固定的文件数量限制——这取决于文件大小和总 token 数。对于 `200K` 上下文，避免加载 `20+` 个大文件（每个 `>1000` 行）。专注于与当前任务直接相关的文件。有选择地使用 `@-mentions`，并利用 `AGENTS.md` 文档而非加载大量示例文件。使用 `1M` 上下文时，文件选择的重要性大幅降低。
</Accordion>

<Accordion title="哪些内容会计入我的上下文窗口？">
  会话中的所有内容：对话中的全部消息、加载进上下文的文件内容、工具输出（grep/搜索结果、文件读取）、系统提示词和指令，以及 MCP 服务器定义。这些都会消耗你总上下文容量中的 tokens。
</Accordion>

<Accordion title="重置上下文会丢失我的工作吗？">
  不会——重置上下文只会从内存中清除对话历史和已加载的文件。你实际的代码更改、提交和文件修改都会保留。为安全起见，请在重置上下文前始终将工作提交到版本控制。重置 → 开启全新会话 → 继续处理下一个任务。
</Accordion>

---

## 另请参阅

<CardGroup cols={3}>
  <Card title="提示词工程" icon="message" href="/docs/verdent-for-vscode/best-practices/prompts">
    编写有效提示词的最佳实践
  </Card>
  <Card title="执行模式" icon="toggle-on" href="/docs/verdent-for-vscode/execution-modes/overview">
    理解执行模式及其资源影响
  </Card>
  <Card title="资源管理" icon="chart-line" href="/docs/verdent-for-vscode/resource-management/monitoring">
    监控 token 使用、积分和性能
  </Card>
</CardGroup>
