Rules 的工作原理
理解项目 Rules 如何影响 AI 的行为
什么是 Rules
Rules 为 AI Agent 提供系统级指令。它们将提示词、脚本等内容打包在一起,便于在团队内管理和共享工作流。
Cursor 支持四种类型的 Rules:
| 类型 | 存储位置 | 作用范围 | 适用场景 |
|---|---|---|---|
| Project Rules | .cursor/rules | 当前代码库 | 项目特定的规范和工作流 |
| User Rules | 全局配置 | 所有 Cursor 项目 | 个人偏好和通用约定 |
| Team Rules | 控制台管理 | 团队所有项目 | 企业级规范(Team/Enterprise) |
| AGENTS.md | 项目根目录 | 当前代码库 | 轻量级的 Agent 指令 |
本文实践重点: 我们专注于 Project Rules(.cursor/rules) 的最佳实践,因为:
- ✅ 可被 Git 管理 - 可以版本控制、协作共享
- ✅ 团队协作友好 - 新成员克隆代码后即可使用
- ❌ User Rules - 个人 Rules 无法在企业项目中共享,不建议用于团队协作
- ⚠️ Team Rules - 我们仍在探索中,目前缺乏最佳实践
- ❌ AGENTS.md - 内容较零散,难以维护,不建议使用
更多 Rules 类型的详细说明,请参考 Cursor 官方文档 。
Rules 文件夹结构
Project Rules 存放在 .cursor/rules/ 目录下,每个 Rule 对应一个 .mdc 文件:
- global-rules.mdc
- routing-rules.mdc
- api-rules.mdc
- ui-rules.mdc
Project Rules 位于 .cursor/rules 目录中,受版本控制,作用范围限定在你的代码库内。使用 Project Rules 可以:
- ✅ 沉淀领域知识 - 将与代码库相关的专业知识固化
- ✅ 自动化工作流 - 统一项目特定的模板和流程
- ✅ 统一技术决策 - 确保风格和架构的一致性
- ✅ 团队协作 - 通过 Git 共享,新成员快速上手
Rules 应用方式
通过类型下拉菜单可以控制 Rules 的应用方式:
| 类型 | 配置 | 何时应用 |
|---|---|---|
| Always Apply | alwaysApply: true | 应用于每个聊天会话 |
| Apply Intelligently | alwaysApply: false + description | Agent 根据描述判断相关性后应用 |
| Apply to Specific Files | globs: ["pattern"] | 当文件匹配指定模式时应用 |
| Apply Manually | 无特殊配置 | 在对话中被 @ 提及时应用(如 @my-rule) |
Rules 的工作机制
大型语言模型在不同补全之间不会保留记忆。Rules 在提示级别提供持久、可重用的上下文。 简单来说就是为了解决每次 Chat 都要重复输入相同的指令。如果你需要更灵活的记忆系统,可以参考 使用 Rules 管理记忆。
当 Rules 被应用后,其内容会被加入到模型上下文的开头。这为 AI 在生成代码、理解编辑或协助处理工作流时提供一致的指导。
Rules 文件结构
每个 .mdc 文件包含 frontmatter 元数据和正文内容:
---
description: "This rule provides standards for frontend components"
globs: ["src/components/**"]
alwaysApply: false
---
- 使用 TypeScript 定义所有组件
- 组件必须使用 PascalCase 命名
- 导出的函数必须指定返回类型
@component-template.tsxFrontmatter 字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
description | string | Rule 描述,供 AI 判断是否应用此 Rule |
globs | string[] | 文件匹配模式,限定 Rule 作用范围 |
alwaysApply | boolean | 是否始终应用于每个聊天会话 |
如果 alwaysApply 为 true,则该 Rule 会应用于每个聊天会话。否则,将把该 Rule 的描述提供给 Cursor Agent,由其决定是否需要应用该 Rule。
示例:全局 Rules(始终生效)
---
alwaysApply: true
---
# Global Project Rules
## Tech Stack
- React 18 with TypeScript
- Vite as build tool
- TanStack Router for routing
## Directory Structure
- `src/pages/` - Page components
- `src/components/` - Reusable components
- `src/clients/` - API clients示例:文件匹配 Rules(特定文件生效)
---
description: "API client development standards"
globs: ["src/clients/**"]
alwaysApply: false
---
# API Rules
- Use axios for HTTP requests
- All API functions must have error handling
- Use SWR for data fetching in components示例:手动触发 Rules
---
description: "Template for creating new feature modules"
alwaysApply: false
---
# Feature Template
Use this structure when creating a new feature...在聊天中使用 @feature-template 即可触发此 Rule。
创建 Rules
有两种方式创建 Rules:
- 使用命令 - 运行
New Cursor Rule命令 - 使用设置 - 在
Cursor Settings > Rules, Commands中创建
这会在 .cursor/rules 中创建一个新的 .mdc 文件。你可以在设置中查看所有 Rules 及其状态。
在文章 Rules 迭代与沉淀 中会介绍最佳的 Rules 数量和结构。
下一步
现在你已经理解了 Rules 的工作原理,接下来学习如何编写高质量的 Rules。
如果你的项目需要管理大量领域知识,可以了解 使用 Rules 管理记忆。