首页/教程/编程

Cursor 实用技巧:规则文件与上下文管理

教程 · 编程学啦 AI 编辑部··约 9 分钟

很多人装了 Cursor 只用来“聊天写代码”,结果 AI 经常忽略项目约定、改错文件、越聊越乱。其实决定效果的关键只有两件事:给 AI 定规矩(规则文件)和喂对信息(上下文管理)。本文围绕这两点展开。

一、Cursor 是什么

Cursor 是一款基于 VS Code 的 AI 代码编辑器。因为底层是 VS Code,所以:

在此基础上,它把 AI 深度集成进了编辑器:代码补全、对话、自动修改多个文件、执行终端命令等。

提示Cursor 更新很频繁,菜单位置、按钮名称和默认快捷键可能随版本变化。本文尽量描述功能本身,具体入口请以你当前版本的界面和设置页为准。

二、三种基本用法:Tab、Chat 与 Agent

Tab 补全

写代码时,Cursor 会以灰色文字给出建议,按 Tab 接受。它不只补全当前行,还会根据你刚做的修改,预测接下来要改的地方。比如你把一个函数参数改了名,它可能会提示你把后面几处用法一起改掉,连续按 Tab 就能跳过去接受。

用好 Tab 的诀窍:先手动改一处,让它学到你的意图,再让它补剩下的。

行内编辑

选中一段代码,用行内编辑快捷键(macOS 上通常是 Cmd+K,Windows/Linux 上是 Ctrl+K)直接输入指令,如“加上错误处理”“改成 async 写法”。适合小范围、目标明确的修改。

Chat 与 Agent

侧边栏的 AI 面板有不同模式,大致分两类:

Agent 修改的内容会以 diff 形式展示,你可以逐个文件接受或拒绝。

注意Agent 可以执行终端命令。建议在设置中保留“执行命令前确认”,尤其不要让它在未经确认的情况下执行删除文件、推送代码、操作数据库的命令。

三、用 @ 精确引用上下文

在对话框中输入 @,可以把特定内容加入上下文。常用的有:

引用用途
@文件引用具体文件,最常用、最精确
@文件夹引用整个目录,适合让它了解一个模块
@代码符号引用某个函数或类
@Docs引用第三方库文档,可以添加自定义文档链接让 Cursor 索引
@Web让它联网搜索最新信息
@Git / 改动引用提交记录或当前改动,适合写提交信息、做 code review

一个好的提问示例:

@src/api/user.ts @src/types/user.ts
给 getUser 增加缓存:同一个 id 在 60 秒内重复请求时直接返回缓存结果。
参考 @src/api/product.ts 里已有的缓存写法,保持风格一致。

比起“帮我给用户接口加缓存”,这样写能让 AI 少猜、少搜,结果也更符合项目现有风格。

提示@ 菜单中可用的选项在不同版本里有增减,输入 @ 后看弹出列表即可。

四、项目规则:让 AI 记住你的约定

每次对话都重复“我们用 TypeScript 严格模式”“组件用函数式写法”很累。规则文件就是解决这个问题的:把约定写一次,AI 在相关场景自动遵守。

规则放在哪里

规则文件的结构

.mdc 文件由头部元数据和正文组成。头部可以设置:

也可以不自动应用,只在对话中手动 @ 引用某条规则。

一份好规则的示例

文件:.cursor/rules/frontend.mdc

---
description: 前端 React 组件的编写规范
globs: src/components/**/*.tsx
alwaysApply: false
---

# 前端组件规范

## 技术栈
- React 18 + TypeScript(strict 模式)
- 样式使用 Tailwind CSS,不要写单独的 CSS 文件
- 数据请求统一使用 src/lib/request.ts 中封装的函数

## 写法要求
- 只用函数组件和 Hooks,不用 class 组件
- Props 类型用 interface 定义,命名为 XxxProps
- 一个文件只导出一个组件

## 不要做
- 不要引入新的第三方依赖,需要时先提出来
- 不要修改 src/lib/ 下的公共代码,除非我明确要求

## 参考
新组件的写法参考 @src/components/UserCard.tsx

好规则的共同点:

提示在 Agent 对话中发现 AI 反复犯同一个错误时,就把纠正写进规则。规则是在实际使用中慢慢积累出来的,不必一开始就写得很全。

五、上下文管理技巧

1. 新任务开新对话

这是最重要的一条。一个对话里先修 bug、再加功能、又问配置,前面的内容会干扰后面的回答,也会浪费上下文空间。一个任务一个对话,做完就开新的。

2. 精确引用,而不是丢整个仓库

上下文不是越多越好。无关代码越多,AI 越容易抓错重点。优先 @ 具体文件,其次是目录,只有在你确实不知道代码在哪时,才让 Agent 自己在整个代码库里搜索。

3. 先让它出计划

稍复杂的改动,先让它说清楚打算怎么做:

我要给订单模块加一个“部分退款”功能。
先阅读 @src/orders/ 下的代码,然后给出实现计划:
需要改哪些文件、新增哪些函数、数据结构怎么变。
先不要写代码,等我确认。

计划有问题时改几句话就行;代码写错了再改,成本高得多。

4. 对话太长时主动总结

如果一个任务确实需要很长的对话,可以让 AI 总结当前进度、已做的决定和待办事项,然后把这份总结带到新对话里继续。

5. 用 git 做安全网

在让 Agent 做较大改动前先 commit。Cursor 自身也提供了回退到某个对话节点的功能,但 git 更可靠、更可控。

六、常见坑

注意不要把 API 密钥、密码直接写进代码或粘贴到对话中。使用环境变量,并确认 .env 等文件已加入 .gitignore 和 .cursorignore。