cursor实战经验分享
本文分享了使用Cursor AI编程助手的实战经验。我通过深度使用各类AI编程工具后,发现Cursor凭借其深度集成和独特功能成为日常开发首选。文章重点介绍了Cursor的两大核心功能:ProjectRules和UserRules,前者用于项目特定规范,后者适用于个人编码风格。同时探讨了Memories功能如何动态记录对话上下文。此外,我还分享了任务分解、智能终端使用等实用技巧,并对AI编程是否会
引言
自从 Claude 3.5 Sonnet 发布以来,AI 编程已然迈入了一个崭新的、真正实用的阶段。在这股浪潮中,我体验了市面上几乎所有主流的 AI 编程助理——从早期的 GitHub Copilot、阿里通义灵码,到备受瞩目的 Cursor,再到最近惊艳的 Claude Code。
尽管选择众多,但 Cursor 凭借其独特的产品形态和深度集成,成为了我日常开发中最高频使用的工具。为了最大化其生产力,我甚至毫不犹豫地订阅了为期一年的 Pro 版本。
在过去几个月的深度实践中,我踩过不少坑,也积累了一些心得。我发现,许多朋友和我在刚开始使用 Cursor 时,都或多或少遇到过类似的困惑:
-
沟通的艺术: 如何向 AI 清晰、高效地描述我的编程需求,才能让它一次性给出最接近预期的代码?
-
失控的修改: 当 AI 的修改引入了新的 bug 或导致程序报错时,我该如何快速定位问题根源,并引导它进行修复?
-
精准的控制: 怎样才能让 AI 严格遵循我的指令和编码规范,而不是天马行空地自由发挥?
-
规则的妙用: Project Rules 和 User Rules 究竟有何区别?在实际项目中,我应该如何配置它们,才能打造出符合团队规范和个人习惯的编程环境?
如果你也对这些问题感到困惑,那么这篇文章正是为你准备的。接下来,我将毫无保留地分享我在这几个月里沉淀下来的 Cursor 实战经验,希望能帮助你更高效地驾驭这个强大的 AI 编程工具。
常用技巧
相关概念
在介绍常用技巧之前,先介绍一下关于cursor里面的一些概念。
关于rule
cursor中的rule分为project rule和user rule。官方的介绍为:Cursor – Rules
为什么会存在rule呢?大型语言模型不会在完成之间保留记忆。规则在提示级别提供持久、可重用的上下文。这是由于其本身存在一个根本性的限制:它们是无状态的 。这意味着模型在两次独立的交互之间不会保留任何记忆。每一次提问或代码生成请求对于模型来说都是一个全新的开始,它无法记住所遵循的编码规范、项目的技术栈,或是之前对话中确立的架构决策。如果没有一种机制来持续提供这些关键信息,开发者将不得不为每次交互重复提供相同的背景,这极大地限制了 AI 辅助开发的效率和一致性。
cursor中一共存在4种规则:
其分别为:
-
项目规则 (Project Rules): 这些规则受版本控制,其作用范围限定在特定的代码库中。
-
用户规则 (User Rules): 这些规则是全局性的,适用于整个 Cursor 环境。
-
AGENTS.md: 这是一个简单的 Markdown 文件,可作为 Agent 指令的替代方案。
-
旧版的 .cursorrules 文件: 这是较早版本中使用的规则文件。(已弃用)
下面主要来介绍project rules和user rules,这也是用得最多的两种。不同的版本的cursor可能功能不一样,我这里使用的是目前最新的cursor版本为1.5.5。
目前cursor官方关于rule的最佳规则为:
Project Rules
想象一下,您正在开发一个复杂的项目,其中有几个核心文件,比如配置文件 (config.js
)、全局状态管理 (store.ts
)、API 定义 (api.ts
) 或者一些关键的工具函数 (utils.js
)。每次您向 AI 提问时,如果问题与这些核心文件相关,您可能都需要手动将这些文件内容粘贴到聊天中,或者使用 @
符号手动引用它们。这个过程非常繁琐。
Project Rules 通过自动化这个过程,极大地提升了效率。您只需设置一次,将这些关键文件定义为项目的“规则”,之后 Cursor 的 AI 就会在每一次对话中自动将它们作为背景知识引入,从而提供更准确、更贴合您项目实际情况的回答和代码。
我个人比较常用的是会把一些开发规范放在Project Rules里面,使其生成的代码符合特定的规范而不至于每次还得进行修改。
其中Project Rules支持四种生效规则:
生效规则 | 描述 | 核心机制 |
Always Apply | 应用于每一次聊天和 Cmd-K 会话。 |
规则始终处于激活状态,对项目所有交互生效。 |
Apply Intelligently | 当 AI 代理根据规则的描述判断其具有相关性时应用。 |
AI 根据上下文智能判断是否需要引入该规则。 |
Apply to Specific Files | 当文件路径与指定的模式匹配时应用。 |
基于文件路径或类型(如 *.tsx, /api/**)自动触发。 |
Apply Manually | 当使用 @ 符号提及规则时应用。 |
用户通过在聊天中手动输入 @规则名称 来显式调用。 |
eg:在一个前端项目中,我们希望 AI 总是了解我们的 Tailwind CSS 配置和全局 CSS 文件。
{
"rules": [
{
"rule": "Always be aware of my global styles and tailwind config.",
"paths": [
"src/styles/globals.css",
"tailwind.config.js"
]
}
]
}
设置好后,当您让 AI "创建一个使用主题色的蓝色按钮" 时,它会自动查阅这两个文件,了解您的主题色定义,从而生成符合项目规范的代码。
对于Project Rules,我一般会设置三种规则,首先是代码规范规则,比如说命名规则、异常处理、日志记录等;然后是根据项目的特定规范, 主要是根据项目的具体特点设定的;最后是环境配置规范规则。
以下为我每日论文阅读项目举例:
代码规范 |
项目特定规范 |
环境配置规范 |
![]() |
![]() |
![]() |
User Rules
与Project Rules不同的是User Rules不会随着项目的变化而改变,其是跟着用户走的。User Rules 是您的全局性、个人化的AI指令。它们适用于您在 Cursor 中打开的所有项目。这套规则的核心目的是定义您与 AI 交互的通用偏好,无论您在处理哪个代码库。
其特点为:
- 全局性: 一次设置,所有项目生效。
- 个人化: 定义您的个人编码风格和沟通偏好。
- 高优先级: 这些规则总是会作为上下文提供给 AI。
- 简化配置: 通过设置中的一个文本框进行配置,非常简单。
User Rules 和 Project Rules的区别
特性 | User Rules | Project Rules |
---|---|---|
作用范围 | 全局(所有项目) | 单个项目 |
目的 | 个人偏好,通用编码/沟通风格 | 项目特定知识、架构、规范和工作流 |
存储位置 | Cursor 配置文件中(设置界面) | 项目目录下的 .cursor/rules/ |
是否可共享 | 否(个人设置) | 是(通过版本控制共享) |
配置复杂度 | 简单(单个文本框) | 更复杂(多个文件,支持 glob 模式) |
激活方式 | 始终激活 | 根据文件路径(glob)、提问意图智能激活 |
在实际的实践中,可以发现,User Rules 和 Project Rules 是相辅相成的强大工具,而非相互替代。通过结合使用它们,可以最大化 Cursor AI 的效能。
- 明确分工: 将定义你个人风格的、不涉及项目具体实现的规则放在 User Rules 中。例如,“请使用中文回复”、“代码要简洁”等。
- 拥抱项目规则: 对于任何涉及项目技术栈、代码结构、设计模式或团队约定的内容,都应该沉淀为 Project Rules。这不仅能帮助你自己,还能帮助团队所有使用 Cursor 的成员。
- 保持 Project Rules 的原子性: 将不同关注点的规则拆分到不同的文件中。例如,一个文件负责组件规范,另一个文件负责 API 调用规范。这使得规则更易于管理和理解。
- 善用
globs
: 精确地使用globs
模式可以让规则在最需要的时候被激活,避免不相关的规则干扰 AI 的判断,同时节省上下文 Token。 - 持续迭代: Rules 不是一成不变的。随着项目的发展和团队规范的演进,定期回顾和更新你的 User Rules 和 Project Rules,使其保持最新和有效。
运用好规则,可以使得使用cursor更为顺手。通过设置规则,你可以为 AI 提供持久化的指令,使其行为更符合你的个人偏好和项目规范。这就像为你的 AI 助手编写了一份工作手册。关于规则的使用,推荐几个我常适应的几个开源项目,如下,在里面收录了常见的一些cursor的规则。
关于memories
Memories 是一种动态的、基于对话的上下文机制。与预先定义好的、静态的 Rules 不同,Memories 是 Cursor 通过与您的聊天交互,自动学习和总结出来的知识点。它的目的是捕捉那些在对话中出现的、对项目很重要的临时性或永久性信息,并将其保存下来以备将来使用。可以把 Memories 想象成 AI 的“学习笔记”。当您告诉它一些关于项目的重要信息后,它可以选择“记下”这个信息,并在未来的对话中自动引用,而无需您重复说明。
核心特点
- 动态生成: 主要由 AI 根据对话内容自动生成,也可以手动创建。
- 项目作用域: Memories 与特定项目相关联。
- 智能检索: AI 会在后续对话中根据语义相关性,自动从“记忆库”中检索并应用相关信息。
- 无需手动触发: 您不需要像
@
引用文件那样手动调用记忆,AI 会在需要时自动使用。 - 可管理: 您可以随时查看、编辑或删除项目中所有已保存的记忆。
任务进行分解与规划
AI 如同一个聪明的初级开发者,面对宏大而模糊的任务时容易出错。将复杂功能(如“构建一个用户认证系统”)拆解为具体、可管理的小步骤(如“先创建注册表单”、“再实现后端验证逻辑”),可以显著提高 AI 的执行准确性和代码质量。
就目前实践的效果来看,任务的粒度越小,ai完成的效果越好。对于大型功能,采用分步构建的方式。先让 AI 完成核心部分,确认无误后,再进行下一步开发,这样便于控制和纠错。
其它常使用的一些功能
智能终端与快捷键
将自然语言转化为命令行是 Cursor 的另一大亮点,结合高效的快捷键,能极大提升操作速度。
- 终端AI (`Cmd/Ctrl + K`):在终端中按下 `Cmd/Ctrl + K`,然后用自然语言描述你想要执行的命令,例如“列出最近的五个 git 分支”,无需再记忆复杂的命令。
建立个人知识库
将 AI 生成的优秀代码片段、解决方案或自定义的规则保存为 Markdown 文件,构建可复用的组件库和个人知识库。
个人思考
从刚开始的使用,虽然很方便,但感受到了恐惧,觉得使用AI code对于自己的编程能力的提升是不是没有任何帮助,会不会像是温水煮青蛙 ,当你在业务上一直使用AI code的时候,就是一直使用一直爽,但编程能力并没有得到提升,最后陷入一种恶行循环之中。像我之前并未熟练使用Java,但使用cursor却能独立的开发一个用于检测用户数据以及用户账号的中台,包含前端和后端,并且成功上线了。后来,我感觉好像也没必要过于担心,就像没有高级语言之前,编程是一件门槛很高的事情,大家那时候都是在用汇编语言,但高级语言比如C以及后面的Java、python等不就是一直在降低编程门槛这件事情嘛,现在估计使用汇编语言会很少了吧。那后面发展很有可能会形成一套自然语言规范的编程语言,当有这么一套效率极高的编程语言后,或许后面使用高级语言的也会很少吧。当然理解机器语言或者汇编语言对于高级语言的使用理解会很帮助,就像是理解高级语言对于使用AI code有帮助一样,更何况是现在的AI code还远没有发展成完美的程度。个人觉得最为重要的是一定要拥抱新的变化,绝不能排斥使用AI赋能,要善于利用AI,多多学习使用AI coding。
更多推荐
所有评论(0)