Cursor Rules如何配置后端项目规范?

作者:袖梨 2026-07-31

关键在于将项目规范固化进项目根目录的.cursorrules文件,AI每次生成代码时自动读取并遵守:Spring Boot需统一返回Result、Service加@Transactional、异常全抛出由全局处理器拦截;Go项目则限定Gin+GORM+Zap栈、Handler必须用*gin.Context、日志用zap、错误调用customError.New。

让AI在Java或Go后端项目里写代码时不乱加Lombok、不手动处理异常、不绕过全局拦截器,关键不是反复提醒它,而是把项目规范固化进.cursorrules文件——这个文件一放,AI每次生成都自动读取,不再凭空猜测你的架构意图。

创建项目级规则文件

在项目根目录下新建一个名为.cursorrules的纯文本文件,不要加任何扩展名。这个文件必须放在最外层,和src、pom.xml或go.mod同级,否则AI根本找不到它。

【文件名必须是.cursorrules,不能是.cursorrules.md或.cursorrules.txt】

这一步操作起来很简单,直接在终端执行:touch .cursorrules即可。

写入Spring Boot核心约束

如果你用的是Spring Boot,下面这段规则可以直接复制粘贴进去,它强制AI遵守你项目的实际分层逻辑:

你是一个Java后端开发专家,精通SpringBoot3.x。

项目约束:

所有Controller返回Result统一包装

Service层方法必须标注@Transactional,禁止用SqlSession手动提交

异常全部throw出去,由GlobalExceptionHandler统一拦截处理

数据库逻辑删除字段必须用@TableLogic注解,严禁物理DELETE

RESTful路由严格使用名词复数形式:/users、/orders

数据库字段名用snake_case,Java实体属性用camelCase

禁止在Controller里捕获业务异常并return null或new HashMap()

注意:最后一条“禁止在Controller里捕获业务异常”是关键防线,不写这条,AI大概率会自作主张try-catch再return new Result(),破坏你已有的全局异常流。

配置Go后端行为契约

Go项目不需要Spring生态那套,但更需要明确边界。按以下三步写:

第一步:声明AI角色定位

你是一个专注Go微服务的工程师,熟悉Gin+GORM+Zap技术栈。

第二步:定义不可逾越的红线

所有HTTP Handler函数必须接收*gin.Context参数,禁止用net/http原生Handler

数据库操作必须走GORM实例,禁止直接调用database/sql

日志输出必须用zap.Sugar().Info/Error,禁止fmt.Println或log.Printf

第三步:指定结构体字段映射规则

JSON响应字段用json:"user_id"标签,对应数据库列user_id,Go结构体字段命名为UserID

所有错误返回必须调用customError.New("xxx"),该函数已在internal/error包中定义

【第三步中的customError.New必须真实存在,否则AI会虚构函数导致编译失败】

启用规则引擎并验证

打开Cursor设置 → Editor → AI → 勾选Enable Rules Engine,然后重启编辑器。

验证是否生效:在任意Controller里输入“// 生成用户查询接口”,看AI返回的代码是否自动包裹Result.success(...)、是否跳过try-catch、是否用了@GetMapping("/users/{id}")而不是@GetMapping("/user")。

相关文章

精彩推荐