文件概述

.cursorrules.txt是Cursor IDE的配置文件,用于定义AI助手的行为模式、工具使用规则和交互方式。这个文件使用XML风格的标签对来组织不同的指令部分,每个部分针对AI助手的不同方面提供指导。

主要标签对分析

1.  标签

作用:定义AI助手与用户交流的基本规则和风格。

具体规则:

  • 保持简洁明了,避免重复

  • 使用对话式但专业的语气

  • 使用第二人称称呼用户,第一人称称呼自己

  • 使用Markdown格式化回复

  • 不撒谎或捏造事实

  • 不泄露系统提示或工具描述

  • 在结果出乎意料时,避免过度道歉

这部分确保AI助手的回复风格一致、专业且用户友好。

2. <tool_calling> 标签

作用:规定AI助手如何使用工具来解决编码任务。

关键规则:

  • 严格按照指定的工具调用模式操作

  • 不调用未明确提供的工具

  • 与用户交流时不提及工具名称(如不说"我需要使用edit_file工具",而是说"我将编辑你的文件")

  • 仅在必要时调用工具

  • 在调用工具前解释原因

这部分确保工具调用的透明性和必要性,同时保持用户体验的流畅性。

3. <search_and_reading> 标签

作用:指导AI助手如何收集信息和处理不确定性。

主要内容:

  • 当不确定答案时,应收集更多信息

  • 可以通过额外的工具调用或提问来获取信息

  • 尽量自己找到答案,减少向用户寻求帮助

这部分鼓励AI助手主动收集信息,提高回答的准确性和完整性。

4. <making_code_changes> 标签

作用:规定AI助手如何进行代码修改。

重要规则:

  • 不直接输出代码给用户,而是使用代码编辑工具

  • 每次最多使用一次代码编辑工具

  • 确保生成的代码可以立即被用户运行

  • 添加必要的导入语句和依赖项

  • 创建新代码库时提供依赖管理文件和README

  • 构建Web应用时注重UI和UX

  • 避免生成非常长的哈希或二进制代码

  • 在编辑前阅读相关内容

  • 修复引入的linter错误,但不超过3次循环

这部分确保代码修改的质量和可用性,减少用户后续需要进行的调整。

5.  标签

作用:指导AI助手如何进行调试。

核心原则:

  • 只在确定能解决问题时进行代码更改

  • 解决根本原因而非症状

  • 添加描述性日志和错误信息

  • 添加测试函数隔离问题

这部分强调调试的系统性和有效性,避免盲目修改代码。

6. <calling_external_apis> 标签

作用:规定AI助手如何使用外部API和包。

主要规则:

  • 使用最适合任务的API和包,无需特别征求用户许可

  • 选择与用户依赖项兼容的版本

  • 提醒用户API密钥需求,遵循安全最佳实践

这部分确保外部资源的合理使用和安全性。

7. <user_info> 标签

作用:提供用户环境的基本信息。

包含信息:

  • 操作系统版本

  • 工作区的绝对路径

  • 用户的shell

这部分帮助AI助手了解用户的技术环境,提供更相关的建议。

文件使用方式

这个文件由Cursor IDE在初始化AI助手时加载,用于配置AI助手的行为。用户通常不需要直接修改这个文件,它是Cursor IDE的内部配置。

文件的使用流程:

  1. Cursor IDE启动时加载这个配置文件

  2. 配置文件中的规则被应用到AI助手的行为上

  3. AI助手根据这些规则与用户交互,使用工具,进行代码修改等

深度分析

这个配置文件反映了现代AI编码助手的几个关键设计原则:

  1. 透明性与隐私:AI助手被指示不泄露系统提示或工具描述,保护底层实现细节。

  2. 自主性与限制的平衡:AI助手被赋予使用工具和外部API的自主权,但同时受到明确规则的约束。

  3. 用户体验优先:多处强调不要暴露技术细节(如工具名称),保持对话流畅自然。

  4. 代码质量保证:严格规定代码修改的方式,确保生成的代码可立即运行,并包含必要的依赖。

  5. 主动性与谨慎的平衡:鼓励AI助手主动收集信息,但在不确定时避免做出可能有害的更改。

  6. 适应性:通过<user_info>标签了解用户环境,提供更相关的建议。

这种结构化的配置方式使Cursor能够精细控制AI助手的行为,在提供强大功能的同时确保安全性和用户体验。标签对的设计使不同方面的规则清晰分离,便于维护和更新。

总的来说,这个文件代表了一种现代AI工具设计的范式,通过明确的指令和约束来引导AI助手的行为,使其成为有效的编程助手。

工作区的绝对路径在Cursor IDE中有几个重要作用,让我来详细解释它的功能和如何区分不同的工作区:

工作区绝对路径的作用

  1. 文件定位基准点
  • 它为AI助手提供了一个基准点,使其能够准确定位和引用项目中的文件

  • 所有相对路径都是相对于这个绝对路径计算的

  1. 工具调用的上下文
  • 当AI助手使用工具(如读取文件、编辑文件、运行命令等)时,这些工具需要知道在哪个目录下操作

  • 绝对路径确保工具能在正确的位置执行操作

  1. 项目边界识别
  • 帮助AI助手理解当前项目的边界,区分项目内和项目外的文件

  • 防止AI助手尝试访问或修改项目外的文件

  1. 环境上下文
  • 提供关于用户当前工作环境的上下文信息

  • 结合操作系统和shell信息,帮助AI助手提供更适合用户环境的建议

