上下文管理
有效管理上下文以获得更好的结果
有效的上下文管理能确保 Verdent 在正确的时间获得正确的信息,同时避免因上下文过载导致的性能下降。
你将学到什么
- 理解上下文窗口及其限制
- 有策略地选择文件以获得最佳上下文
- 识别并应对上下文过载
- 何时重置上下文以获得更好的性能
- 工作区组织方式如何影响上下文
理解上下文窗口
Verdent for VS Code 的上下文窗口大小取决于所使用的模型。
大多数模型使用标准的 200K 上下文窗口:
- Claude 4.5 Sonnet —— 适合复杂任务的均衡选择
- Claude 4.5 Haiku —— 快速高效
- GPT-5 —— 推理能力出色(Beta)
- GPT-5-Codex —— 为编码优化(Beta)
容量:
- 约
200,000tokens 的总记忆容量 - 足以应对大多数开发任务和中型项目
包含的内容:
- 对话中的所有消息
- 加载进上下文的文件内容
- 工具输出和响应
- 系统提示词和指令
- MCP 服务器定义
性能:
- 接近上限时会明显下降
- 注意上下文过载的信号(响应变慢、输出准确度降低)
- 更频繁地重置上下文以获得最佳性能
当显式选择,或输入超过 200K tokens 时,Claude Sonnet 4.5 提供扩展上下文(1M tokens)。
容量:
1,000,000tokens 的总记忆容量- 比标准模型大 5 倍
优势:
- 非常适合无需分块就能加载整个大型代码库
- 消除了大型项目中的大部分上下文管理顾虑
- 在触及上下文上限前可工作更长时间
- 需要重置会话的次数更少
何时使用:
- 包含
1000+文件的大型代码库 - 跨整个项目的复杂多文件重构
- 横跨多个相关任务的长时间开发会话
- 当你希望尽量减少上下文管理开销时
有策略地选择文件
选择文件时要有策略,以优化上下文使用并避免触及上限。
先从较少的文件开始,仅在需要时再添加,Verdent 在对话中随时可以读取更多文件。
使用 @ 提及进行显式纳入
@filename.jsVerdent 会自动加载相关文件,但 @-mentions 能确保精确的上下文。要有选择性——只纳入与当前任务直接相关的文件。
监控上下文使用
- 注意会话变长时的性能下降
- 留意对话长度和文件数量
- 在可能时从上下文中移除不必要的文件
避免上下文过载
- 将大任务拆分为更小的部分,每个任务使用更少的文件
- 只关注相关文件——不要一次加载整个代码库
- 使用 MCP 服务器管理来禁用未使用的集成
最佳实践
- 只纳入需要修改或引用的文件
- 引用已有的模式,而不是加载示例文件
- 对于大型代码库,一次只处理一个模块
- 使用项目文档(
AGENTS.md)而不是加载大量文件 - 对于内存密集型任务,避免使用上下文窗口的最后五分之一
对于扩展上下文 (1M tokens)
文件选择的重要性大幅降低——你通常可以加载整个项目仓库而不会触及上限。
识别上下文过载
信号:
- 响应准确度降低或不完整
- 遗漏对话中较早出现的重要细节
- 难以在长会话中保持一致性
- 对最近的更改或上下文感到困惑
具体示例:
- 提出你在本次会话早些时候已经否决的方案
- 忽略你在
20条消息之前确立的编码约定 - 生成与对话早期所做更改相冲突的代码
- 提出与之前讨论过的项目架构不符的实现方案
主要信号: Verdent 的响应准确度降低或不一致
信号:
- 响应时间明显变慢
- 开始响应前的处理延迟变长
- 消息之间的延迟增加
具体示例:
- 通常需要
5-10秒的响应现在需要30+秒 - 发送消息后,输入指示器出现前有明显延迟
- 流式响应开始得比平常慢得多
- 工具执行(文件读取、搜索)耗时明显变长
主要信号: 响应耗时比平常明显更长
信号:
- 要求澄清已经提供过的信息
- 忘记之前确立的模式或约定
- 无法引用之前讨论过的文件或代码
- 重复询问项目结构
具体示例:
- 在你
30条消息前已说明使用 React 后,仍问"你用的是什么框架?" - 重复索要你已经
@-mentioned多次的文件路径 - 不记得你在会话开始时确立的命名约定
- 重新解释你已附理由否决的概念或方法
主要信号: Verdent 询问已经讨论过的内容
信号:
- 接近
200Ktoken 上限的最后五分之一(已使用约160K+tokens) - 包含大量文件读取和工具输出的长对话
- 启用了多个带有大量工具定义的 MCP 服务器
- 反复将大文件加载进上下文
具体示例:
- 会话已运行
2+小时,包含100+条消息 - 你在对话中加载了
20+个文件,@-mentions - 多个大文件(每个
>1000行)都在上下文中 - 你启用了
5+个带有大量工具定义的 MCP 服务器 - 对话包含大量 grep/搜索结果和文件读取
主要信号: 伴随大量文件/工具使用的超长会话
何时采取行动: 性能下降是你的主要信号。如果 Verdent 的响应变得准确度降低、变慢或不一致——就开启一个全新会话或使用上下文管理策略。
如果 Verdent 的响应变得含糊或重复,可能正在发生上下文过载。重置对话以恢复完整性能。
注意: 使用 1M token 上下文(Claude Sonnet 4.5)时,这些问题要少见得多。
何时重置上下文
- 响应时间明显变慢
- 响应准确度降低或不一致
- Verdent 遗忘早期的上下文或模式
- 接近上下文窗口上限(注意下降信号)
行动: 质量下降时开启全新会话
- 在不相关的功能或模块之间切换
- 完成一个待办事项并转向下一个
- 在内存密集型任务(大型重构、架构工作)之后
- 从研究阶段转向实现阶段
行动: 为新的主要任务开启新会话
- 在将完成的功能提交到版本控制之后
- 在开发工作流的逻辑检查点之间
- 在测试-验证-提交循环之后
行动: 提交 → 测试 → 新会话
- 在开始重要新功能之前
- 当对话历史变得很长时
- 在完成多文件更改之后
- 在不同类型的工作之间(调试 → 功能开发)
行动: 在上下文下降之前主动开启全新会话
最佳实践工作流: 完成一个原子工作单元 → 测试 → 提交 → 清除上下文 → 为下一个任务重新开始。
注意: 开启新会话即可重置上下文。对于 1M token 上下文,需要清除的频率要低得多。
工作区组织的影响
工作区组织方式直接影响上下文的使用效率,以及 Verdent 浏览代码库的难易程度。
更小、更聚焦的文件:
- 许多小文件比少数大文件更高效地利用上下文
- 更容易只加载相关模块
- 对上下文中的内容有更精细的控制
- 减少加载整个大文件的需要
清晰的目录结构:
- 合理的组织帮助 Verdent 定位相关文件
- 基于功能或模块的组织改善上下文定位
- 减少加载无关代码的需要
Documentation in AGENTS.md:
- 项目文档替代了加载大量示例文件的需要
- 架构模式描述一次,反复引用
- 编码规范集中记录
- 减少探索性文件读取带来的上下文开销
优势:
- 在不加载整个代码库的情况下处理独立模块
- 清晰的边界使会话更聚焦
- 沿模块边界拆分工作变得自然
问题:
- 庞大的单体文件迫使加载整个大型上下文
- 结构不清晰需要加载大量文件才能理解架构
- 同一文件中混杂多种关注点,在无关代码上浪费上下文
影响:
- 频繁出现上下文上限问题
- 在无关代码上浪费 tokens
- 难以将工作隔离到特定模块
- 更频繁地需要重置会话
常见反模式:
- 单个
5000+行且混杂多种关注点的文件 - 根目录下有
100+个文件的扁平目录结构 - 功能/模块之间没有清晰分离
- 缺乏集中的文档
重构方法:
- 将大文件拆分为更小、更聚焦的模块
- 按功能或领域组织(而非按文件类型)
- 创建清晰的目录层级
- 将共享代码提取到独立模块
文档:
- 创建包含架构模式的
AGENTS.md - 集中记录编码规范
- 每个模块维护
README文件 - 记录设计决策
上下文影响: 对于标准 200K token 上下文,组织良好的工作区决定了你是频繁还是很少触及上限。对于 1M token 上下文,组织的影响较小,但仍能提升效率。
上下文优化策略
有效的上下文优化结合了监控、策略规划和技术配置。
注意性能信号:
- 在整个会话中监控响应质量和速度
- 注意响应何时变慢或准确度降低
- 手动跟踪对话长度和文件数量
- 主动开启全新会话
需监控的内容:
- 响应的准确性和一致性
- 首次响应时间(输入指示器延迟)
- 整体响应完成时间
- 对早期对话细节的记忆
子智能体管理:
- 不需要时禁用未使用的自定义子智能体
- 每个启用的子智能体都会向系统开销添加定义
- 只保留正在使用的子智能体处于启用状态
- 在特定任务需要时再重新启用
行动阈值: 当你注意到 2-3 个下降信号时,就该开启全新会话了。
将响应质量作为上下文健康度的领先指标,响应质量下降意味着该重置了。
分块方法:
- 将大任务拆分为更小的部分
- 在聚焦的会话中完成相关工作
- 避免在长对话中混合不同类型的任务
- 对于内存密集型工作,避免使用上下文窗口的最后五分之一
会话管理:
- 在主要任务之间开启全新会话
- 提交后清除上下文:测试 → 验证 → 提交 → 新会话
- 使用待办事项进行多步骤规划
- 在各自聚焦的会话中处理待办事项
最佳实践模式:
- 在 Plan Mode 中规划任务
- 在全新会话中执行聚焦的实现
- 测试并验证更改
- 提交到版本控制
- 为下一个任务开启新会话
任务隔离: 将调试与功能开发分开,将研究与实现分开。
策略性纳入:
- 仅在必要时使用
@-mentions进行显式文件纳入 - 利用
AGENTS.md文档而非加载大量文件 - 对于大型项目,一次只处理一个模块
- 将大文件拆分为更小、更聚焦的组件
文件选择原则:
- 只纳入需要修改或直接引用的文件
- 优先使用文档而非加载示例文件
- 不再需要时从上下文中移除文件
- 即时加载文件,而非提前加载
大文件处理:
- 考虑拆分超过
500行的文件 - 将工具函数和辅助函数提取到独立文件
- 使用清晰的模块边界
- 在
AGENTS.md中记录文件关系
优化工作流:
监控性能 → 识别会话膨胀 → 禁用未使用的子智能体 → 主动开启全新会话 → 专注于任务质量
日常实践:
- 每个主要功能都以全新上下文开始
- 频繁提交,并在提交之间重置
- 让每次会话聚焦于单一目标
- 在自然的断点处审视上下文使用情况
For Extended Context (1M tokens): 借助 Claude Sonnet 4.5 更大的上下文窗口,优化变得不那么关键——专注于任务质量而非激进的上下文管理。不过,良好的实践仍能提升效率和组织性。
常见问题
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 上下文会自动激活,也可以显式选择。
我应该手动重置上下文,还是 Verdent 会自动重置?
你必须手动开启新会话来重置上下文——Verdent 不会自动清除上下文。最佳实践:在完成一个原子工作单元、测试并提交到版本控制后再重置。对于 1M token 上下文,需要重置的频率要低得多。
我可以安全地向上下文加载多少个文件?
没有固定的文件数量限制——这取决于文件大小和总 token 数。对于 200K 上下文,避免加载 20+ 个大文件(每个 >1000 行)。专注于与当前任务直接相关的文件。有选择地使用 @-mentions,并利用 AGENTS.md 文档而非加载大量示例文件。使用 1M 上下文时,文件选择的重要性大幅降低。
哪些内容会计入我的上下文窗口?
会话中的所有内容:对话中的全部消息、加载进上下文的文件内容、工具输出(grep/搜索结果、文件读取)、系统提示词和指令,以及 MCP 服务器定义。这些都会消耗你总上下文容量中的 tokens。
重置上下文会丢失我的工作吗?
不会——重置上下文只会从内存中清除对话历史和已加载的文件。你实际的代码更改、提交和文件修改都会保留。为安全起见,请在重置上下文前始终将工作提交到版本控制。重置 → 开启全新会话 → 继续处理下一个任务。