编程 用 Cursor 还在被 AI 乱改代码?你可能没用对 Rules!

2025-05-15 10:18:51 +0800 CST views 1719

用 Cursor 还在被 AI 乱改代码?你可能没用对 Rules!

什么是 Cursor Rules?

Cursor Rules 是一组用于指导 AI 编码行为的规则系统,本质上是一种 可复用、持久存在的上下文,可确保 AI 理解你的角色、技术栈、项目规范和偏好,并在每次交互中自动携带。

Cursor Rules 目前支持三种形式:

  • Project Rules:项目级规则,保存在 .cursor/rules/*.mdc
  • User Rules:全局规则,适用于所有项目
  • .cursorrules:旧版本规则文件格式,已废弃

建议使用新版 .mdc 格式,支持更强的结构化组织和优先级控制。


如何在 Cursor 中创建和管理 Rules?

  1. 打开 Cursor,进入 Settings。
  2. 切换到 Rules 面板
  3. 点击 Add new rule,新建规则。

规则会保存在 .cursor/rules/ 目录下,文件后缀为 .mdc


.mdc 规则文件结构详解

每个规则文件都包含两部分:元信息(YAML) + 规则内容(Markdown)

---
description: 为 Tailwind + Shadcn + Radix 项目提供代码风格和最佳实践指导
globs: ["src/**/*.{ts,tsx}"]
tags: ["tailwind", "shadcn", "radix"]
priority: 2
version: 1.0.0
---
# Tailwind + Shadcn + Radix 项目规范

## Context
- 本项目基于 React + Next.js,使用 TailwindCSS、Shadcn UI 和 Radix UI
- 希望生成代码风格统一、可维护性强、可访问性好的组件

## Requirements
- 使用函数式组件,命名以 PascalCase 为准
- 所有组件必须明确 props 类型
- 使用 TailwindCSS 进行样式控制,禁止使用内联 style
- 事件函数统一以 `handle` 前缀命名(如 `handleClick`)
- 使用 `const` 声明组件和函数
- 优先使用声明式、组合式写法,避免嵌套冗余
- 尽可能实现无障碍访问性(a 标签需添加 `tabindex`、`aria-label`、`onKeyDown` 等)

## Examples
<example>
```tsx
const Button = () => (
  <button
    className="bg-primary text-white px-4 py-2 rounded"
    onClick={handleClick}
    aria-label="提交"
    tabIndex={0}
    onKeyDown={handleKeyDown}
  >
    提交
  </button>
);

良好示例:函数组件、Tailwind 样式、无障碍支持


Rule Type 类型说明(非常重要!)

每条规则可设置不同的生效方式:

类型说明
Always始终生效,适用于核心规范
Auto Attached当 AI 检测到匹配的 globs 文件时自动附加
Agent Requested当 AI 判断需要时请求使用,需写好 description
Manual必须通过 @规则名 显式调用,适合临时工具类规则

从 Cursor 0.49 起还支持自动生成规则:输入 /Generate Cursor Rules,即可让 AI 帮你自动创建 .mdc 文件。


推荐资源:Cursor Directory

Cursor Directory 是一个开源的 Rules 模板集合,包含多种语言/技术栈/框架的规则文件:

  • React + Tailwind + Radix 组件规范
  • Next.js 项目最佳实践
  • Supabase SSR 安全用法
  • 禁止 AI 输出某类代码模式(防止踩坑)

这些模板都可以作为你写规则时的参考或起点。


实战案例:Supabase SSR 的反面教材

下面是一个 Supabase 项目的规则示例,它通过“禁止某类写法 + 强制指定正确写法”,大幅减少了 AI 生成错误代码的可能性:

---
description: 使用SupabaseAuth编写Next.js应用的指南
globs: ["**/*.ts", "**/*.tsx"]
---
# Supabase SSR 安全用法指南

## 🚨 禁止以下代码模式 🚨
- 禁止使用 `get`/`set`/`remove` 方法处理 cookie
- 禁止从 `@supabase/auth-helpers-nextjs` 导入

## 正确写法要求
- 必须使用 `@supabase/ssr`
- 只允许使用 `getAll` 和 `setAll`
- 强制使用中间件刷新会话令牌

## 不当实现将导致:
- 生产环境崩溃
- 会话失效
- 安全漏洞

这样的规则可以让 AI 在生成代码前先进行验证判断,从根源避免“AI 自作主张地踩坑”。


总结:如何用好 Cursor Rules?

  1. 为每个技术栈都写 Rules,并做好分类(tags)
  2. 控制规则长度:建议每个规则控制在 500 行以内,便于维护
  3. 写好正反示例:增强语义理解效果
  4. 描述清晰具体:“你是谁 + 你要做什么 + 不能做什么”
  5. 日常抽象经验为规则:AI 表现不佳时,不要只改提示词,应考虑沉淀为规则文件
  6. 合理设置 Rule Type:核心规范用 Always,细化逻辑用 Auto/Agent

最后一条建议

如果你和 Cursor Agent 来回两次还解决不了问题,那就别犹豫——是时候写一条 Rule 了!

与其不停改 prompt、浪费 Token,不如写一条精准的 Rules 来永久解决同类问题。这不仅能提升效率,还能避免未来团队协作时 AI 行为不一致的混乱。

别再让 Cursor 成为“减效工具”!

复制全文 生成海报 AI 编码 开发工具 项目管理 最佳实践

推荐文章

Nginx 如何防止 DDoS 攻击
2024-11-18 21:51:48 +0800 CST
小技巧vscode去除空格方法
2024-11-17 05:00:30 +0800 CST
黑客帝国代码雨效果
2024-11-19 01:49:31 +0800 CST
git使用笔记
2024-11-18 18:17:44 +0800 CST
Golang Select 的使用及基本实现
2024-11-18 13:48:21 +0800 CST
H5端向App端通信(Uniapp 必会)
2025-02-20 10:32:26 +0800 CST
一文详解回调地狱
2024-11-19 05:05:31 +0800 CST
Vue3中的Scoped Slots有什么改变?
2024-11-17 13:50:01 +0800 CST
乐观锁和悲观锁,如何区分?
2024-11-19 09:36:53 +0800 CST
利用Python构建语音助手
2024-11-19 04:24:50 +0800 CST
程序员茄子在线接单