别让 AI 乱写代码了!Cursor Rules 你不知道的密码!大神都这么干!

程序员辉哥|阅读 1
2026/03/09 06:56
Cursor Rules
Cursor Rules 专业配置

凌晨2点,我又在删 AI 生成的代码。

第3次了。同样的后台页面,Cursor 一会儿给我生成 Tailwind 类名,一会儿用 class 组件,一会儿直接裸写 NextResponse.json()——跟我项目里的 Ant Design + TypeScript 规范完全拧着来。

改不动,真的改不动。

直到我发现 Cursor 有个隐藏功能:Rules(.mdc 规则文件)。把团队规范"写进"AI 脑子里,它生成的代码终于"懂事"了。

今天把这个方法完整分享给你。

Cursor规则优化代码 (2).png

一、为什么你的 AI 总写"野代码"?

不是 AI 笨,是你没给它立规矩。

我们团队做 AI 网站项目,用 Next.js 15 + Ant Design 5。但 Cursor 默认啥都懂一点,结果就是:

  • 你用 SCSS,它给你写 Tailwind
  • 你要函数式组件,它给你写 class
  • 你封装了 authRequest,它直接裸调 NextResponse.json()

沟通成本全花在"让 AI 改风格"上。

后来我做了件事:把"人要看"的规范,翻译成"AI 要读"的规则文件(.cursor/rules/*.mdc)。

效果立竿见影——AI 生成的代码,第一次就能跑,第二次就能合进主分支。

ScreenShot_2026-03-08_094130_988.png

二、核心密码:Always 规则(全局生效)

这是我的"宪法级"规则,每个项目必写,AI 每次生成代码前都会读。

ScreenShot_2026-03-08_103422_210.png

硬约束(必须遵守)

规定
语言中文沟通,代码用 TypeScript(必须写类型)
包管理优先 pnpm
框架Next.js 15 App Router,禁止用废弃 API
UI 库Ant Design 5.x,禁止 Tailwind,禁止 css-in-js
样式SCSS 文件,组件同名(如 UserProfile.module.scss
状态Context API,少用 useEffect

命名铁律

  • 组件:PascalCaseUserProfile.tsx
  • 页面:kebab-caseuser-profile.tsx
  • 工具:camelCaseformatDate.ts

目录结构

/src/app          → 路由/src/app/api      → 接口(必须用 authRequest 封装)/src/components   → 组件(必须带完整 TS 类型)/src/services     → 业务层(禁止页面直接调 clientRequest)/src/types        → 类型定义/src/contexts     → 状态管理

关键技巧:把"禁止"写清楚。AI 对否定词敏感,"禁止 Tailwind"比"建议使用 SCSS"管用 10 倍。

三、后台页面密码:让 AI 一次写对 CRUD

我们后台全是"列表+搜索+弹窗"的重复劳动。我专门写了个 admin-page-template.mdc,AI 现在生成后台页,结构直接合规。

必守规矩

  1. 不准直接调接口,必须通过 src/services/[module]/[service].ts
  2. 事件函数用 useCallback,表格列用 useMemo
  3. URL 状态同步:搜索条件、分页必须进 URL,刷新不丢状态
  4. 刷新必须用 RefreshButton 组件(带防抖)

命名模板(AI 自动替换)

get[DataType]List      → 查列表get[DataType]Detail    → 查详情create[DataType]       → 创建update[DataType]       → 更新delete[DataType]       → 删除

实战效果:以前搭一个后台页面要 2 小时(写代码 30 分钟,改风格 90 分钟),现在 20 分钟搞定。

四、API 接口密码:安全与风格双保险

AI 写接口最容易翻车:裸写状态码、漏权限校验、把密码返回给前端。

我的 api-routes.mdc 直接锁死:

绝对禁止

  • ❌ 跳过 authRequest 封装
  • ❌ 硬编码 200/500,必须用 ApiSuccessCode.OK 枚举
  • ❌ 裸写 NextResponse.json(),必须用 createSuccessResponse/createErrorResponse
  • ❌ 返回密码等敏感字段

强制流程

1. authRequest 包装(显式声明 requireAuth/permissions)2. 参数校验(必填项、ObjectId 格式)3. 业务校验(资源是否存在、操作是否合法)4. 数据库操作5. 脱敏 → 封装响应 → 返回

一行代码示例

// ❌ AI 原来写的return NextResponse.json({ code: 200, data: user }) // ✅ 规则约束后return createSuccessResponse(user, '获取成功', ApiSuccessCode.OK)

五、文档密码:让 AI 帮你写文档

我还给 Docs/**/*.md 写了专门规则:

  • 接口文档必须含:功能描述、请求路径(禁止[id] 动态路由)、权限、参数、响应示例
  • 数据库表结构 → 接口列表 → 示例代码,顺序固定

现在让 AI 根据代码生成文档,格式直接能用,不用二次排版。

六、怎么用?今晚就能上手

Step 1:在项目根目录建 .cursor/rules/

Step 2:新建 Always.mdc,把技术栈、禁止项、命名规则写进去

Step 3:按场景加专项规则:

  • 后台页面多 → 加 admin-page-template.mdc
  • 接口混乱 → 加 api-routes.mdc
  • 文档不齐 → 加 Docs.mdc

Step 4:写代码时 @ 引用规则,或让 AI 自动读取

七、最后的大实话

Cursor Rules 不是什么高级功能,就是个提示词模板持久化

但差别在于:以前你每次都要跟 AI 啰嗦"用 Ant Design 别用 Tailwind",现在规则文件帮你啰嗦完了。

省下的时间,够你多写两个功能,或多睡两小时。

我的 .cursor/rules 文件结构:

.cursor/└── rules/    ├── Always.mdc              # 全局必守    ├── admin-page-template.mdc # 后台页面模板    ├── api-routes.mdc          # 接口规范    └── Docs.mdc                # 文档规范