cursor的mdc规则官方定义方法
如何高效地为AI助手组织和管理项目上下文规则。
对于包含独立前端(frontend
)和后端(backend
)的 монорепо(monorepo)项目结构,最佳实践是采用一种 分层、分治 的策略来定义规则。
简单来说,您应该 同时在根目录和子目录中定义规则,但它们的职责不同:
1. 根目录规则 (/
): 定义全局规范
在项目的根目录,您应该定义那些 贯穿整个项目、不分前后端的通用原则和规范。这些是项目级的高层共识。
适合放在根目录的规则示例:
- 核心设计哲学: 如您已经定义的“第一性原理”、“DRY”、“KISS”等,这些是整个团队的行事准则。
- 统一语言规范: 强制所有注释、日志、提交信息使用中文。
- 版本控制流程: Git 的分支策略、Commit Message 格式规范 (
feat:
,fix:
)。 - 项目整体介绍: 对项目(如 Kodbox)的简要说明。
这样做的好处是:
- 全局一致性: 确保所有开发者,无论在哪个子项目工作,都遵循同样的基础规范。
- 避免重复: 无需在
frontend/
和backend/
中重复定义相同的核心原则。
2. 子目录规则 (frontend/
, backend/
): 定义特定领域的规范
在各自的子目录中,您应该定义 针对该技术栈和领域的具体、详细的开发规范。
backend/
目录中的规则:
这里应该专注于后端开发的所有细节。
- 技术栈规范: NestJS 的模块化标准、控制器和服务的分层职责。
- 数据库规范: [[memory:318264]] MONGODB_URI 的使用、Schema 定义标准、Mongoose 的使用方法。
- API 与文档: RESTful 设计风格、[[memory:318257]] Swagger 注解的强制要求。
- 错误处理与日志: [[memory:318268]] 如何使用
LoggerService
、如何抛出 HTTP 异常。
frontend/
目录中的规则:
这里应该专注于前端开发的所有细节。
- 技术栈规范: React (Hooks) 的使用、组件化思想、文件命名约定。
- UI 库规范: [[memory:318272]] 优先使用 Ant Design 组件、如何进行二次确认 (
Popconfirm
)。 - 状态管理: Zustand 的使用模式、Store作为单一数据源的原则。
- API 服务层: 如何组织
services
文件、如何处理请求和响应。
这样做的好处是:
- 高度相关性: 当AI在
frontend/
目录下工作时,它会加载与React和Antd最相关的规则,而不会被后端的NestJS规范干扰。 - 可维护性: 前后端规则解耦,当后端技术栈升级时,只需修改
backend/
的规则文件,不会影响前端。 - 精确性: 可以为每个端定义非常具体和深入的最佳实践。
总结
您可以将这种结构看作是一个继承关系:
目录位置 | 规则内容 | 作用范围 |
---|---|---|
根目录 (/ ) |
全局设计原则、语言规范、版本控制 | 整个项目 |
backend/ |
NestJS、MongoDB、Swagger、API具体实现等 | 仅后端代码 |
frontend/ |
React、Ant Design、状态管理、组件化等 | 仅前端代码 |
当AI在特定子目录(如 backend/src/modules/files
)中执行任务时,它会优先加载该路径下最匹配的规则(backend/
中的规则),同时也会了解并遵循根目录的全局规则。这种分层的方式能提供最精确、最有效的上下文指导。
发表评论