Cursor Rule:让大模型胡乱回答滚蛋!

相信你在使用 Cursor 写一些 demo 程序的时候,经常会遇到重复发送给大模型一些提示词。

实际上,这些重复的提示词写成 rule 再合适不过了。

本篇文章介绍 Cursor Rule。相信读完这篇文章,再也不用发愁怎么写 Cursor Rule 了。

1. 什么是 Cursor Rule?

Cursor Rule 用来控制 Agent 模型需要重复使用的提示词。

在开发一个项目时,有些约定是需要从头到尾遵守的,比如编码规范。这个时候,使用 Rule 就特别合适。

Cursor 支持三种类型的 Rule:

  • Project 级别:存储在 .cursor/rules ,范围是代码库
  • User 级别:Cursor 的全局规则。在编辑器的设置中定义并始终使用。例如,让 Agent 始终以简体中文回复。

  • Memories:根据我们在 Chat 中的对话自动生成规则。

2. Cursor Rule 是怎么工作的?

Rule 通过在提示词级别提供持久的、可重用的上下文来解决这个问题。

简单来说,我们发给模型的提示词=基础提示词 + Rule + 上下文信息

当存在不同类型的 Rule 时,Cursor 处理 Rule 的优先级如下:

  • 文件特定规则:针对某个文件的直接规则
  • 项目级别规则:项目配置文件的规则。
  • 用户级别规则:也就是全局规则。

3. 怎么使用 Project Rule?

项目规则位于 .cursor/rules 中。每个规则都存储为文件并受版本控制。

使用项目规则可以用来:

  • 对代码库的知识进行编码
  • 自动执行与项目有关的工作流或模板
  • 标准化样式或架构决策

每个规则文件都以 MDC (.mdc) 编写,MDC 是一种轻量级格式,支持在单个文件中存储元数据和内容,可以理解为阉割版的 markdown 格式。规则支持以下类型:

  • Always:始终包含在模型上下文中。
  • Auto Attached:设置模式匹配,当引用的文件与模式匹配时使用
  • Agent Request:AI自动决定何时使用它,但必须提供触发 AI 自动调用的描述。例如,当XXX时候,调用某些规则文件。
  • Manual:仅在 Chat 对话框中使用 @ruleName 时包含这个规则文件。

例如,我们在 Cursor 的设置页面创建一个项目规则:

那么,MDC 文件应该写什么呢?

这里,我以 google C++ 编码规范为例写了一个 C++ 编码规范的 rule。由于文本过长,就不全部展示了。实际上,也可以让大模型生成。

然后,让 Agent 检查一个文件是否遵循了 google C++ 编程规范并进行修改:

所以,你可以看到,MDC 文件的语法类似于 markdown,当然并不是完全支持 markdown 的语法。

另外,项目级的 Rule 是可以有嵌套结构的,举个例子:

project/
  .cursor/rules/        # Project-wide rules
  backend/
    server/
      .cursor/rules/    # Backend-specific rules
  frontend/
    .cursor/rules/      # Frontend-specific rules

4. 怎么使用 User Rule?

User rule 是一个全局设置,在 Cursor Settings -> Rules 可以设置。比如,我们可以设置回复的语言和风格:

请以简洁的风格回复。必须使用简体中文回复。

5. 怎么使用 Memories Rule?

Memories Rule 一般在我们和大模型对话了几轮之后,让大模型根据历史对话生成 rule,在 chat 对话框中,可以使用 /generate cursor rules 生成 rule:

6. 最佳使用指南

因为 rules 本质上 prompt,所以好的 rules 一定是指令清晰的、可执行的以及有边界的。

总结来说就是,对什么对象何时执行什么操作。

当然,官网还给出了一些建议:

  • rule 在 500 行以内
  • 将大的 rule 拆解成小的、可组合的 rule
  • 提供具体的示例或参考文件
  • 避免含糊不清的指导
  • 在聊天中重复提示时,重复使用规则

全文完。

我是一梵AI编程,聚焦Python/C++以及AI变现。关注我,让你变强、赚到钱。

### 关于 Cursor 的规则与用法 在编程和数据库领域,`cursor` 是一种用于遍历和操作数据集的工具。以下详细介绍了其规则和用法: #### 1. 数据库中的 Cursor 在数据库中,游标(Cursor)通常用于从结果集中逐行处理数据[^1]。以下是其主要特点: - 游标允许用户对查询结果进行逐行访问,而不是一次性将所有数据加载到内存中。 - 它支持向前或向后移动,具体取决于数据库系统的实现和支持的功能。 创建和使用游标的典型过程包括以下几个方面: ```sql DECLARE cursor_name CURSOR FOR SELECT query; OPEN cursor_name; FETCH NEXT FROM cursor_name INTO variable_name; CLOSE cursor_name; DEALLOCATE cursor_name; ``` 上述代码展示了如何声明、打开、获取以及关闭一个游标[^2]。 #### 2. 编程语言中的 Cursor 在某些编程语言中,如 Python 或 Java,`cursor` 通常作为数据库连接的一部分被提供。例如,在 Python 中使用 `sqlite3` 模块时,可以通过以下方式创建和使用游标: ```python import sqlite3 connection = sqlite3.connect("example.db") cursor = connection.cursor() cursor.execute("SELECT * FROM table_name") rows = cursor.fetchall() for row in rows: print(row) cursor.close() connection.close() ``` 这里,`cursor` 对象负责执行 SQL 查询并获取结果[^3]。 #### 3. 游标的类型 根据数据库系统的设计,游标可以分为以下几种类型: - **只进游标(Forward-only Cursor)**:只能向前遍历结果集。 - **静态游标(Static Cursor)**:创建一个结果集的快照,不会反映后续的数据更改。 - **动态游标(Dynamic Cursor)**:能够反映其他用户对数据所做的更改。 - **键集驱动游标(Keyset-driven Cursor)**:包含一个固定的结果集,但允许检测某些数据变化[^4]。 #### 4. 使用游标的注意事项 - 游标可能会消耗大量资源,因此应尽量减少其使用频率。 - 在不再需要游标时,务必关闭它以释放相关资源。 - 如果可能,优先使用集合操作(如直接使用 `SELECT` 查询)代替游标,因为集合操作通常更高效。 ```sql -- 示例:关闭游标 CLOSE cursor_name; DEALLOCATE cursor_name; ``` ### 总结 `Cursor` 在数据库和编程中主要用于遍历和操作数据集。它的使用需要遵循特定的规则,并且需要注意性能和资源管理问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值