/ Cursor  CursorRules  AI编程  编程工具  开发效率  IDE  代码规范  前端开发 

Cursor Rules 深度实战:让 AI 编程助手真正读懂你的项目


封面

什么是 Cursor Rules?

Cursor Rules 是 Cursor 编辑器提供的一项强大配置机制,允许开发者通过 .cursorrules 文件(或 .cursor/rules/ 目录)向 AI 模型注入项目级别的上下文信息和行为约束。简单来说,它就是你写给 AI 的"项目说明书"。

在没有 Rules 的情况下,每次对话 AI 都是"从零开始"理解你的项目,容易产生风格不一致、忽略项目约定、反复犯同类错误等问题。有了 Rules,AI 能持续遵循你的技术选型、编码规范和架构决策。

  • 全局 Rules:在 Cursor 设置的 "Rules for AI" 中填写,对所有项目生效

  • 项目 Rules(.cursorrules):放在项目根目录,仅对当前项目生效

  • 目录级 Rules(.cursor/rules/*.mdc):Cursor 0.43+ 支持,可针对不同子目录设置不同规则

Rules 文件的核心语法结构

一份好的 .cursorrules 文件通常包含以下几个核心板块,用自然语言写成(Markdown 格式最佳):

# 项目概览
这是一个基于 Next.js 14 + TypeScript + Tailwind CSS 构建的 SaaS 应用。
使用 Prisma 作为 ORM,PostgreSQL 作为数据库。

# 技术栈约定
- 组件库:shadcn/ui,禁止引入 antd 或 MUI
- 状态管理:Zustand,禁止使用 Redux
- 数据请求:React Query v5,禁止直接用 useEffect 请求数据
- 样式:Tailwind CSS,禁止写内联 style 和独立 CSS 文件

# 代码规范
- 所有函数组件使用箭头函数写法
- Props 类型必须用 interface 定义,禁止用 type
- 文件命名:组件用 PascalCase,工具函数用 camelCase
- 每个文件只导出一个主要内容

# 目录结构
src/
  app/          # Next.js App Router 页面
  components/   # 通用组件
  features/     # 按功能划分的模块
  lib/          # 工具函数和配置
  hooks/        # 自定义 Hooks

关键原则:越具体越好。"写好代码"这种空话对 AI 毫无帮助,而"所有 API 路由必须用 zod 做参数校验"则是明确可执行的约束。

不同技术栈的实战 Rules 写法

下面提供几个主流技术栈的 Rules 模板,可直接复制到项目中按需调整。

Go 后端项目

# Go 项目规范
- Go 版本:1.22,使用泛型特性
- Web 框架:Gin,路由统一在 router/ 目录注册
- 错误处理:所有错误必须用 fmt.Errorf("xxx: %w", err) 包装
- 日志:使用 zap,禁止使用 fmt.Println 打日志
- 接口返回格式:统一用 pkg/response 包的 Success/Fail 函数
- 数据库:GORM,模型定义在 model/ 目录,禁止在 handler 层直接操作 DB
- 测试:所有 service 层函数必须有对应单元测试

# 命名约定
- 包名:小写单词,禁止下划线
- 接口名:以 -er 结尾(如 UserStore, MessageSender)
- 私有函数:camelCase,公开函数:PascalCase

Python FastAPI 项目

# Python/FastAPI 项目规范
- Python 版本:3.11+,使用 match-case、TypeAlias 等新特性
- 异步:所有 IO 操作必须用 async/await,禁止阻塞调用
- 类型标注:所有函数参数和返回值必须有类型标注
- 数据验证:用 Pydantic v2 的 model_validator,禁止手动 if 校验
- 依赖注入:通过 FastAPI Depends 管理,禁止使用全局变量
- 测试:pytest + httpx,覆盖率要求 80% 以上

# 项目结构
app/
  api/          # 路由层,只做参数解析和响应组装
  services/     # 业务逻辑层
  repositories/ # 数据访问层
  models/       # Pydantic 模型和 ORM 模型

目录级 Rules:.cursor/rules/ 的高级用法

Cursor 0.43 版本引入了 .cursor/rules/ 目录,支持更细粒度的规则管理。每个 .mdc 文件可以设置 globs 属性,让规则只在匹配的文件中生效:

---
description: React 组件开发规范
globs: ["src/components/**/*.tsx", "src/features/**/*.tsx"]
alwaysApply: false
---

# React 组件规范
- 使用 React.FC 类型声明,不写 return type
- Props 解构放在函数参数里,不要在函数体内解构
- 副作用必须清理:useEffect 返回 cleanup 函数
- 禁止在组件内定义非 Hook 的函数,抽到组件外

常见的目录级 Rules 划分方式:

  • frontend.mdc:匹配 src/**/*.tsx,约束前端组件写法

  • api.mdc:匹配 src/app/api/**,约束 API 路由规范

  • tests.mdc:匹配 **/*.test.ts,约束测试写法和断言风格

  • scripts.mdc:匹配 scripts/**,放宽规则(允许快速脚本写法)

让 Rules 真正生效的实践建议

写了 Rules 不等于 AI 就会遵守,以下几个经验能让效果最大化:

  • 用否定句强调禁区:AI 对"禁止"、"不要"、"永远不"的响应比正面描述更可靠。"使用 Zustand" 不如 "使用 Zustand,禁止引入 Redux 或 Context API"

  • 给出示例胜过说明:Rules 里放一段符合规范的代码示例,比描述规范更有效

  • 定期迭代 Rules:每当 AI 犯了某类错误,就把对应约束补进 Rules,Rules 应该随项目演进

  • 控制长度:Rules 不是越长越好,超过 500 行后注意力会下降,精炼比堆砌更重要

  • 版本化管理:把 .cursorrules 提交到 Git,让团队共享同一套 AI 上下文

掌握 Cursor Rules 的本质是:把你对项目的隐性理解,显式化地传递给 AI。这是目前让 AI 编程助手产出质量最稳定的方式之一,值得每个重度用户深入投入。

发布评论

热门评论区: