AI 编程的上下文管理:@Files、@Folders 与提问技巧
2026-06-06cursor · claude-code · 提问技巧 · 效率 · 上下文
AI 编程工具的核心能力之一是理解项目上下文。但上下文是一把双刃剑——给得太少,AI 会"瞎猜";给得太多,Token 迅速耗尽,回复质量反而下降。本文介绍如何精准控制 AI 的上下文范围,用最小的 Token 消耗获得最准确的回答。
一、上下文范围与 Token 成本
不同 AI 工具提供了不同粒度的上下文引用方式。选择合适的方式直接影响回复质量和 Token 消耗:
使用方式:以下 @ 引用语法为 Cursor 的 Chat / Composer 输入框功能——在对话框中输入 @ 即可搜索文件/文件夹。 Claude Code 不使用 @ 语法,直接在 prompt 中描述文件路径或名称即可。
| 引用方式 | 扫描范围 | Token 消耗 | 适合场景 |
|---|---|---|---|
| @Files | 指定的一到多个文件 | 低 | 精准修改已知文件、修复局部 Bug |
| @Folders | 整个目录 | 中低 | 针对特定模块进行整体重构 |
| @Definitions | 跨文件的类型/函数定义 | 中等 | 追踪 API 或组件的调用链路 |
| @Codebase | 全局向量索引 | 高 | 首次接手陌生项目、全局架构分析 |
关于 @Codebase:这是消耗 Token 最大的引用方式。仅在首次接手陌生项目、或需要全局架构级重构时使用。日常的局部修改使用 @Files 或 @Folders 即可。
二、高效提问公式
模糊的提问得到的答案也是模糊的。一个结构清晰的提问应该包含三个要素:
[明确动作] + [精准上下文] + [输出约束]
对比示例
text
# 不推荐的提问方式
"帮我看看这个侧边栏怎么加个按钮,为什么老报错?"
# 问题:AI 不知道"这个侧边栏"是哪个文件,开始猜测上下文
# 推荐的提问方式
"在 @sidebar.tsx 中新增一个外部跳转按钮。参考 @types.ts 中的
导航项类型定义。保持现有的液态玻璃样式,不要修改其他既有逻辑。"推荐的提问同时满足了三个要素:
- 明确动作:新增一个外部跳转按钮
- 精准上下文:@sidebar.tsx + @types.ts
- 输出约束:保持玻璃样式,不修改其他逻辑
三、索引同步问题
AI 工具的代码索引不是实时更新的。在以下操作后,索引可能过期:
- 切换 Git 分支
- 批量删除或移动文件
- 大规模重构目录结构
操作建议:在上述操作后,在 IDE 设置中手动触发 "Resync Index"(重新索引)。否则 AI 会基于旧的缓存数据进行检索,导致生成过期的代码。
四、分场景实践建议
场景一:修复已知 Bug
使用 @Files 引用出问题的文件 + 相关类型定义文件。例如:
text
"@components/UserList.tsx 组件在数据为空时抛出 TypeError。参考 @types/user.ts 中的 User 类型定义,添加空数据保护逻辑。"场景二:新增功能
使用 @Folders 引用相关模块目录,让 AI 了解已有的代码风格:
text
"在 @src/app/api/ 下新增一个 /users/[id] 的 GET 端点。参考 @src/lib/ 中的数据库查询工具函数,返回 JSON 格式的用户信息。"场景三:接手陌生项目
首次接触项目时,可以分步使用上下文:
- 先用 @Codebase 问:"概述这个项目的技术栈和目录结构"
- 然后用 @Folders 深入感兴趣的模块
- 具体修改时切换为 @Files