跳转至

上下文管理

上下文质量直接决定 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 不能做什么:

- 不引入新的 npm 依赖
- 不修改 auth/ 目录下的文件
- 保持现有 API 接口不变
- 不改动数据库 Schema

上下文选择策略

最小相关集原则

graph LR
    A[所有相关文件] --> B{是否直接影响任务?}
    B -->|是| C[包含]
    B -->|否| D{是否提供必要约定?}
    D -->|是| E[摘要包含]
    D -->|否| F[排除]

按任务类型选择

必须包含: - 相邻的同类功能实现(作为风格参考) - 相关的类型定义文件 - 测试文件模板

必须包含: - 复现步骤 - 出错的完整堆栈 - 相关模块代码 - 最近的相关改动(git diff)

必须包含: - 当前实现 - 重构目标(接口保持不变 or 允许改变) - 现有测试用例

上下文过载的信号

当你发现以下情况,说明上下文过多:

  • AI 开始修改你没有提到的文件
  • AI 的回复开始讨论与任务无关的优化
  • AI 忘记了你在同一对话中设置的约束

解决方案:开启新对话,只带入当前任务必需的上下文。

上下文不足的信号

  • AI 生成的代码风格与项目不一致
  • AI 引入了项目中已有的功能的重复实现
  • AI 做出了与项目约定冲突的假设

解决方案:补充项目约定和相邻代码示例。

上下文模板

【项目约定】
- 语言:TypeScript,严格模式
- 框架:Next.js 14 App Router
- 样式:Tailwind CSS,不使用内联样式
- 错误处理:统一使用 Result<T, E> 类型

【相关文件】
// src/types/user.ts(类型定义)
[文件内容]

// src/lib/api.ts(API 工具函数)
[文件内容]

【任务】
[具体任务描述]