cursor rules 实践

cursor rules 定义

通过可复用且有作用域的指令,控制 Agent 模型的行为。规则为 Agent 和 Inline Edit 提供系统级指令。可以把它们看作项目的持久化上下文、偏好或工作流。

现在cursor rules 支持四种类型的规则:

  • project rules
    • 存在.cursor/rules中,受版本控制,作用范围限定在你的代码库里
  • user rules
    • 作用于你的cursor全局环境。在设置中定义,并且始终生效、
  • AGENTS.md
    • 用markdown编写的Agent指令,是.cursor/rules的简化替代方案
  • .cursorrules
    • 仍然支持,已经弃用的rules类型,可以使用project rules

我们主要围绕 project rules 和 user rules 展开,规则的存在,其实就是在提示层提供了持久、可复用的上下文。

Project Rules 项目规则

项目规则位于 .cursor/rules .每条规则都是一个文件,并纳入版本控制。它们可以通过路径模式限定作用域、手动触发,或按相关性自动包含。子目录也可以放置各自的 .cursor/rules 目录,仅作用于该文件夹。

用项目规则来:

  • 编码与你代码库相关的领域知识
  • 自动化项目特定的工作流或模板
  • 统一风格或架构决策

项目规则的每一个规则文件应该通过MDC(.mdc)文件编写。这是一种同时支持原数据和内容的格式。通过类型下拉菜单控制规则的应用方式,该操作会更改 description、globs、alwaysApply 属性。

规则类型 描述
Always 始终包含在模型上下文中
Auto Attached 当引用与某个 glob 模式匹配的文件时包含
Agent Requested 提供给 AI,由其决定是否包含。必须提供描述
Manual 只有在使用 @ruleName 明确提及时才会包含
yaml 复制代码
---
description:
globs:
alwaysApply: true
---


-   Use our internal RPC pattern when defining services
-   Always use snake_case for service names.


@service-template.ts

嵌套规则

我们可以在项目各个位置的 .cursor/rules 中添加规则来组织不同的规则,当引用其目录的文件时,嵌套规则会自动附加

bash 复制代码
project/
  .cursor/rules/        # 项目范围的规则
  backend/
    server/
      .cursor/rules/    # 后端特定规则
  frontend/
    .cursor/rules/      # 前端特定规则

创建规则

使用 New Cursor Rule 命令,或前往 Cursor Settings > Rules 创建规则。这样会在 .cursor/rules 中创建一个新的规则文件。在设置里你能查看所有规则及其状态。

生成规则

我们也可以直接在对话中使用/Generate Cursor Rules 命令生成规则

User Rules 用户规则

用户规则是在 Cursor Settings → Rules 中定义的全局偏好设置,适用于所有项目。它们为纯文本,非常适合用于设定偏好的沟通风格或编码规范

实践

我们可以通过设置user rules 设置统一的规范,适用于所有项目,当然,每一个不同的项目也可能会有不同的规范,这个时候我们就可以利用project rules来为项目单独设置规则。

我的理解是每一个rules都是一系列提示词,作为每一次提问agent的前置提示词,也就意味着,你每一次提问,都会带上rules中的提示作为一个条件,与你的提问一起提供给agent

前面我们已经知道,我们可以直接通过指令让cursor自动为我们生成rules,我们也可以自己来编辑mdc文件,自己来设置特定的rules,下面我们就来设置一个组件命名的project rules。

设置组件命名规则(project rules 尝试)

首先,我们进入到cursor setting中,找到project rules,点击add rule

然后,我们将组件命名规则命名为 component-name-test

我们可以在这个位置设置 规则的作用范围,因为这里是一个命名规范,所以我们将其设置为Always Apply

我们写了一个简单的案例测试

接下来,我们可以打开 curosr setting 查看该命名规则是否有被识别到

我们已经成功看到该 rules 被成功识别到了,我们让cursor给我们写一个简单的组件尝试,看看这个规则是否应用上。

在这个聊天框这个按钮中,我们可以看到当前会话下会应用到的规则

在AI的回答当中,我们已经看到AI已经应用到 命名规则 了

再看看其代码

最后生成的组件名称也是按照我们的规则来实现的,我们还可以加上其他规则,比如:组件结构规范,报错处理规范,依赖安装规范等等,来让cursor为我们生成更符合预期的代码。

设置组件结构规则(user rules)

尝试完project rules 我们在试试 user rules ,假如我们想要通过user rules 设置一套组件结构规则,让其按照我们的规范来生成组件,我们来添加一条 user rules

我们简单写了一套测试命名规则

我们再让cursor给我们写一个简单弹窗组件

我们可以看到ai返回的回答也按照我们的user rules来了

我们可以看到不仅仅是符合命名规范,组件结构也是按照我们的 user rules来的

实际业务

cursor rules 大有可为,我们可以通过一系列的rules来规定 cursor 如何为我们工作,rules的本质就是一系列的提示词,通过统一,规范化的提示为 cursor 提供定制化要求,可以大大提高我们的工作效率。

在我们的业务场景当中有这些:

  • renderder
    • 代码风格
    • 组件规范
    • 错误处理
    • 统一国际化
    • IPC通信
    • 性能优化
    • 项目结构
    • 状态管理
    • 单元测试
  • natice
    • 生命周期规范
    • 依赖管理规范
    • 错误处理
    • 文件操作规范
    • 国际化规范
    • IPC通信
    • 预加载脚本规范
    • 多进程管理规范
    • 项目结构
    • 窗口管理规范

一些想法

上述 rules 都是根据我们的实际的业务来规定的,其实在我看完其他文档像一下很好的场景也是很值得参考的。大有可为

例如:

  • 自动化工作流。代码提交、代码打包之类的工作
  • 自动化测试。我们实际业务项目中单元测试就属于这种
相关推荐
fruge10 小时前
Vue项目中的Electron桌面应用开发实践指南
前端·vue.js·electron
漂流瓶jz16 小时前
Webpack中各种devtool配置的含义与SourceMap生成逻辑
前端·javascript·webpack
前端架构师-老李16 小时前
React 中 useCallback 的基本使用和原理解析
前端·react.js·前端框架
木易 士心16 小时前
CSS 中 `data-status` 的使用详解
前端·css
明月与玄武16 小时前
前端缓存战争:回车与刷新按钮的终极对决!
前端·缓存·回车 vs 点击刷新
牧马少女17 小时前
css 画一个圆角渐变色边框
前端·css
zy happy17 小时前
RuoyiApp 在vuex,state存储nickname vue2
前端·javascript·小程序·uni-app·vue·ruoyi
小雨青年17 小时前
Cursor 项目实战:AI播客策划助手(二)—— 多轮交互打磨播客文案的技术实现与实践
前端·人工智能·状态模式·交互
小光学长17 小时前
基于Vue的儿童手工创意店管理系统as8celp7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
meichaoWen17 小时前
【Vue】Vue框架的基础知识强化
前端·javascript·vue.js