上下文窗口是一个以 token 为单位的有限工作空间。你的指令、检索到的文档、工具输出和对话历史记录都会争夺空间。如果你的组织方式不合理,Claude 就会搞不清哪些信息是重要的。
当上下文管理不当,可能会遇到如下五种问题:
| 模式 | 描述 | 举例 | 处理 |
|---|---|---|---|
| 错误残留 | 早期错误、失败尝试、错误假设留在上下文,导致后续推理建立在错误的基础上 | AI 误判了项目结构,后续一直沿着这个误判回复 | /clear |
| 规则冲突 | 同时存在互相矛盾的信息 / 规则 | claude.md 说用 uv,readme 说用 pipenv,用户临时说用 poetry | 明确优先级:用户指令 > claude.md > readme > 注释 |
| 惯性延续 | 旧任务的行为模式权重太高 | 模型看到大量历史上下文一直在改 A,会认为现在大概率还是围绕 A,实际上任务可能已经变成 B | 不要让一个会话连续承载太多不同类型的任务 |
| 信息干扰 | 上下文塞了太多无关工具、文档,模型不知道哪些和当前任务有关 | 本次做 API 鉴权,但上下文里同时有 Docker 部署文档、数据采集脚本说明、前端组件规范,AI 可能误以为这次任务和 Docker、前端等有关,开始搜索不必要的文件,甚至调用不该用的工具 | skills 按需加载 |
| 费用 | 模型按 token 阶梯收费 | 0-32k: 2 元 32-64k: 8 元 |
六个支柱
上下文工程包含六个相互关联的组成部分
代理 (Agents)
每个 agent 都有干净、专注的上下文,主 agent 用来协调各个子 agent 的结果
- 单个 agent:
研究、规划、构建、测试和部署支付系统 - 多 agent:
- 主 agent:
构建支付系统 - 研究 agent:
收集需求 - 后端 agent:
构建支付宝 SDK 集成 - 前端 agent:
创建支付 UI
- 主 agent:
查询增强 (Query Augmentation)
用户的输入可能含糊不清,plan 可以在执行前对其进行优化
- 用户输入: “处理支付 bug”
- plan 优化:
- 分析支付模块最新修改
- 识别日志中的错误信息
- 受影响的文件作用域
- 生成修复测试用例
检索 (Retrieval)
从海量可能相关的信息中,挑出当前任务真正需要的那一小撮
例如你让 Claude Code 修复登录失败的问题,模型需要的不是整个项目,而是:
- auth 相关文件
- 最近修改过的登录逻辑
- 错误日志
- 登录接口约定
- 项目里的错误处理规范
- 测试规范
提示技巧 (Prompting Techniques)
模型上下文窗口变大 (1M),可以看到更多东西,但不代表:
- 模型 “知道哪些最重要”
- 模型 “知道哪些是规则,哪些是参考”
- 模型 “知道冲突时该听谁的”
- 模型 “知道按什么步骤处理”
- 模型 “不会被无关内容干扰”
信息塞进上下文不等于模型会用好,信息组织的方法、顺序、时机很重要
Prompting Techniques 本质上就是在给上下文加 “语义权重”,上下文里的信息可以分为几种类型:
目标:我要做什么
背景:为什么要做
证据:现在发生了什么
材料:相关代码 / 日志 / 文档
约束:什么不能做
流程:应该怎么做
验收:怎样算完成
输出:最后怎么汇报如果不分层,所有内容混在一起,模型就要自己猜:
这句话是任务目标,还是背景?
这个规则是必须遵守,还是参考?
这个文档是最新的,还是历史遗留?
这个错误是主线,还是旁枝?Prompting Techniques 的作用,就是减少这种猜测
记忆 (Memory)
将无状态的模型转变为能够在交互过程中保持上下文的系统
通过会话管理和不断完善的文档,你可以创建一个高度专属于你代码库的记忆层。随着时间推移,Claude 将逐渐精通你的特定代码库
工具 (Tools)
工具将理论推导与实际操作联系起来
读取、写入、bash 脚本等,以及用于外部集成的 MCP
一个完整示例
任务: 升级项目里的 SQLAlchemy 用法
完整链路如下:
- 查询增强 (Query Augmentation)
把 “升级 SQLAlchemy” 细化成:- 检查当前版本
- 找出 deprecated API
- 查询官方迁移文档
- 修改代码
- 补测试
- 检索 (Retrieval)
- 读取 pyproject.toml
- grep SQLAlchemy 用法
- 用 MCP / Context7 查 SQLAlchemy 文档
- 找项目里的 repository 层规范
- 提示技巧 (Prompting Techniques)
把材料组织成:- 当前版本
- 目标版本
- 受影响文件
- 迁移规则
- 禁止破坏的行为
- 分步骤执行计划
- 工具 (Tools)
- Read / Edit / Bash / pytest
- 记忆 (Memory)
- 把迁移决策写回 docs 或 CLAUDE.md
- 代理 (Agents)
- 一个 agent 查文档
- 一个 agent 改代码
- 一个 agent 做测试审查