你的 Cursor 还在靠缘分猜你的代码规范?Rules 配置完,AI 像换了个人

📅 2026/7/6 2:41:17
你的 Cursor 还在靠缘分猜你的代码规范?Rules 配置完,AI 像换了个人
旧的方式已经在走下坡路很多教程还在讲.cursorrules文件。这个文件放在项目根目录全局生效写一堆规则进去。问题在于它是一个单文件不能按场景激活不能分模块管理。你的项目有 Java 后端、有测试、有数据库迁移脚本这三块的规范完全不同。一个文件全塞进去既超长又难维护AI 读取的时候也容易被稀释。Cursor 的新系统是.cursor/rules/目录 .mdc文件每个.mdc文件对应一个规则模块支持 4 种激活类型。.cursorrules还没有强制废弃但 Cursor 官方已经在引导用户迁移新功能只加在.mdc体系上。现在是切换的好时机。图.cursor/rules/目录结构与 4 种激活类型的对应关系4 种激活类型用错了比没配还糟这里有个大多数人绕不过去的坑不是配了 Rules 就有效是配对了激活类型才有效。Cursor 的.mdc文件支持 4 种激活方式官方界面里叫Rule TypeAlways全局生效打开任何文件都加载适合全项目通用的强制规范。适合放什么禁用System.out.println、统一返回体格式、Git commit 规范、所有文件的 package 命名惯例。注意别把太多规则塞进 Always它每次都消耗 context 窗口。超过 50 行建议拆出去。Auto Attached文件匹配自动触发用 glob 模式匹配文件路径只有打开匹配的文件时才加载。这是用得最多的类型。配置示例**/*.java → 触发 Java 规范 **/*.go → 触发 Go 规范 **/test/** → 触发测试规范 **/migration/** → 触发数据库迁移规范适合放什么各技术栈的语言规范、框架用法惯例、文件结构规定。Agent RequestedAI 自主决定AI 根据当前上下文判断要不要加载这条规则你给这个规则写一个 descriptionAI 读 description 决定是否引入。适合放什么可选的、特定场景才需要的规则比如「使用 Reactor 响应式编程时的规范」、「接入第三方 SDK 时的注意事项」。Manual手动 引用只有你显式在 chat 里 这个规则文件AI 才加载。适合放什么性能优化检查清单、安全审计要点、Code Review 标准——这些不是写代码时常用的是特定任务才需要的。推荐配比80% Auto Attached 10% Always 10% Manual。Agent Requested 初看很智能但实测下来AI 的判断不稳定有时候该用的没加载不该用的加载了。生产项目里尽量用 Auto Attached明确匹配不靠推理。动手从创建第一个 .mdc 文件开始先建好目录结构。在项目根目录mkdir -p .cursor/rules创建方式一GUICmdShiftPMac或 CtrlShiftPWindows搜索New Cursor Rule填入名称和类型Cursor 会自动在.cursor/rules/下创建文件。创建方式二CLI在 Cursor 的 chat 里输入/rules2026-01-08 新增的命令可以直接在对话中新建和编辑规则。.mdc文件的结构很简单--- description: 这条规则的说明Agent Requested 类型时 AI 靠这个决定是否加载 globs: **/*.java alwaysApply: false --- # 规则标题 规则内容用自然语言写AI 能读懂即可。 可以加代码示例可以加反例。alwaysApply: true等同于 Always 类型globs有值且alwaysApply: false等同于 Auto Attached两个都空 有 description 等同于 Agent Requested手动创建但不写 globs 就是 Manual。Java Spring Boot 项目实战模板以下是码哥在实际 Spring Boot 3.x 项目里用的规则拿走即用按你的项目实际情况改。核心规范文件java-spring.mdc--- description: Java Spring Boot 核心编码规范 globs: **/*.java alwaysApply: false --- # Java Spring Boot 3.x 编码规范 ## 技术栈版本 - Java 21使用 Virtual Threads - Spring Boot 3.3.x - Maven 依赖管理 ## 禁止行为 - 禁止使用 System.out.println统一用 Slf4j 的 log.info/warn/error - 禁止直接 throws Exception必须抛出具体业务异常 - 禁止在 Service 层返回 ResponseEntity那是 Controller 层的事 - 禁止修改 pom.xml 中的 Spring Boot Parent 版本除非明确指示 - 禁止生成 // TODO 占位注释要么给完整实现要么不生成 - 禁止使用已标记 Deprecated 的 API ## 统一返回体 所有接口返回 ResultT不用 ResponseEntityObject - 成功Result.success(data) - 失败Result.fail(ErrorCode.XXX) ## 异常处理 - Service 层抛出继承 BaseException 的业务异常 - 统一由 RestControllerAdvice 的 GlobalExceptionHandler 处理 - 不在 Controller 层写 try-catch ## 包结构严格遵守 - controller只处理请求参数校验和返回体封装 - service / serviceImpl业务逻辑 - repository数据访问只用 JPA Repository 接口 - domain/entity数据库实体用 Entity 注解 - dto接口入参 DTO用 Validated 做参数校验 - vo接口出参 VO ## 命名规范 - 类名 PascalCase方法/字段 camelCase - 接口方法动词开头get/create/update/delete/query - 常量 UPPER_SNAKE_CASE全部放 constant 包下的 Constants 类 ## RESTful 风格 - GET 查询POST 创建PUT 全量更新PATCH 部分更新DELETE 删除 - 路径用小写连字符/api/v1/user-orders不用下划线测试规范文件testing.mdc--- description: 单元测试和集成测试规范 globs: **/test/**/*.java alwaysApply: false --- # 测试编写规范 ## 框架