凌晨2点,我又在删 AI 生成的代码。
第3次了。同样的后台页面,Cursor 一会儿给我生成 Tailwind 类名,一会儿用 class 组件,一会儿直接裸写 NextResponse.json()——跟我项目里的 Ant Design + TypeScript 规范完全拧着来。
改不动,真的改不动。
直到我发现 Cursor 有个隐藏功能:Rules(.mdc 规则文件)。把团队规范"写进"AI 脑子里,它生成的代码终于"懂事"了。
今天把这个方法完整分享给你。
![]()
不是 AI 笨,是你没给它立规矩。
我们团队做 AI 网站项目,用 Next.js 15 + Ant Design 5。但 Cursor 默认啥都懂一点,结果就是:
authRequest,它直接裸调 NextResponse.json()沟通成本全花在"让 AI 改风格"上。
后来我做了件事:把"人要看"的规范,翻译成"AI 要读"的规则文件(.cursor/rules/*.mdc)。
效果立竿见影——AI 生成的代码,第一次就能跑,第二次就能合进主分支。
![]()
这是我的"宪法级"规则,每个项目必写,AI 每次生成代码前都会读。
![]()
| 项 | 规定 |
|---|---|
| 语言 | 中文沟通,代码用 TypeScript(必须写类型) |
| 包管理 | 优先 pnpm |
| 框架 | Next.js 15 App Router,禁止用废弃 API |
| UI 库 | Ant Design 5.x,禁止 Tailwind,禁止 css-in-js |
| 样式 | SCSS 文件,组件同名(如 UserProfile.module.scss) |
| 状态 | Context API,少用 useEffect |
PascalCase(UserProfile.tsx)kebab-case(user-profile.tsx)camelCase(formatDate.ts)/src/app → 路由/src/app/api → 接口(必须用 authRequest 封装)/src/components → 组件(必须带完整 TS 类型)/src/services → 业务层(禁止页面直接调 clientRequest)/src/types → 类型定义/src/contexts → 状态管理
关键技巧:把"禁止"写清楚。AI 对否定词敏感,"禁止 Tailwind"比"建议使用 SCSS"管用 10 倍。
我们后台全是"列表+搜索+弹窗"的重复劳动。我专门写了个 admin-page-template.mdc,AI 现在生成后台页,结构直接合规。
src/services/[module]/[service].tsget[DataType]List → 查列表get[DataType]Detail → 查详情create[DataType] → 创建update[DataType] → 更新delete[DataType] → 删除
实战效果:以前搭一个后台页面要 2 小时(写代码 30 分钟,改风格 90 分钟),现在 20 分钟搞定。
AI 写接口最容易翻车:裸写状态码、漏权限校验、把密码返回给前端。
我的 api-routes.mdc 直接锁死:
authRequest 封装ApiSuccessCode.OK 枚举NextResponse.json(),必须用 createSuccessResponse/createErrorResponse1. authRequest 包装(显式声明 requireAuth/permissions)2. 参数校验(必填项、ObjectId 格式)3. 业务校验(资源是否存在、操作是否合法)4. 数据库操作5. 脱敏 → 封装响应 → 返回
一行代码示例:
// ❌ AI 原来写的return NextResponse.json({ code: 200, data: user }) // ✅ 规则约束后return createSuccessResponse(user, '获取成功', ApiSuccessCode.OK)
我还给 Docs/**/*.md 写了专门规则:
[id] 动态路由)、权限、参数、响应示例现在让 AI 根据代码生成文档,格式直接能用,不用二次排版。
Step 1:在项目根目录建 .cursor/rules/
Step 2:新建 Always.mdc,把技术栈、禁止项、命名规则写进去
Step 3:按场景加专项规则:
admin-page-template.mdcapi-routes.mdcDocs.mdcStep 4:写代码时 @ 引用规则,或让 AI 自动读取
Cursor Rules 不是什么高级功能,就是个提示词模板持久化。
但差别在于:以前你每次都要跟 AI 啰嗦"用 Ant Design 别用 Tailwind",现在规则文件帮你啰嗦完了。
省下的时间,够你多写两个功能,或多睡两小时。
我的 .cursor/rules 文件结构:
.cursor/└── rules/ ├── Always.mdc # 全局必守 ├── admin-page-template.mdc # 后台页面模板 ├── api-routes.mdc # 接口规范 └── Docs.mdc # 文档规范