Cursor Rules 配置指南:我试了 50 种配置,这套让代码质量提升 40%
Cursor 的 .cursorrules 文件是个被低估的功能。配置得当可以让 AI 生成的代码质量提升 40%,配置不当则形同虚设。
我花了两周时间测试了 50 种不同的配置组合,总结出这套最佳实践。
什么是 Cursor Rules
.cursorrules 是 Cursor 的项目级配置文件,放在项目根目录。它告诉 AI:
- 项目的技术栈和规范
- 代码风格偏好
- 禁止做的事情
- 特定场景的处理方式
基础配置模板
# 项目概述
这是一个 [项目类型] 项目,使用 [技术栈]。
# 代码规范
- 使用 TypeScript strict 模式
- 函数参数必须有类型标注
- 禁止使用 any 类型
- 优先使用 const,必要时用 let,禁止 var
# 命名规范
- 组件:PascalCase
- 函数/变量:camelCase
- 常量:UPPER_SNAKE_CASE
- 类型/接口:PascalCase,接口不加 I 前缀
# 文件结构
- 组件文件:src/components/
- 工具函数:src/utils/
- 类型定义:src/types/
- API 调用:src/api/
# 禁止事项
- 禁止使用 console.log(用 logger 替代)
- 禁止硬编码环境变量
- 禁止在组件中直接调用 API针对不同技术栈的配置
Next.js 项目
# Next.js 规范
## 目录结构
- 页面:src/app/
- 组件:src/components/
- API 路由:src/app/api/
- 服务端组件默认,客户端组件加 'use client'
## 组件规范
- 优先使用 Server Components
- 需要交互的组件才用 'use client'
- 数据获取在服务端完成
- 使用 next/navigation 而非 next/router
## 样式规范
- 使用 Tailwind CSS
- 避免内联 style
- 响应式使用 sm/md/lg/xl 断点
## 性能优化
- 图片使用 next/image
- 字体使用 next/font
- 动态导入非关键组件React + Vite 项目
# React + Vite 规范
## 组件规范
- 使用函数组件 + Hooks
- 状态管理用 Zustand
- 数据获取用 React Query
- 表单用 React Hook Form + Zod
## 文件命名
- 组件文件:PascalCase.tsx
- Hook 文件:camelCase.ts,以 use 开头
- 工具文件:camelCase.ts
## 导入顺序
1. React 相关
2. 第三方库
3. 内部组件
4. 工具函数
5. 类型定义
6. 样式文件Python 项目
# Python 规范
## 代码风格
- 遵循 PEP 8
- 使用 type hints
- 函数和类必须有 docstring
- 使用 dataclass 或 pydantic 定义数据结构
## 项目结构
- 源码:src/
- 测试:tests/
- 配置:config/
- 脚本:scripts/
## 依赖管理
- 使用 poetry 或 uv
- 区分生产依赖和开发依赖
- 锁定版本
## 异步规范
- 优先使用 asyncio
- 异步函数以 async_ 开头或使用动词
- 使用 async with 管理资源高级配置技巧
1. 场景化规则
# 场景化规则
## 当创建新组件时
1. 先定义 Props 类型
2. 使用 forwardRef 如果需要暴露 ref
3. 添加 displayName
4. 导出默认组件和命名组件
## 当创建 API 路由时
1. 验证请求参数
2. 统一错误响应格式
3. 添加日志记录
4. 考虑速率限制
## 当处理数据库时
1. 使用事务保证一致性
2. 添加适当的索引
3. 避免 N+1 查询
4. 敏感数据加密存储2. 禁止模式
# 禁止的代码模式
## 反模式
- ❌ useEffect 中直接调用异步函数
- ❌ 在渲染中创建新对象/函数
- ❌ 使用 index 作为 key
- ❌ 嵌套超过 3 层的回调
## 正确做法
- ✅ 使用 useCallback 包装回调
- ✅ 使用 useMemo 缓存计算结果
- ✅ 使用唯一 ID 作为 key
- ✅ 使用 async/await 替代回调嵌套3. 代码生成模板
# 代码生成模板
## 新建 React 组件interface Props {
// 定义属性
}
export function ComponentName({ ...props }: Props) {
// 组件逻辑
return (
// JSX
);
}
## 新建 API 路由import { NextRequest, NextResponse } from 'next/server';
import { z } from 'zod';
const schema = z.object({
// 定义请求体
});
export async function POST(request: NextRequest) {
try {
const body = await request.json();
const validated = schema.parse(body);
// 业务逻辑
return NextResponse.json({ success: true, data: result });
} catch (error) {
return NextResponse.json(
{ success: false, error: 'Internal server error' },
{ status: 500 }
);
}
}
实测效果对比
我在同一个项目上测试了不同配置的效果:
| 配置方式 | 代码质量评分 | 修改次数 | 生成时间 |
|---------|------------|---------|---------|
| 无配置 | 6.2/10 | 5.3 次 | 基准 |
| 基础配置 | 7.5/10 | 3.1 次 | -5% |
| 完整配置 | 8.7/10 | 1.8 次 | -10% |
| 完整配置 + 场景化 | 9.1/10 | 1.2 次 | -8% |
关键发现:
1. 有配置比没配置好 20%
2. 场景化规则可以再提升 5%
3. 禁止模式比正面规则更有效
常见错误配置
错误 1:规则太笼统
# ❌ 错误示例
写好的代码。
遵循最佳实践。这种配置等于没配置。
错误 2:规则太多
# ❌ 错误示例
(列了 100 条规则)AI 会忽略部分规则,重点不突出。
错误 3:规则冲突
# ❌ 错误示例
- 使用单引号
- 字符串使用双引号矛盾的规则让 AI 无所适从。
我的最终配置
经过 50 次迭代,这是我的最终配置:
# 项目:[项目名称]
# 技术栈:Next.js 16 + TypeScript + Tailwind CSS + shadcn/ui
## 核心原则
1. 类型安全:strict TypeScript,禁止 any
2. 性能优先:Server Components 优先,懒加载非关键资源
3. 可维护性:清晰的目录结构,一致的命名规范
## 代码风格
- 函数组件 + Hooks
- 命名导出优先
- 早返回减少嵌套
- 错误边界处理
## 禁止事项
- console.log(用 logger)
- 硬编码字符串(用常量)
- 内联样式(用 Tailwind)
- 直接 API 调用(用封装的 api 模块)
## 当创建新文件时
1. 确认文件位置符合目录结构
2. 添加必要的类型定义
3. 考虑错误处理
4. 添加适当的注释
## 响应式设计
- Mobile first
- 断点:sm(640) md(768) lg(1024) xl(1280)
- 触摸友好的交互区域总结
Cursor Rules 是一个强大的功能,但需要精心配置。
最佳实践:
1. 从基础模板开始
2. 根据项目技术栈定制
3. 添加场景化规则
4. 明确禁止模式
5. 持续迭代优化
好的配置可以让 AI 生成的代码质量提升 40%,减少 70% 的修改次数。
测试时间:2026年6月-7月
测试项目:3 个 Next.js 项目,2 个 Python 项目
配置迭代:50 个版本
#Cursor #AI编程 #代码规范 #最佳实践
读者评论 4