AgentHarness 课程

上下文管理

Token优化、上下文窗口、缓存机制、精准引用

引言:为什么上下文管理如此重要?

AI 模型有上下文窗口限制(Token 上限)。你可以把上下文窗口想象成 AI 的「工作记忆」——它只能同时记住有限的信息。在长对话中,上下文会逐渐填满,导致:

  • 响应变慢
  • Token 消耗增加(直接关系到费用)
  • AI 遗忘早期信息
  • 回答质量下降

高效的上下文管理能显著降低 Token 消耗和费用,同时提升响应质量。本章将深入讲解上下文管理的原理和实用技巧。


1. 上下文窗口工作原理

1.1 上下文窗口结构

+--------------------------------------------------+
|                  上下文窗口                        |
|                                                   |
|  [系统提示词 + 项目规则]     <- 固定部分(缓存)    |
|  [当前文件上下文]            <- 动态部分            |
|  [引用的文件内容]            <- 用户控制            |
|  [对话历史]                  <- 持续增长            |
|  [工具调用结果]              <- 按需加载            |
|  [AI 的响应]                 <- 生成部分            |
|                                                   |
+--------------------------------------------------+
|  可用空间 = 总窗口 - 已占用空间                     |
+--------------------------------------------------+

1.2 Token 消耗估算

内容类型大约 Token 数说明
1 行代码10-20 tokens取决于代码复杂度
1 个文件(100行)1,000-2,000 tokens包括格式化字符
1 个文件(500行)5,000-10,000 tokens大文件消耗显著
1 轮对话(用户+AI)200-500 tokens简单问答
1 轮复杂对话1,000-3,000 tokens包含代码生成
工具调用结果500-2,000 tokens文件读取、命令输出
系统提示词2,000-5,000 tokens固定开销

1.3 窗口满载的表现

症状原因解决方案
AI 忘记之前的对话早期对话被截断开新会话
响应变慢上下文处理时间增加减少上下文
回答质量下降关键信息被挤出窗口精准引用文件
Token 费用飙升大量重复上下文利用缓存机制

2. 五个核心优化技巧

2.1 技巧一:长对话及时开新会话

原则:每个独立任务开一个新会话

不推荐:
在一个会话中处理:修 Bug -> 写新功能 -> 做代码审查 -> 部署

推荐:
会话 1:修复登录 Bug
会话 2:实现用户管理功能
会话 3:代码审查
会话 4:部署

判断标准:如果话题转换了,就开新会话。

2.2 技巧二:精准引用文件

不推荐

帮我看看这个项目有什么问题

(AI 需要读取大量文件,消耗大量 Token)

推荐

请检查 @src/api/auth.ts 中的认证逻辑是否有安全问题

(AI 只需要读取一个文件,Token 消耗大幅减少)

2.3 技巧三:使用 @ 引用语法

@ 引用是精准控制上下文的关键工具:

引用方式说明示例
@filename引用整个文件@src/App.tsx
@filename:10-20引用特定行@src/utils.ts:10-20
@folder/引用目录结构@src/components/
@symbol引用符号定义@UserService
请根据 @src/types/user.ts 中的类型定义,
修改 @src/api/users.ts 中的 API 实现

2.4 技巧四:及时关闭不需要的 MCP 工具

MCP 工具和扩展会占用上下文。不用时及时禁用:

/settings -> MCP 工具 -> 禁用不需要的工具

2.5 技巧五:合理切换模型

场景推荐模型Token 消耗
简单补全轻量模型
复杂推理高级模型
代码审查平衡模型
快速问答轻量模型

3. 缓存机制

3.1 缓存工作原理

CodeBuddy 采用智能缓存策略:

首次请求:
[系统提示词] + [项目规则] + [用户输入] -> 全量计算 -> 响应

后续请求:
[系统提示词] + [项目规则] + [新用户输入] -> 缓存命中部分 + 增量计算 -> 响应

缓存命中率:系统提示词和项目规则的缓存命中率可达 90%+。

3.2 节省效果

内容首次 Token缓存后 Token节省比例
系统提示词3,000~30090%
项目规则1,000~10090%
对话历史变化变化0%

4. 实战:监控和优化 Token 使用

4.1 查看 Token 使用

在 CodeBuddy 界面底部,可以看到当前会话的 Token 使用情况:

Tokens: 12,450 / 128,000 (9.7%)

4.2 优化前后对比

优化前(一个长会话处理 5 个任务):

  • 总 Token:85,000
  • 费用:$0.85
  • 质量:后期任务质量下降

优化后(5 个独立会话):

  • 总 Token:35,000
  • 费用:$0.35
  • 质量:每个任务质量稳定

5. 常见陷阱

陷阱 1:在一次对话中处理太多不相关的任务

现象:AI 开始「遗忘」早期任务的细节

解决:每个任务开新会话,用 Memory 系统传递关键信息

陷阱 2:大文件全量引用

现象:引用了一个 2000 行的文件,上下文瞬间被占满

解决:使用 @filename:100-150 只引用需要的代码段

陷阱 3:缓存不等于免费

现象:以为缓存命中就不消耗 Token

解决:缓存减少的是计算成本,但每次请求仍有基础 Token 消耗


总结

技巧效果
及时开新会话避免上下文溢出,保持回答质量
精准引用文件减少 50%+ Token 消耗
使用 @ 引用精确控制上下文内容
关闭不用的 MCP释放上下文空间
合理切换模型平衡质量和成本

下一章预告:我们将学习斜杠命令,了解如何用快捷操作提升开发效率。