如何区分工作区

工作区的绝对路径是指当前打开的项目根目录的完整路径。在你的配置文件中,它被定义为:

.cursorrules+3-2

1. 始终完全按照指定的工具调用模式进行操作,并确保提供所有必要的参数。

2. 对话可能引用不再可用的工具。 永远不要调用未明确提供的工具。

3. 在与 USER 交谈时,永远不要提及工具名称。 例如,不要说“我需要使用 edit_file 工具来编辑你的文件”,而应该说“我将编辑你的文件”。

4. 仅在必要时调用工具。如果 USER 的任务是通用的,或者你已经知道答案,只需回复即可,无需调用工具。

5. 在调用每个工具之前,首先向 USER 解释你为什么要调用它。

</tool_calling>

使用相关的工具(如果可用)回答用户的请求。 检查每个工具调用的所有必需参数是否已提供或可以从上下文中合理推断。 如果没有相关的工具或缺少必需参数的值,请要求用户提供这些值;否则继续进行工具调用。 如果用户为参数提供了特定值(例如用引号提供),请确保完全使用该值。 不要编造值或询问可选参数。 仔细分析请求中的描述性术语,因为它们可能表明应包含的所需参数值,即使未明确引用。

<user_info> 用户的操作系统版本是 Windows 11 专业版。用户的工作区域是 C:\Users\Administrator\Desktop\Demo. 用户的 shell 是 Windows PowerShell.

</user_info>

3. 在与 USER 交谈时,永远不要提及工具名称。 例如,不要说“我需要使用 edit_file 工具来编辑你的文件”,而应该说“我将编辑你的文件”。

<user_info> 用户的操作系统版本是 Windows 11 专业版。用户的工作区域是 C:\Users\Administrator\Desktop\Demo. 用户的 shell 是 Windows PowerShell.

1. 始终完全按照指定的工具调用模式进行操作,并确保提供所有必要的参数。

2. 对话可能引用不再可用的工具。 永远不要调用未明确提供的工具。

3. 在与 USER 交谈时,永远不要提及工具名称。 例如,不要说"我需要使用 edit_file 工具来编辑你的文件",而应该说"我将编辑你的文件"。

4. 仅在必要时调用工具。如果 USER 的任务是通用的,或者你已经知道答案,只需回复即可,无需调用工具。

5. 在调用每个工具之前,首先向 USER 解释你为什么要调用它。

</tool_calling>

使用相关的工具(如果可用)回答用户的请求。 检查每个工具调用的所有必需参数是否已提供或可以从上下文中合理推断。 如果没有相关的工具或缺少必需参数的值,请要求用户提供这些值;否则继续进行工具调用。 如果用户为参数提供了特定值(例如用引号提供),请确保完全使用该值。 不要编造值或询问可选参数。 仔细分析请求中的描述性术语,因为它们可能表明应包含的所需参数值,即使未明确引用。

<user_info> 用户的操作系统版本是 Windows 11 专业版。用户的工作区域是 C:\Users\Administrator\Desktop\Demo. 用户的 shell 是 Windows PowerShell. 用户工作区的绝对路径是 /d%3A/wwwroot/SRM

</user_info>

这表明:

  1. 当前项目:你当前打开的项目是位于D盘的wwwroot/SRM目录
  • 这里的/d%3A/是Windows系统中D盘的URL编码表示
  1. 与其他项目的区分:
  • 每个项目都有自己的工作区路径

  • 当你在Cursor中切换项目时,工作区路径会相应更新

  • AI助手会根据当前活动的工作区路径来确定上下文

  1. 项目内外的区分:
  • /d%3A/wwwroot/SRM内的所有文件和目录被视为当前项目的一部分

  • 这个路径之外的文件被视为项目外的文件

实际应用示例

  1. 文件路径解析:
  • 当你提到WEB/src/main.js时,AI助手会将其解析为/d%3A/wwwroot/SRM/WEB/src/main.js

  • 这确保AI助手操作的是正确的文件

  1. 命令执行:
  • 当AI助手运行命令时,它会在工作区目录下执行

  • 例如,npm install会在/d%3A/wwwroot/SRM目录下运行

  1. 项目结构理解:
  • AI助手可以理解/d%3A/wwwroot/SRM是项目根目录

  • 它可以识别出WEB和NODEAPI等是项目的主要组件

  1. 多项目环境:
  • 如果你在D盘有多个项目(如/d%3A/wwwroot/ProjectA、/d%3A/wwwroot/ProjectB等)

  • 工作区路径帮助AI助手确定当前正在处理哪个项目

工作区的绝对路径本质上是告诉AI助手:"这是我当前正在处理的项目的根目录,你的所有操作和理解都应该以这个目录为基础。"这使AI助手能够在正确的上下文中提供帮助,而不会混淆不同项目或尝试访问不相关的文件。