Cursor Rules怎么配置目录结构规范?
想让Cursor中的AI真正理解你的项目结构?前提是在项目根目录下创建一个.cursor/rules/目录,放进去一个带frontmatter的.mdc规则文件。少了这一步,AI就会按通用Ja va项目的习惯去猜路径,结果就是生成的Controller、Service、Mapper全放错位置,接口与实现不匹配之类的麻烦就来了。
要让Cursor中的AI准确理解并遵循你的项目目录结构,关键就是通过规则文件把包路径、分层关系和命名惯例都明确声明出来。否则,AI会按通用Ja va项目猜测结构,导致生成的类放错位置、接口与实现不匹配、Mapper被塞进controller包里,后续还得手动大挪移。
创建项目级规则目录
在项目根目录下执行命令:mkdir -p .cursor/rules。这一步绝对不可跳过。Cursor只认.cursor/rules/下的.mdc文件作为项目规则;如果你放在其他位置,比如直接在根目录放一个.cursorrules,那是完全无效的。另外注意,目录名是区分大小写的,必须是小写.cursor,写成.Cursor或cursor都不行。
编写结构规范规则文件
接着在.cursor/rules/目录下新建一个文件,比如project-structure.mdc。文件顶部必须写上frontmatter声明,这是规则生效的前提:
---
description: ZTE-CRM项目目录与包结构规范
alwaysApply: true
---
没有这个frontmatter,AI会直接忽略整个文件内容;如果缺少alwaysApply: true,那么规则只在你手动@提及该文件时才生效,没法保证每次生成都自动遵守结构。
声明具体目录结构与命名规则
在frontmatter下面,用Markdown正文逐条列出结构要求,避免模糊描述。下面是ZTE-CRM项目的实际写法,可以直接参考:
# 包结构规范
- 根包路径固定为:`com.zte.mcrm.activity`
- controller 层路径:`web/controller/`,类名格式:`{Module}Controller`
- service 层路径:`service/`,接口名格式:`I{Module}Service`,实现类路径:`service/impl/{Module}ServiceImpl.ja va`
- repository 层路径:`repository/mapper/` 和 `repository/rep/`,Mapper 接口名后缀为 `Mapper`,Repository 实现类后缀为 `Repository`
- 公共组件统一放在 `common/` 下,其中常量在 `common/constant/`,枚举在 `common/enums/`
这些声明必须和你的实际代码树完全一致。举例来说,如果项目中service接口实际放在service/api/下,而你写成了service/,AI就会把新接口生成到错误的默认路径,后续还得手动挪动,非常麻烦。
验证规则是否加载成功
保存文件后,需要让Cursor重新加载规则。操作很简单:打开任意一个Ja va文件,按Ctrl+L(Windows/Linux)或Cmd+L(macOS)调出命令面板,输入「Reload Window」并回车,窗口就会重启。重启后,你可以在聊天框里输入“帮我写一个用户管理的Controller”试试效果。AI生成的类会自动落在web/controller/下,包声明为package com.zte.mcrm.activity.web.controller;,类名是UserController。
