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

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

用 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 编码 开发工具 项目管理 最佳实践

推荐文章

JavaScript 异步编程入门
2024-11-19 07:07:43 +0800 CST
10个极其有用的前端库
2024-11-19 09:41:20 +0800 CST
WebSocket在消息推送中的应用代码
2024-11-18 21:46:05 +0800 CST
如何在Vue 3中使用Ref访问DOM元素
2024-11-17 04:22:38 +0800 CST
Rust 高性能 XML 读写库
2024-11-19 07:50:32 +0800 CST
实用MySQL函数
2024-11-19 03:00:12 +0800 CST
Vue中如何处理异步更新DOM?
2024-11-18 22:38:53 +0800 CST
Go 中的单例模式
2024-11-17 21:23:29 +0800 CST
使用Python实现邮件自动化
2024-11-18 20:18:14 +0800 CST
paint-board:趣味性艺术画板
2024-11-19 07:43:41 +0800 CST
mysql 计算附近的人
2024-11-18 13:51:11 +0800 CST
Vue3中如何实现响应式数据?
2024-11-18 10:15:48 +0800 CST
CSS 实现金额数字滚动效果
2024-11-19 09:17:15 +0800 CST
JavaScript中设置器和获取器
2024-11-17 19:54:27 +0800 CST
Vue3中的v-slot指令有什么改变?
2024-11-18 07:32:50 +0800 CST
GROMACS:一个美轮美奂的C++库
2024-11-18 19:43:29 +0800 CST
jQuery `$.extend()` 用法总结
2024-11-19 02:12:45 +0800 CST
程序员茄子在线接单