Cursor 规则配置实战:用 mdc 文件定制你的 AI 编程助手
Cursor 的规则系统能做什么
Cursor 不只是个带聊天窗口的编辑器。它的核心能力之一,是允许你通过“规则”(Rules)告诉内置的 AI:“在这个项目里,请按这种方式思考和写代码。”

比如,你可以规定:
- 所有新函数必须包含 JSDoc 注释
- 禁止使用
var,只允许const和let - 数据库查询必须通过封装好的 ORM 方法
- 响应格式统一为
{ code, data, msg }
这些要求不用每次跟 AI 反复强调。只要写进规则文件,AI 在生成或修改代码时就会自动遵守。
用户规则 vs 项目规则
Cursor 支持两种作用范围的规则:
用户规则(User Rules) 存放在你的个人配置目录,对所有打开的项目生效。适合放通用偏好,比如“永远用 2 个空格缩进”或“注释用英文”。
项目规则(Project Rules) 则放在具体项目的根目录下,只影响当前项目。这是更常用的方式,因为不同项目可能有不同的技术栈和规范。团队协作时,把规则文件提交到 Git,所有人都能获得一致的 AI 辅助体验。
两者可以共存。当项目规则存在时,它会覆盖同名的用户规则;没有冲突的部分则叠加生效。
规则文件长什么样?mdc 格式详解
Cursor 的规则文件使用 .mdc 后缀(如 cursor/rules.mdc)。它本质上是一种带元数据的 Markdown。
一个最简规则文件结构如下:
---
tags: [javascript, react]
---
# JavaScript & React 项目规范
- 使用箭头函数定义组件
- 状态管理优先使用 useState/useReducer,避免 class 组件
- 所有 API 调用必须通过 `apiClient` 封装开头的 --- 区块是 YAML front matter,用于声明元信息。最关键的字段是 tags,它决定了这条规则在什么情况下被激活。
tags 的匹配逻辑
当你在编辑一个 .js 文件时,Cursor 会自动给当前上下文打上 javascript 标签。如果你的规则文件也包含 tags: [javascript],这条规则就会被加载。
标签可以是语言(python, typescript)、框架(react, django),甚至是自定义字符串。你可以在项目设置里手动添加全局标签,也可以在规则文件里自由定义。
规则内容怎么写
YAML 区块之后就是普通的 Markdown 正文。这里写的就是你要给 AI 的指令。建议:
- 用清晰的条目列出要求
- 避免模糊表述,如“尽量”“最好”
- 提供具体例子比抽象描述更有效
例如,与其说“错误处理要规范”,不如写:
所有异步函数必须用 try/catch 包裹,并在 catch 块中调用
logger.error(e),不得直接 console.log。
实战:为一个 Node.js 项目配置规则
假设我们有一个 Express 后端项目,希望 AI 遵守以下约定:
- 路由处理器必须放在
src/controllers/目录 - 数据库操作通过
db.query()方法,禁止拼接 SQL 字符串 - 响应统一使用
res.json({ code: 200, data: ..., msg: '' })
第一步:创建规则文件
在项目根目录新建文件夹 cursor,然后创建 rules.mdc:
your-project/
├── cursor/
│ └── rules.mdc
├── src/
│ ├── controllers/
│ └── ...
└── package.json第二步:编写规则内容
---
tags: [nodejs, express, javascript]
---
# 项目编码规范
## 目录结构
- 新增的路由处理器必须放在 `src/controllers/` 目录下
- 工具函数放在 `src/utils/`
## 数据库
- 所有数据库查询必须使用 `db.query(sql, params)` 方法
- **禁止** 拼接 SQL 字符串,防止注入攻击
- 示例:`db.query('SELECT * FROM users WHERE id = ?', [userId])`
## API 响应
- 成功响应格式:`res.json({ code: 200, data: result, msg: '' })`
- 错误响应格式:`res.json({ code: 400, data: null, msg: '错误描述' })`
- 不要直接返回原始错误对象第三步:验证规则是否生效
打开一个 .js 文件,尝试让 Cursor 生成一个新接口。如果规则生效,它应该:
- 自动把函数放到
controllers/目录(如果你让它创建文件) - 使用
db.query而不是字符串拼接 - 返回符合格式的 JSON
如果没遵守,检查:
- 文件路径是否正确(必须是
cursor/rules.mdc) - 当前文件是否被识别为
javascript(看右下角语言标识) - tags 是否匹配
高级技巧与注意事项
多个规则文件
你可以在 cursor/ 目录下放多个 .mdc 文件。Cursor 会合并所有匹配的规则。例如:
security.mdc:专门放安全相关规则style.mdc:代码风格约定
这样便于维护,也方便团队成员各管一块。
覆盖默认行为
Cursor 内置了一些通用规则。如果你想完全禁用某条默认行为,可以在自己的规则里明确否定。例如:
不要使用任何第三方 UI 库,所有组件必须手写 CSS。
规则不是万能的
规则会影响 AI 的“倾向性”,但不能 100% 强制。复杂场景下,AI 可能还是会偏离。这时候需要:
- 在聊天中再次强调关键点
- 用
/edit命令配合规则进行精确修改 - 审查生成的代码
性能影响
规则文件会被加载到上下文中,过长的规则会占用 token。建议保持简洁,只写最关键、最容易被忽略的约定。
为什么这个功能值得用
很多团队花大力气搞 ESLint、Prettier、Commitlint,却忽略了 AI 编码的一致性。结果是:人写的代码整齐划一,AI 生成的代码风格迥异,反而增加了 review 负担。
通过项目级规则,你可以把团队规范“喂”给 AI,让它从源头就产出符合标准的代码。这不仅是提效,更是把 AI 真正融入开发流程的关键一步。
下次启动新项目时,不妨先花 10 分钟写个 rules.mdc——你会回来感谢自己的。