1. 项目概述为什么我们需要一个统一的 Cursor Rules 仓库如果你和我一样深度使用 Cursor 作为日常开发的主力工具那你一定经历过这样的场景每次新建一个项目或者切换到一个新的技术栈都得重新去翻找、整理甚至重新编写一套.cursorrules文件。Python 项目一套React 项目一套Vue 项目又是另一套。时间一长电脑里散落着各种版本的规则文件有的过时了有的互相冲突管理起来极其混乱。更头疼的是团队协作时如何保证每个成员使用的 Cursor 规则是统一的如何让 AI 助手生成的代码风格、项目结构、甚至 API 设计都能符合团队的既定规范这些问题单靠个人零散的规则文件是无法解决的。这正是flyeric0212/cursor-rules这个开源项目诞生的背景。它不是一个简单的规则合集而是一个经过系统化分类、标准化设计的 Cursor Rules 知识库旨在为个人开发者和团队提供一套“开箱即用”且“持续进化”的 AI 编码规范。简单来说这个项目把 Cursor Rules 分成了四个清晰的层级通用规则层、编程语言层、框架层和其他工具层。这种分层设计非常巧妙它模拟了一个专业开发者思考问题的路径先确定项目的基础原则和技术栈再聚焦到具体的语言语法最后细化到框架的最佳实践。通过这种方式无论是开发一个全新的全栈应用还是维护一个遗留的单一技术项目你都能快速找到并组合出最适合当前上下文的规则集让 Cursor 真正成为你得心应手的“结对编程”伙伴而不是一个需要你反复纠正的“实习生”。2. 核心架构解析四层规则体系的设计哲学项目的核心在于其清晰的四层架构。理解每一层的职责和生效机制是高效使用它的关键。这不仅仅是文件分类更是一种工程思维的体现。2.1 通用规则层奠定项目基石这一层的规则位于base/目录是项目的“宪法”它为所有代码提供了最基础的、不可动摇的规范。无论你写的是 Python 后端还是 React 前端这些规则都会生效。core.mdc这是规则的“元规则”。它定义了 AI 应该如何响应你的指令比如要求 AI 在给出代码时同时解释关键逻辑或者优先使用异步编程模式。它设定了你和 AI 协作的基本“对话方式”。tech-stack.mdc这里定义了项目的技术选型。比如明确后端使用 FastAPI 而非 Flask数据库使用 PostgreSQL 并配以 SQLAlchemy ORM缓存使用 Redis。这能确保 AI 在建议库、设计 API 或处理数据时不会提出与技术栈相悖的方案。project-structure.mdc项目结构规范。它规定了src/,tests/,config/等目录的用途以及像services/,models/,api/这类业务目录的组织方式。这能保证 AI 生成的新文件会放到正确的位置维护了项目结构的清晰和一致。general.mdc通用编程规则项目提示后续会移除其功能可能被合并。它可能包含一些跨语言的优秀实践比如“函数应该短小且功能单一”、“避免使用全局变量”、“错误处理要明确”等。实操心得在团队项目中我强烈建议将core.mdc和project-structure.mdc作为强制规范。这能从根本上统一团队的代码产出风格和项目面貌减少因个人习惯不同带来的理解成本。tech-stack.mdc则需要根据具体项目及时更新特别是在技术栈升级或引入新工具时。2.2 编程语言层规范语法与风格这一层规则位于languages/目录是“语法教科书”。它们根据文件扩展名如.py,.tsx,.go自动触发确保特定语言的代码符合最佳实践。作用机制当你编辑一个.py文件时Cursor 会自动应用python.mdc中的规则。这意味着 AI 会遵循 PEP 8 规范、使用类型注解、推荐特定的异常处理模式等。内容示例以python.mdc为例它可能包含“使用snake_case命名变量和函数”、“import语句应分组标准库、第三方库、本地库并按字母排序”、“优先使用列表推导式而非map/filter”、“为公共模块、函数、类和方法编写docstring”。价值这一层解决了不同语言生态差异带来的问题。Java 的规则会强调Override注解和final关键字的使用而 Go 的规则则会强调错误处理、接口定义和go fmt格式化。这让 AI 生成的代码不仅功能正确而且“地道”符合该语言社区的普遍约定。2.3 框架层融入生态最佳实践这是最具价值的一层位于frameworks/目录它让 AI 从“懂语法”升级为“懂框架”。规则根据文件上下文或扩展名应用或者在你提及框架名时AI 会主动请求应用。前端框架例如react.mdc会规定使用函数组件和 Hooks避免使用过时的 Class 组件nextjs.mdc会强调 App Router 与 Pages Router 的选择、服务端组件与客户端组件的边界、以及如何正确进行数据获取。后端框架fastapi.mdc会指导 AI 如何正确使用 Pydantic 模型定义请求/响应体、如何设置依赖注入、如何编写符合 OpenAPI 规范的路径操作。springboot.mdc则会涉及 Bean 的管理、RESTful 接口设计、以及 Spring Data JPA 的使用规范。移动开发框架flutter.mdc会强调 Widget 的不可变性、状态管理Provider/Riverpod的选择、以及响应式编程的写法。自动判断与请求一个精妙的设计是AI 可以根据上下文“自动判断”。比如你在一个明显是 React 组件的文件中要求“创建一个表单”AI 可能会问“检测到您正在使用 React是否需要应用react-hook-form.mdc和zod.mdc规则来生成带有验证的表单”这极大地提升了交互的智能化程度。注意事项框架层规则最容易过时。前端生态日新月异一个今天还是最佳实践的规则半年后可能就因为框架版本升级而不再适用。因此使用这个仓库时要留意规则的更新日期和对应的框架版本对于关键项目建议基于仓库的规则进行二次校验和定制。2.4 其他工具层规范开发流程这一层位于other/目录的规则是可选的通常需要你通过符号显式引入。它们不直接关乎代码生成而是规范开发流程和协作。git.mdc定义提交信息的规范如 Conventional Commits分支命名策略提醒在提交前运行测试等。gitflow.mdc如果团队使用 Git Flow 工作流这个规则可以指导 AI 在创建功能分支、发布分支或修复热补丁时应该遵循怎样的流程和命名。document.mdc统一代码注释、API 文档如 Swagger/OpenAPI 注释和项目 README 的编写风格。3. 实战应用如何为你的项目配置 Cursor Rules理解了架构接下来就是动手。这里我以一个典型的“Next.js FastAPI”全栈项目为例演示如何从零开始配置。3.1 初始化与规则选取首先将仓库克隆到本地或者直接将其作为你项目的一个子模块git submodule。# 直接克隆到你的项目目录中 git clone https://github.com/flyeric0212/cursor-rules.git接下来在你的项目根目录创建或编辑.cursorrules文件。这个文件是指令的集合用于引入和组合规则。# .cursorrules 请遵循以下规则进行开发 base/core.mdc base/tech-stack.mdc base/project-structure.mdc languages/typescript.mdc languages/python.mdc frameworks/nextjs.mdc frameworks/fastapi.mdc frameworks/zod.mdc frameworks/react-hook-form.mdc other/git.mdc关键点解析符号引入这是调用特定规则文件的标准方式。路径相对于你的.cursorrules文件位置。如果你把cursor-rules仓库克隆到了项目根目录那么路径就是./cursor-rules/base/core.mdc。顺序重要性规则的应用有一定顺序。通常通用规则在前语言和框架规则在后。后引入的规则如果与前面的冲突可能会覆盖或细化前面的规则。项目本身的规则设计通常考虑了这一点但如果你自定义规则需要注意顺序。按需引入不是所有规则都需要。如果你的项目是纯后端 FastAPI就不需要引入nextjs.mdc和前端相关的规则。保持.cursorrules文件的精简能让 AI 的上下文更专注。3.2 定制化你的规则以 tech-stack.mdc 为例仓库提供的base/tech-stack.mdc是一个模板你需要根据实际项目填充内容。这是让 AI 理解你项目全貌的关键一步。!-- cursor-rules/base/tech-stack.mdc -- ### 项目技术栈定义 **后端 (Backend):** - **框架**: FastAPI (v0.104) - **数据库**: PostgreSQL (v15)使用 SQLAlchemy (v2.0) 作为 ORMAlembic 进行数据库迁移。 - **缓存**: Redis (v7)用于会话存储和热点数据缓存。 - **身份验证**: JWT (JSON Web Tokens)使用 python-jose 库。 - **API 文档**: 自动生成 OpenAPI 文档 (Swagger UI 和 ReDoc)。 - **异步处理**: 使用 httpx 进行外部 API 调用使用 celery 处理后台任务如果涉及。 **前端 (Frontend):** - **框架**: Next.js (v14)使用 App Router。 - **语言**: TypeScript (v5)严格模式开启。 - **样式**: Tailwind CSS (v3.3)配合 shadcn/ui 组件库。 - **状态管理**: Zustand。仅当组件间状态共享复杂时使用优先使用 React 状态和 Server Components。 - **HTTP 客户端**: axios 或 fetch API。 - **表单处理**: React Hook Form 配合 Zod 进行模式验证。 **开发与部署:** - **包管理**: 后端使用 uv 或 poetry前端使用 pnpm。 - **代码质量**: 后端使用 black, isort, mypy前端使用 Prettier, ESLint。 - **容器化**: Docker 与 Docker Compose。 - **部署**: 后端部署于 Linux 服务器 (Nginx Gunicorn/Uvicorn)前端部署于 Vercel。 **重要原则:** - 所有 API 交互必须包含完整的错误处理。 - 数据库查询必须使用 SQLAlchemy 异步会话。 - 前端组件优先设计为 Server Components仅在需要交互性时使用 “use client”。 - 任何第三方服务调用必须有超时和重试机制。通过这样详细的定义当你对 AI 说“帮我创建一个用户注册的 API 端点”时AI 就会知道要使用 FastAPI、SQLAlchemy 异步模型、Pydantic 验证并自动生成符合 JWT 流程的代码而不是给出一个 Flask 或 Django 的解决方案。3.3 在 Cursor 中验证与使用配置好.cursorrules后重启 Cursor 或重新打开项目让 Cursor 加载新规则。你可以通过以下方式验证直接提问在 Chat 界面输入“我们项目用的是什么技术栈”AI 应该能根据tech-stack.mdc准确回答。请求生成代码输入“在src/app/api/users/route.ts中创建一个获取用户列表的 GET 接口需要分页。” AI 生成的代码应该会使用 Next.js App Router 的 Route Handler 格式。使用 TypeScript 和异步函数。包含分页逻辑使用searchParams。有基本的错误处理。注释可能会提及使用 Zod 验证查询参数因为你引入了zod.mdc。观察自动补全当你在一个.py文件中输入def get_user时AI 的自动补全建议会倾向于返回一个 Pydantic 模型并加上async关键字和正确的类型提示这都得益于python.mdc和fastapi.mdc的规则。4. 高级技巧与避坑指南在实际使用中我积累了一些能极大提升效率的经验和需要避开的“坑”。4.1 规则冲突与优先级管理当多个规则对同一件事有不同要求时就会发生冲突。例如general.mdc可能说“函数行数不要超过50行”但某个框架的特定模式可能导致函数略长。解决策略规则文件本身应该尽量细化其适用范围。更具体的规则框架层通常比通用规则优先级更高。你可以在.cursorrules中通过注释或调整顺序来微调。更好的做法是在团队内部对这类冲突达成共识然后定制一个本项目的project-specific.mdc规则放在最后引入用于覆盖或明确特殊情况。排查方法如果发现 AI 的行为不符合预期可以临时在 Chat 中询问“当前生效的 Cursor Rules 有哪些” 或者 “对于函数长度限制当前遵循的是哪条规则” AI 有时会列出它正在参考的规则来源。4.2 编写自定义规则从消费者到贡献者仓库的规则是通用的你的项目一定有特殊需求。学会编写自定义规则至关重要。一个自定义规则文件例如project-rules.mdc可以包含!-- local-project-rules.mdc -- ### 本项目特定规范 **API 设计规范:** - 所有 RESTful 端点路径前缀必须是 /api/v1/。 - 响应体必须包裹在 {“code”: 200, “message”: “success”, “data”: ...} 的标准格式中。 - 错误时code 为非 200message 需明确data 可为空或包含错误详情。 **数据库规范:** - 所有数据表必须包含 created_at (timestamp) 和 updated_at (timestamp) 字段。 - 软删除使用 deleted_at (timestamp, nullable) 字段而非物理删除。 **前端组件规范:** - 所有可复用的 UI 组件必须放置在 /components/ui/ 目录下并使用 export default 导出。 - 组件必须使用 JSDoc/TSDoc 格式编写清晰的 Props 类型说明。 **指令示例:** - 当我说“创建一个标准的 CRUD 接口”你应该生成包含列表查询、详情获取、创建、更新、删除五个端点的基础代码框架并遵循上述 API 和数据库规范。然后在你的.cursorrules末尾加上./local-project-rules.mdc。这样AI 就能将通用规则和你的项目特规结合起来。4.3 性能与上下文长度优化引入大量规则文件可能会增加 AI 的上下文长度理论上可能影响响应速度或消耗更多 tokens。精简规则只引入当前项目真正需要的规则。一个移动端 Flutter 项目就不需要django.mdc。合并规则对于小型项目可以考虑将core.mdc、tech-stack.mdc等基础规则的核心内容合并写入一个本地的.cursorrules文件而不是通过引用多个文件。这能减少文件读取和解析的开销。使用.cursorignore如果你的项目中有大量不需要 AI 分析的目录如node_modules,build,.git配置好.cursorignore文件可以显著提升 Cursor 的文件索引和响应效率。4.4 团队协作流程要让规则在团队中生效关键在于流程。版本化规则库将cursor-rules仓库作为子模块引入你们的主项目仓库或者 fork 一份作为团队内部仓库。确保所有成员使用的规则版本一致。将.cursorrules纳入版本控制项目的.cursorrules文件必须提交到 Git 中。这是团队代码规范的一部分和.eslintrc.js、pyproject.toml同等重要。代码审查结合规则在 Code Review 时不仅要看代码逻辑也要检查生成的代码是否符合既定的 Rules 规范。这能反向督促大家正确配置和使用 Cursor。设立规则维护者指定专人或轮值关注上游cursor-rules仓库的更新评估新规则或变更并适时同步到团队内部版本中。5. 常见问题与排查实录即使配置得当过程中还是会遇到一些问题。这里记录了几个我踩过的坑和解决方法。问题现象可能原因排查与解决步骤AI 完全忽略规则生成不符合要求的代码。1..cursorrules文件路径错误或未被 Cursor 识别。2. 规则文件语法有误如 Markdown 格式错误。3. Cursor 未正确加载项目上下文。1. 确认.cursorrules在项目根目录。在 Cursor Chat 中输入/rules命令查看 Cursor 是否识别到了该文件及其内容。2. 检查引用的.mdc文件路径是否正确特别是使用了子模块或相对路径时。3. 尝试重启 Cursor或使用 “File - Open Folder” 重新打开项目根目录。规则部分生效但某些特定要求如 API 响应格式未被遵守。1. 规则描述不够清晰或存在歧义。2. 自定义规则与基础规则冲突且优先级设置不当。3. AI 的上下文理解偏差。1. 优化规则描述使用更明确、无歧义的指令。例如将“使用标准格式”改为“响应体必须是{“code”: number, “data”: any, “message”: string}的 JSON 对象”。2. 调整.cursorrules中规则的引入顺序将更具体、优先级更高的规则放在后面。3. 在提问时可以再次强调规则如“请严格按照我们定义的 API 响应格式来编写这个端点。”应用框架规则后AI 生成的代码过时或使用了废弃的 API。引用的框架规则文件版本较旧未跟上官方最新实践。1. 检查cursor-rules仓库中对应框架规则的更新日期和版本说明。2. 如果规则已过时可以考虑在本地自定义规则中覆盖过时的部分或向原仓库提交 Issue/PR。3. 在提问时指定版本如“请使用 Next.js 14 的 App Router 特性来实现。”AI 频繁询问是否要应用某个规则影响流畅度。该规则被设置为“需要用户明确请求”可能是框架层或工具层的规则。1. 如果该规则是项目必需的可以在.cursorrules中直接使用引入使其默认生效。2. 如果只是偶尔需要可以接受这种交互它确保了 AI 行为的可控性。你也可以在提问时主动它如“frameworks/zod.mdc请为这个表单创建验证模式。”最后我想分享一点个人体会。cursor-rules这类项目的价值远不止于提供一堆现成的配置文件。它更像是一个“集体智慧”的结晶将无数开发者在各自领域与 AI 协作的最佳实践沉淀下来。使用它的过程也是学习和规范自身开发习惯的过程。一开始你可能会觉得配置繁琐但一旦这套体系运转起来你会发现它极大地降低了沟通成本无论是与 AI 还是与队友让生成代码的“第一次正确率”大幅提升。真正的效率提升来自于将重复性的规范检查交给规则而让自己更专注于创造性的逻辑设计和架构决策。
Cursor Rules 统一仓库:四层架构设计,提升AI编程规范与团队协作效率
发布时间:2026/6/10 4:03:06
1. 项目概述为什么我们需要一个统一的 Cursor Rules 仓库如果你和我一样深度使用 Cursor 作为日常开发的主力工具那你一定经历过这样的场景每次新建一个项目或者切换到一个新的技术栈都得重新去翻找、整理甚至重新编写一套.cursorrules文件。Python 项目一套React 项目一套Vue 项目又是另一套。时间一长电脑里散落着各种版本的规则文件有的过时了有的互相冲突管理起来极其混乱。更头疼的是团队协作时如何保证每个成员使用的 Cursor 规则是统一的如何让 AI 助手生成的代码风格、项目结构、甚至 API 设计都能符合团队的既定规范这些问题单靠个人零散的规则文件是无法解决的。这正是flyeric0212/cursor-rules这个开源项目诞生的背景。它不是一个简单的规则合集而是一个经过系统化分类、标准化设计的 Cursor Rules 知识库旨在为个人开发者和团队提供一套“开箱即用”且“持续进化”的 AI 编码规范。简单来说这个项目把 Cursor Rules 分成了四个清晰的层级通用规则层、编程语言层、框架层和其他工具层。这种分层设计非常巧妙它模拟了一个专业开发者思考问题的路径先确定项目的基础原则和技术栈再聚焦到具体的语言语法最后细化到框架的最佳实践。通过这种方式无论是开发一个全新的全栈应用还是维护一个遗留的单一技术项目你都能快速找到并组合出最适合当前上下文的规则集让 Cursor 真正成为你得心应手的“结对编程”伙伴而不是一个需要你反复纠正的“实习生”。2. 核心架构解析四层规则体系的设计哲学项目的核心在于其清晰的四层架构。理解每一层的职责和生效机制是高效使用它的关键。这不仅仅是文件分类更是一种工程思维的体现。2.1 通用规则层奠定项目基石这一层的规则位于base/目录是项目的“宪法”它为所有代码提供了最基础的、不可动摇的规范。无论你写的是 Python 后端还是 React 前端这些规则都会生效。core.mdc这是规则的“元规则”。它定义了 AI 应该如何响应你的指令比如要求 AI 在给出代码时同时解释关键逻辑或者优先使用异步编程模式。它设定了你和 AI 协作的基本“对话方式”。tech-stack.mdc这里定义了项目的技术选型。比如明确后端使用 FastAPI 而非 Flask数据库使用 PostgreSQL 并配以 SQLAlchemy ORM缓存使用 Redis。这能确保 AI 在建议库、设计 API 或处理数据时不会提出与技术栈相悖的方案。project-structure.mdc项目结构规范。它规定了src/,tests/,config/等目录的用途以及像services/,models/,api/这类业务目录的组织方式。这能保证 AI 生成的新文件会放到正确的位置维护了项目结构的清晰和一致。general.mdc通用编程规则项目提示后续会移除其功能可能被合并。它可能包含一些跨语言的优秀实践比如“函数应该短小且功能单一”、“避免使用全局变量”、“错误处理要明确”等。实操心得在团队项目中我强烈建议将core.mdc和project-structure.mdc作为强制规范。这能从根本上统一团队的代码产出风格和项目面貌减少因个人习惯不同带来的理解成本。tech-stack.mdc则需要根据具体项目及时更新特别是在技术栈升级或引入新工具时。2.2 编程语言层规范语法与风格这一层规则位于languages/目录是“语法教科书”。它们根据文件扩展名如.py,.tsx,.go自动触发确保特定语言的代码符合最佳实践。作用机制当你编辑一个.py文件时Cursor 会自动应用python.mdc中的规则。这意味着 AI 会遵循 PEP 8 规范、使用类型注解、推荐特定的异常处理模式等。内容示例以python.mdc为例它可能包含“使用snake_case命名变量和函数”、“import语句应分组标准库、第三方库、本地库并按字母排序”、“优先使用列表推导式而非map/filter”、“为公共模块、函数、类和方法编写docstring”。价值这一层解决了不同语言生态差异带来的问题。Java 的规则会强调Override注解和final关键字的使用而 Go 的规则则会强调错误处理、接口定义和go fmt格式化。这让 AI 生成的代码不仅功能正确而且“地道”符合该语言社区的普遍约定。2.3 框架层融入生态最佳实践这是最具价值的一层位于frameworks/目录它让 AI 从“懂语法”升级为“懂框架”。规则根据文件上下文或扩展名应用或者在你提及框架名时AI 会主动请求应用。前端框架例如react.mdc会规定使用函数组件和 Hooks避免使用过时的 Class 组件nextjs.mdc会强调 App Router 与 Pages Router 的选择、服务端组件与客户端组件的边界、以及如何正确进行数据获取。后端框架fastapi.mdc会指导 AI 如何正确使用 Pydantic 模型定义请求/响应体、如何设置依赖注入、如何编写符合 OpenAPI 规范的路径操作。springboot.mdc则会涉及 Bean 的管理、RESTful 接口设计、以及 Spring Data JPA 的使用规范。移动开发框架flutter.mdc会强调 Widget 的不可变性、状态管理Provider/Riverpod的选择、以及响应式编程的写法。自动判断与请求一个精妙的设计是AI 可以根据上下文“自动判断”。比如你在一个明显是 React 组件的文件中要求“创建一个表单”AI 可能会问“检测到您正在使用 React是否需要应用react-hook-form.mdc和zod.mdc规则来生成带有验证的表单”这极大地提升了交互的智能化程度。注意事项框架层规则最容易过时。前端生态日新月异一个今天还是最佳实践的规则半年后可能就因为框架版本升级而不再适用。因此使用这个仓库时要留意规则的更新日期和对应的框架版本对于关键项目建议基于仓库的规则进行二次校验和定制。2.4 其他工具层规范开发流程这一层位于other/目录的规则是可选的通常需要你通过符号显式引入。它们不直接关乎代码生成而是规范开发流程和协作。git.mdc定义提交信息的规范如 Conventional Commits分支命名策略提醒在提交前运行测试等。gitflow.mdc如果团队使用 Git Flow 工作流这个规则可以指导 AI 在创建功能分支、发布分支或修复热补丁时应该遵循怎样的流程和命名。document.mdc统一代码注释、API 文档如 Swagger/OpenAPI 注释和项目 README 的编写风格。3. 实战应用如何为你的项目配置 Cursor Rules理解了架构接下来就是动手。这里我以一个典型的“Next.js FastAPI”全栈项目为例演示如何从零开始配置。3.1 初始化与规则选取首先将仓库克隆到本地或者直接将其作为你项目的一个子模块git submodule。# 直接克隆到你的项目目录中 git clone https://github.com/flyeric0212/cursor-rules.git接下来在你的项目根目录创建或编辑.cursorrules文件。这个文件是指令的集合用于引入和组合规则。# .cursorrules 请遵循以下规则进行开发 base/core.mdc base/tech-stack.mdc base/project-structure.mdc languages/typescript.mdc languages/python.mdc frameworks/nextjs.mdc frameworks/fastapi.mdc frameworks/zod.mdc frameworks/react-hook-form.mdc other/git.mdc关键点解析符号引入这是调用特定规则文件的标准方式。路径相对于你的.cursorrules文件位置。如果你把cursor-rules仓库克隆到了项目根目录那么路径就是./cursor-rules/base/core.mdc。顺序重要性规则的应用有一定顺序。通常通用规则在前语言和框架规则在后。后引入的规则如果与前面的冲突可能会覆盖或细化前面的规则。项目本身的规则设计通常考虑了这一点但如果你自定义规则需要注意顺序。按需引入不是所有规则都需要。如果你的项目是纯后端 FastAPI就不需要引入nextjs.mdc和前端相关的规则。保持.cursorrules文件的精简能让 AI 的上下文更专注。3.2 定制化你的规则以 tech-stack.mdc 为例仓库提供的base/tech-stack.mdc是一个模板你需要根据实际项目填充内容。这是让 AI 理解你项目全貌的关键一步。!-- cursor-rules/base/tech-stack.mdc -- ### 项目技术栈定义 **后端 (Backend):** - **框架**: FastAPI (v0.104) - **数据库**: PostgreSQL (v15)使用 SQLAlchemy (v2.0) 作为 ORMAlembic 进行数据库迁移。 - **缓存**: Redis (v7)用于会话存储和热点数据缓存。 - **身份验证**: JWT (JSON Web Tokens)使用 python-jose 库。 - **API 文档**: 自动生成 OpenAPI 文档 (Swagger UI 和 ReDoc)。 - **异步处理**: 使用 httpx 进行外部 API 调用使用 celery 处理后台任务如果涉及。 **前端 (Frontend):** - **框架**: Next.js (v14)使用 App Router。 - **语言**: TypeScript (v5)严格模式开启。 - **样式**: Tailwind CSS (v3.3)配合 shadcn/ui 组件库。 - **状态管理**: Zustand。仅当组件间状态共享复杂时使用优先使用 React 状态和 Server Components。 - **HTTP 客户端**: axios 或 fetch API。 - **表单处理**: React Hook Form 配合 Zod 进行模式验证。 **开发与部署:** - **包管理**: 后端使用 uv 或 poetry前端使用 pnpm。 - **代码质量**: 后端使用 black, isort, mypy前端使用 Prettier, ESLint。 - **容器化**: Docker 与 Docker Compose。 - **部署**: 后端部署于 Linux 服务器 (Nginx Gunicorn/Uvicorn)前端部署于 Vercel。 **重要原则:** - 所有 API 交互必须包含完整的错误处理。 - 数据库查询必须使用 SQLAlchemy 异步会话。 - 前端组件优先设计为 Server Components仅在需要交互性时使用 “use client”。 - 任何第三方服务调用必须有超时和重试机制。通过这样详细的定义当你对 AI 说“帮我创建一个用户注册的 API 端点”时AI 就会知道要使用 FastAPI、SQLAlchemy 异步模型、Pydantic 验证并自动生成符合 JWT 流程的代码而不是给出一个 Flask 或 Django 的解决方案。3.3 在 Cursor 中验证与使用配置好.cursorrules后重启 Cursor 或重新打开项目让 Cursor 加载新规则。你可以通过以下方式验证直接提问在 Chat 界面输入“我们项目用的是什么技术栈”AI 应该能根据tech-stack.mdc准确回答。请求生成代码输入“在src/app/api/users/route.ts中创建一个获取用户列表的 GET 接口需要分页。” AI 生成的代码应该会使用 Next.js App Router 的 Route Handler 格式。使用 TypeScript 和异步函数。包含分页逻辑使用searchParams。有基本的错误处理。注释可能会提及使用 Zod 验证查询参数因为你引入了zod.mdc。观察自动补全当你在一个.py文件中输入def get_user时AI 的自动补全建议会倾向于返回一个 Pydantic 模型并加上async关键字和正确的类型提示这都得益于python.mdc和fastapi.mdc的规则。4. 高级技巧与避坑指南在实际使用中我积累了一些能极大提升效率的经验和需要避开的“坑”。4.1 规则冲突与优先级管理当多个规则对同一件事有不同要求时就会发生冲突。例如general.mdc可能说“函数行数不要超过50行”但某个框架的特定模式可能导致函数略长。解决策略规则文件本身应该尽量细化其适用范围。更具体的规则框架层通常比通用规则优先级更高。你可以在.cursorrules中通过注释或调整顺序来微调。更好的做法是在团队内部对这类冲突达成共识然后定制一个本项目的project-specific.mdc规则放在最后引入用于覆盖或明确特殊情况。排查方法如果发现 AI 的行为不符合预期可以临时在 Chat 中询问“当前生效的 Cursor Rules 有哪些” 或者 “对于函数长度限制当前遵循的是哪条规则” AI 有时会列出它正在参考的规则来源。4.2 编写自定义规则从消费者到贡献者仓库的规则是通用的你的项目一定有特殊需求。学会编写自定义规则至关重要。一个自定义规则文件例如project-rules.mdc可以包含!-- local-project-rules.mdc -- ### 本项目特定规范 **API 设计规范:** - 所有 RESTful 端点路径前缀必须是 /api/v1/。 - 响应体必须包裹在 {“code”: 200, “message”: “success”, “data”: ...} 的标准格式中。 - 错误时code 为非 200message 需明确data 可为空或包含错误详情。 **数据库规范:** - 所有数据表必须包含 created_at (timestamp) 和 updated_at (timestamp) 字段。 - 软删除使用 deleted_at (timestamp, nullable) 字段而非物理删除。 **前端组件规范:** - 所有可复用的 UI 组件必须放置在 /components/ui/ 目录下并使用 export default 导出。 - 组件必须使用 JSDoc/TSDoc 格式编写清晰的 Props 类型说明。 **指令示例:** - 当我说“创建一个标准的 CRUD 接口”你应该生成包含列表查询、详情获取、创建、更新、删除五个端点的基础代码框架并遵循上述 API 和数据库规范。然后在你的.cursorrules末尾加上./local-project-rules.mdc。这样AI 就能将通用规则和你的项目特规结合起来。4.3 性能与上下文长度优化引入大量规则文件可能会增加 AI 的上下文长度理论上可能影响响应速度或消耗更多 tokens。精简规则只引入当前项目真正需要的规则。一个移动端 Flutter 项目就不需要django.mdc。合并规则对于小型项目可以考虑将core.mdc、tech-stack.mdc等基础规则的核心内容合并写入一个本地的.cursorrules文件而不是通过引用多个文件。这能减少文件读取和解析的开销。使用.cursorignore如果你的项目中有大量不需要 AI 分析的目录如node_modules,build,.git配置好.cursorignore文件可以显著提升 Cursor 的文件索引和响应效率。4.4 团队协作流程要让规则在团队中生效关键在于流程。版本化规则库将cursor-rules仓库作为子模块引入你们的主项目仓库或者 fork 一份作为团队内部仓库。确保所有成员使用的规则版本一致。将.cursorrules纳入版本控制项目的.cursorrules文件必须提交到 Git 中。这是团队代码规范的一部分和.eslintrc.js、pyproject.toml同等重要。代码审查结合规则在 Code Review 时不仅要看代码逻辑也要检查生成的代码是否符合既定的 Rules 规范。这能反向督促大家正确配置和使用 Cursor。设立规则维护者指定专人或轮值关注上游cursor-rules仓库的更新评估新规则或变更并适时同步到团队内部版本中。5. 常见问题与排查实录即使配置得当过程中还是会遇到一些问题。这里记录了几个我踩过的坑和解决方法。问题现象可能原因排查与解决步骤AI 完全忽略规则生成不符合要求的代码。1..cursorrules文件路径错误或未被 Cursor 识别。2. 规则文件语法有误如 Markdown 格式错误。3. Cursor 未正确加载项目上下文。1. 确认.cursorrules在项目根目录。在 Cursor Chat 中输入/rules命令查看 Cursor 是否识别到了该文件及其内容。2. 检查引用的.mdc文件路径是否正确特别是使用了子模块或相对路径时。3. 尝试重启 Cursor或使用 “File - Open Folder” 重新打开项目根目录。规则部分生效但某些特定要求如 API 响应格式未被遵守。1. 规则描述不够清晰或存在歧义。2. 自定义规则与基础规则冲突且优先级设置不当。3. AI 的上下文理解偏差。1. 优化规则描述使用更明确、无歧义的指令。例如将“使用标准格式”改为“响应体必须是{“code”: number, “data”: any, “message”: string}的 JSON 对象”。2. 调整.cursorrules中规则的引入顺序将更具体、优先级更高的规则放在后面。3. 在提问时可以再次强调规则如“请严格按照我们定义的 API 响应格式来编写这个端点。”应用框架规则后AI 生成的代码过时或使用了废弃的 API。引用的框架规则文件版本较旧未跟上官方最新实践。1. 检查cursor-rules仓库中对应框架规则的更新日期和版本说明。2. 如果规则已过时可以考虑在本地自定义规则中覆盖过时的部分或向原仓库提交 Issue/PR。3. 在提问时指定版本如“请使用 Next.js 14 的 App Router 特性来实现。”AI 频繁询问是否要应用某个规则影响流畅度。该规则被设置为“需要用户明确请求”可能是框架层或工具层的规则。1. 如果该规则是项目必需的可以在.cursorrules中直接使用引入使其默认生效。2. 如果只是偶尔需要可以接受这种交互它确保了 AI 行为的可控性。你也可以在提问时主动它如“frameworks/zod.mdc请为这个表单创建验证模式。”最后我想分享一点个人体会。cursor-rules这类项目的价值远不止于提供一堆现成的配置文件。它更像是一个“集体智慧”的结晶将无数开发者在各自领域与 AI 协作的最佳实践沉淀下来。使用它的过程也是学习和规范自身开发习惯的过程。一开始你可能会觉得配置繁琐但一旦这套体系运转起来你会发现它极大地降低了沟通成本无论是与 AI 还是与队友让生成代码的“第一次正确率”大幅提升。真正的效率提升来自于将重复性的规范检查交给规则而让自己更专注于创造性的逻辑设计和架构决策。