Appearance
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,看起来省事,实际经常会让结果变差。上下文窗口有限,材料越多,当前任务真正相关的信息越容易被冲淡。
你可以按“从窄到宽”的方式给:
- 先给报错文件或目标文件
- 如果它需要调用关系,再补相关 service、hook、类型定义
- 如果它要保持风格,再给一个同类实现作为参考
- 只有在不知道入口时,才让它先搜索或引用较大的目录
这个顺序能避免 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 的结果会明显可控。后面遇到生成偏了、改多了、上下文超限,基本都能从“给了什么上下文”这个角度开始排查。