Skip to content

Context 控制技巧

Context 指的是你让 Cursor 在这次对话里参考哪些材料。Rules 解决长期约定,Context 解决眼前任务:这次到底要看哪个文件、哪个目录、哪份文档、哪段网页说明。

你让 AI 改一个登录 bug,它需要看的不是整个项目,而是登录页、认证请求、接口返回结构和错误日志。给少了,它会猜;给多了,它会在无关文件里绕路。

常用引用方式

在 Cursor 里用 @ 引用上下文,是最直接的控制方式。不同版本界面会有差异,但核心思路差不多:你主动告诉 AI “看这里”。

@file 适合精确任务。比如你要改 LoginForm.tsx 的校验逻辑,直接引用这个文件,比让 AI 自己搜索更稳。

text
@src/components/LoginForm.tsx
帮我把登录表单的校验规则改成:邮箱必填且格式正确,密码不少于 8 位。
不要改样式。

@folder 适合让 AI 理解一组相关文件。比如要新增一个订单接口,你可以引用 src/modules/order/,让它看到已有的 controller、service、repository 是怎么组织的。

text
@src/modules/order
参考这个模块的写法,帮我新增一个退款记录查询接口。
保持现有分层,不要新建额外框架。

@web 适合需要参考网页内容的任务。比如某个第三方 API 文档刚更新,你不应该只靠模型记忆。

text
@web https://example.com/docs/webhook
根据这份文档,帮我检查当前 webhook 签名校验有没有漏掉必要字段。

@docs 适合引用已接入的官方文档或库文档。比如你在用某个 UI 组件库,不确定组件参数,就让 Cursor 参考文档,而不是让它凭记忆写。

text
@docs shadcn
帮我用项目里已有的样式方式实现一个可搜索的下拉选择组件。

如果某个功能名在你的 Cursor 版本里显示略有不同,不需要纠结名称。关键是主动把材料喂进去,而不是只说“你看看项目里怎么写”。

什么时候必须主动引用

小项目里,Cursor 可能靠打开的文件和搜索就能猜到上下文。项目一变大,就不能把这个责任全交给 AI。

下面这些任务建议主动引用:

  • 改某个明确文件里的逻辑
  • 参考一个已有模块新增同类功能
  • 修复带有具体错误堆栈的问题
  • 遵循第三方库的新文档
  • 修改会影响多个文件的接口约定

比如你要让 AI 改一个支付回调 bug,只说“帮我修支付回调失败”太宽。更好的说法是:

text
@src/api/payment/callback.ts
@src/lib/payment/signature.ts
@docs stripe

支付回调在验签时失败。错误日志是:
Signature verification failed: timestamp outside tolerance

请先解释当前验签流程,再判断要改哪里。
不要改订单状态流转逻辑。

这段上下文里有入口文件、签名工具、官方文档和错误信息,AI 的搜索范围会小很多。

上下文不是越多越好

把整个 src/ 目录丢给 AI,看起来省事,实际经常会让结果变差。上下文窗口有限,材料越多,当前任务真正相关的信息越容易被冲淡。

你可以按“从窄到宽”的方式给:

  1. 先给报错文件或目标文件
  2. 如果它需要调用关系,再补相关 service、hook、类型定义
  3. 如果它要保持风格,再给一个同类实现作为参考
  4. 只有在不知道入口时,才让它先搜索或引用较大的目录

这个顺序能避免 AI 一开始就把任务理解成“大范围重构”。

上下文漂移

多轮对话里还有一个问题:前面聊过的内容会继续影响后面的回答。你一开始让 Cursor 重构表单,后来又让它修接口错误,它可能还带着“重构”的倾向,顺手改掉一些你没要求的东西。

出现这些信号时,可以认为上下文开始漂移:

  • AI 反复提到已经不相关的文件
  • 它在回答里延续旧任务的目标
  • 修改范围越来越大
  • 你需要不断说“不是这个意思”

这时候不要硬聊。直接重置任务边界:

text
忽略上一个重构任务。
这次只处理接口 500 问题,范围限定在:
@src/api/users.ts
@src/lib/db.ts

目标:找到空指针来源并修复。
不要改 UI,不要整理代码风格。

如果对话已经很乱,新开一个聊天通常更快。把必要文件重新引用一遍,比在旧上下文里不断纠偏省时间。

一个上下文选择例子

假设任务是“给待办应用新增搜索功能”。你可以这样选上下文:

text
@src/components/TodoList.tsx
@src/hooks/useTodos.ts
@src/types/todo.ts

我要给待办列表加搜索框。
搜索只在前端过滤,不请求后端。
匹配范围:标题和备注。
请先说明你准备改哪些文件,确认后再改。

这里没有引用整个项目,也没有引用所有组件。TodoList 是展示入口,useTodos 是数据来源,todo.ts 是类型边界。对于这个任务已经够了。

等你能稳定选择上下文,Cursor 的结果会明显可控。后面遇到生成偏了、改多了、上下文超限,基本都能从“给了什么上下文”这个角度开始排查。

面向开发者的 AI 实战路线——Vibe Coding 与 AI 应用开发