上下文管理¶
上下文质量直接决定 AI 输出质量。本章讲解如何精准提供上下文,避免信息过载和信息缺失。
上下文的三个维度¶
1. 项目上下文¶
让 AI 理解项目的整体结构和约定:
项目类型:Next.js 14 App Router + TypeScript
状态管理:Zustand
样式:Tailwind CSS + shadcn/ui
测试:Vitest + Testing Library
API:tRPC
数据库:PostgreSQL + Prisma
这类信息适合放在项目规则文件(如 .cursor/rules/、CLAUDE.md、.kiro/steering/)中,每次自动注入。详见项目规则文件。
2. 任务上下文¶
当前任务直接相关的代码和信息:
- 要修改的文件内容
- 相关的类型定义
- 依赖的接口或函数签名
- 现有的测试用例
3. 约束上下文¶
告诉 AI 不能做什么:
上下文选择策略¶
最小相关集原则¶
graph LR
A[所有相关文件] --> B{是否直接影响任务?}
B -->|是| C[包含]
B -->|否| D{是否提供必要约定?}
D -->|是| E[摘要包含]
D -->|否| F[排除]
按任务类型选择¶
必须包含: - 相邻的同类功能实现(作为风格参考) - 相关的类型定义文件 - 测试文件模板
必须包含: - 复现步骤 - 出错的完整堆栈 - 相关模块代码 - 最近的相关改动(git diff)
必须包含: - 当前实现 - 重构目标(接口保持不变 or 允许改变) - 现有测试用例
上下文过载的信号¶
当你发现以下情况,说明上下文过多:
- AI 开始修改你没有提到的文件
- AI 的回复开始讨论与任务无关的优化
- AI 忘记了你在同一对话中设置的约束
解决方案:开启新对话,只带入当前任务必需的上下文。
上下文不足的信号¶
- AI 生成的代码风格与项目不一致
- AI 引入了项目中已有的功能的重复实现
- AI 做出了与项目约定冲突的假设
解决方案:补充项目约定和相邻代码示例。