Cursor Rules 完全指南:用自定义规则让 AI 编程助手遵循团队代码规范的实战教程
引言
在团队开发中,保持一致的代码风格和规范一直是个挑战。随着 AI 编程助手的普及,如何让 AI 生成的代码符合团队标准成为了新的痛点。Cursor 的 Rules 功能正是为解决这个问题而生——它允许你定义自定义规则,让 AI 助手在生成代码时自动遵循团队的编码规范、架构约定和最佳实践。
本文将深入讲解 Cursor Rules 的配置方法、实际应用场景以及高级技巧,帮助你打造真正懂团队规范的 AI 编程助手。
什么是 Cursor Rules?
Cursor Rules 是 Cursor IDE 中的一项强大功能,允许用户通过自然语言或结构化配置定义 AI 助手的行为准则。这些规则会在 AI 生成代码时被自动参考,确保输出符合预期。
核心特性
- 项目级规则:
.cursorrules文件可纳入版本控制,团队共享 - 上下文感知:规则会根据当前文件和操作类型智能应用
- 优先级系统:支持全局规则、项目规则、文件级规则的层级覆盖
- 自然语言定义:用人类可读的方式描述期望行为
为什么需要 Cursor Rules?
在没有规则约束的情况下,AI 助手可能会:
- 生成与团队风格不符的代码格式
- 使用团队禁止的库或模式
- 忽略项目的架构约定
- 产生不一致的命名规范
- 写出缺乏必要注释或文档的代码
通过精心设计的 Rules,这些问题都能得到有效解决。
基础配置:创建你的第一个 Rules 文件
文件位置
Cursor Rules 文件通常放置在项目根目录,命名为 .cursorrules:
your-project/ ├── .cursorrules ├── src/ ├── package.json └── README.md
基础模板
以下是一个适用于 TypeScript/Node.js 项目的入门规则配置:
# 项目规则 ## 代码风格 - 使用 2 空格缩进,不使用 Tab - 字符串优先使用单引号,模板字符串除外 - 函数使用箭头函数语法 - 避免使用 `any` 类型,必要时使用 `unknown` ## 命名规范 - 变量和函数使用 camelCase - 组件和类使用 PascalCase - 常量使用 UPPER_SNAKE_CASE - 私有成员以下划线 `_` 开头 ## 错误处理 - 所有异步操作必须使用 try-catch 包裹 - 禁止静默捕获错误,必须记录或抛出 - 使用自定义错误类区分错误类型 ## 注释要求 - 公共 API 必须有 JSDoc 注释 - 复杂逻辑需要行内注释说明意图 - TODO 注释必须包含负责人和日期
在 Cursor 中启用规则
- 打开 Cursor 设置(
Cmd+,或Ctrl+,) - 进入 “AI” 标签页
- 确保 “Use .cursorrules file” 选项已启用
- 规则文件会自动被 AI 助手读取
实战场景:为不同技术栈配置 Rules
React/Next.js 项目
# React/Next.js 项目规则 ## 组件规范 - 所有组件必须是函数组件,使用 TypeScript - 使用 React.FC 类型定义组件 Props - 组件文件按功能组织:`components/feature/ComponentName.tsx` - 每个组件文件只导出一个默认组件 ## Hooks 使用 - 自定义 Hooks 必须以 `use` 开头 - Hooks 逻辑抽取到 `hooks/` 目录 - 避免在循环或条件语句中调用 Hooks ## 状态管理 - 优先使用 React Query 处理服务端状态 - 本地状态使用 `useState` 或 `useReducer` - 避免不必要的 Context 使用 ## 样式规范 - 使用 Tailwind CSS 进行样式编写 - 复杂样式抽取到 `styles/` 目录 - 禁止使用内联 style 属性 ## 性能优化 - 大型列表必须使用虚拟滚动 - 图片必须使用 Next.js Image 组件 - 组件使用 `React.memo` 进行记忆化(当 Props 稳定时) ## 测试要求 - 组件必须包含单元测试 - 使用 React Testing Library - 测试文件与被测文件同目录
Python/FastAPI 项目
# Python/FastAPI 项目规则 ## 代码规范 - 遵循 PEP 8 风格指南 - 使用 Black 格式化代码 - 类型注解是必须的(使用 typing 模块) - 函数必须有 docstring ## 项目结构 project/ ├── app/ │ ├── api/ # API 路由 │ ├── core/ # 核心配置 │ ├── models/ # 数据模型 │ ├── schemas/ # Pydantic 模型 │ └── services/ # 业务逻辑 ├── tests/ └── main.py
API 设计
- 所有端点必须有响应模型定义
- 使用依赖注入处理认证和数据库会话
- 错误响应使用统一格式
数据库
- 使用 SQLAlchemy 2.0 异步 API
- 模型定义在
models/目录 - 迁移使用 Alembic 管理
日志
- 使用 structlog 进行结构化日志
- 所有请求必须记录访问日志
- 错误必须包含堆栈跟踪
### Go 项目 ```markdown # Go 项目规则 ## 代码组织 - 遵循 Go 标准项目布局 - 每个包有清晰的单一职责 - 接口定义在使用方包内(接受接口,返回结构体) ## 错误处理 - 错误是返回值的一部分,必须检查 - 使用 `fmt.Errorf` 和 `%w` 进行错误包装 - 定义哨兵错误用于错误类型判断 ## 命名 - 包名简短且全小写 - 导出标识符使用 PascalCase - 私有标识符使用 camelCase - 缩写保持全大写(如 HTTP、URL) ## 测试 - 测试文件与被测文件同目录 - 测试函数以 `Test` 开头 - 使用表驱动测试处理多场景 ## 并发 - 使用 context 处理超时和取消 - goroutine 启动必须有退出机制 - 使用 sync 包进行同步
高级技巧:让 Rules 更智能
1. 使用示例代码
在规则中提供示例代码,让 AI 更准确理解期望:
## API 响应格式
所有 API 响应必须遵循以下格式:
```typescript
// ✅ 正确示例
interface ApiResponse<T> {
success: boolean;
data?: T;
error?: {
code: string;
message: string;
};
timestamp: string;
}
// ❌ 避免直接返回数据
return res.json(users);
// ✅ 正确做法
return res.json({
success: true,
data: users,
timestamp: new Date().toISOString()
});
### 2. 定义禁止模式 明确列出禁止使用的模式: ```markdown ## 禁止使用的模式 - ❌ 禁止使用 `eval()` 或 `Function` 构造函数 - ❌ 禁止在循环中创建新对象(性能问题) - ❌ 禁止使用 `var`,统一使用 `let` 或 `const` - ❌ 禁止直接操作 DOM,必须通过 React - ❌ 禁止硬编码配置值,必须使用环境变量
3. 文件类型特定规则
针对不同文件类型定义不同规则:
## 测试文件规则 (*.test.ts, *.spec.ts) - 测试描述使用 `describe` 分组 - 单个行为使用 `it` 或 `test` 定义 - 使用 `beforeEach` 进行测试隔离 - Mock 数据放在 `__mocks__` 目录 ## 配置文件规则 (*.config.ts, *.config.js) - 必须导出默认配置对象 - 环境变量使用 `process.env` 访问 - 提供合理的默认值 - 配置项必须有注释说明
4. 团队特定约定
将团队独有的约定写入规则:
## 团队约定 ### 代码审查要求 - PR 必须关联 Jira 任务 - 提交信息遵循 Conventional Commits - 重大变更需要更新 CHANGELOG.md ### 目录约定 - 特性代码放在 `features/` 目录 - 共享组件放在 `shared/` 目录 - 工具函数放在 `utils/` 目录 ### 数据库约定 - 表名使用复数形式 - 主键统一命名为 `id` - 时间戳字段:`created_at`, `updated_at`
常见问题与解决方案
问题 1:AI 不遵守规则
症状:AI 生成的代码仍然违反定义的规则。
解决方案:
- 规则描述更具体,提供正反示例
- 将重要规则放在文件顶部
- 使用强调词汇(“必须”、“禁止”、“始终”)
- 在对话中显式提醒规则
问题 2:规则冲突
症状:不同规则之间产生矛盾。
解决方案:
- 建立规则优先级:文件级 > 项目级 > 全局级
- 定期审查和清理规则
- 使用条件规则(“当…时,使用…”)
问题 3:规则文件过大
症状:规则文件变得冗长难维护。
解决方案:
- 按主题拆分到多个文件
- 使用引用链接到外部文档
- 只保留 AI 需要知道的核心规则
- 将详细文档放在 Wiki,规则中简要引用
团队共享与版本控制
将 Rules 纳入 Git
# 添加规则文件到版本控制 git add .cursorrules git commit -m "docs: 添加项目 Cursor Rules 配置" git push
新成员入职
在新成员入职文档中添加:
## 开发环境设置 1. 克隆项目后,Cursor 会自动读取 `.cursorrules` 文件 2. 确保 Cursor 设置中启用了 "Use .cursorrules file" 3. AI 助手会自动遵循项目规则生成代码
规则更新流程
- 在 PR 中修改
.cursorrules - 团队审查规则变更
- 合并后通知团队成员
- 在 CHANGELOG 中记录重大规则变更
最佳实践总结
✅ 应该做的
- 保持规则简洁明了
- 提供具体示例
- 定期审查和更新规则
- 与团队编码规范文档保持一致
- 将规则纳入版本控制
❌ 应该避免的
- 规则过于冗长(超过 500 行)
- 规则之间存在冲突
- 使用模糊的描述
- 忽略规则的维护更新
- 将敏感信息写入规则文件
进阶:与 CI/CD 集成
可以将 Rules 中的规范与 CI 检查结合:
# .github/workflows/lint.yml
name: Code Quality
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
- run: npm ci
- run: npm run lint
- run: npm run format:check
这样确保即使 AI 生成的代码也符合团队规范。
结语
Cursor Rules 是让 AI 编程助手真正融入团队工作流的关键工具。通过精心设计的规则配置,你可以:
- 确保 AI 生成的代码符合团队标准
- 减少代码审查中的风格问题
- 加速新成员上手过程
- 保持项目长期一致性
记住,Rules 不是一成不变的。随着项目发展和团队经验积累,定期回顾和更新规则,让它们始终保持实用性和准确性。
开始行动吧——为你的项目创建第一份 .cursorrules 文件,让 AI 成为真正懂团队规范的编程伙伴!