通用技巧
- 描述明确,需求具体: 提示词越清晰具体,AI 理解起来就越容易,给出的答案也越准确。避免提出含糊或宽泛的问题,而应直截了当地说明想要实现的功能或解决的问题。例如,不要问“怎么用 Python 做这个? ”,可以改为“请帮我编写一个 Python 函数,实现输入一个列表并返回其中所有偶数的和“。 又或者在前端场景下,与其说“添加登录”,不如详细说明“使用 Express 实现一个用户登录功能,需支持 JWT 认证”
- 将复杂任务拆解成小步骤: 面对复杂需求,不要一次性抛给 AI。将问题分解为可以逐步完成的子任务,然后逐一与 Cursor 交互完成。例如,需要实现一个完整的模块,可以先让 AI 生成项目骨架,然后逐步请求编写各个组件或函数。每完成一步都检查并验证,再进行下一步。这样的迭代方式类似敏捷开发,能够让 AI 在每一步都更聚焦当前子任务,减少出错概率。
- 及时反馈,迭代改进: 把 AI 当作对话中的搭档,及时反馈它的输出很重要。如果 Cursor 给出的代码不完全正确或不符合预期,不妨直接指出问题并让它修改。例如:“上一步的函数有逻辑错误,×× 部分需要按…改”。Cursor 能根据你的反馈迅速调整答案,给出改进版本。通过这种 反复对话—修正 的过程,最终能得到令人满意的结果。切忌对 AI 的首次回复将就接受,多与其“商量”几轮,你会发现 Cursor 的答案会越来越贴近你的想法。
- 善用上下文与参考资料: Cursor 的强大之处在于上下文理解。但你也需要主动提供有用的背景信息给 AI。例如,在提示中通过引用代码片段、文件名、函数签名等,让 AI 更精准地明白你在问哪部分内容。Cursor 提供了 “@” 引用语法来帮助这一点:在对话中输入
@
可选择项目中的文件或先前对话片段作为引用,注入 AI 上下文。这样当你让 AI 修改代码时,它就知道改哪个文件的哪段内容,从而减少理解偏差。另外,如果某段代码已经通过测试,你可以在请求新功能时提醒 AI “保持已实现部分不变” ,或者直接让它复用你提供的代码片段。这种上下文管理能力可以保持对话的连贯性,避免 AI 重复先前工作。
读文档
点击 Cursor Setting -> Features -> Docs -> Add new doc, 然后把文档的链接输入进去就行。
在对话框 @ Docs 然后选中索引的文档直接提问。比如我这里直接让 Cursor 读 spring ai 的文档,问它:我想要自定义大模型的 api 和 api url 怎么做?然后它就会去检索文档,然后给出答案。你也可以看到它查询到的文档。
光这个功能我觉得就值 20 刀,以前没有 AI 的时候,找各种文档的配置啥的真是苦力活。
读代码
Cursor 由于对代码库做了索引,所以可以把它当做一个知识库来提问。这样对新代码的学习速度会快很多,相当于你在跟仓库作者聊天。甚至你可以让它给你画一个:mermaid 的流程图来解释代码的流程。
先聊后写
Cursor 的 Agent 模式默认会直接帮你开始写代码,但有时候它会过度设计,所以我一般会用利用 Cursor rule 的功能,加一个全局的规则:“先别着急写代码,我们先聊聊,等我确认让你写的时候再开始写”,这样它就不会直接开始写,而是会想把思路提供出来,跟你讨论一下。
Cursor ignore 文件
.cursorignore
跟 .gitignore
文件类似,在这里面的文件和文件夹不会被 Cursor 建索引,一个是防止索引不必要的文件,比如一些日志或者用不到的三方源码,另一个也是安全考虑,有些敏感内容和代码可以放进去,这样也不会被上传到云端建索引。
你可以让它帮你建一个,也可以手动建。
Debug 技巧
Cursor 经常会遇到 bug 解决不了,陷入了死循环。这个时候有个小技巧,我会打开一个新的对话,然后使用下面的 prompt:
请仔细审查代码更改,描述代码的意图,一步一步向我解释这些代码是如何工作的。
然后在它解释完之后,用第二个 prompt:
我希望做一个功能: * 功能描述 1 * 功能描述 2 但是目前代码有下面的问题: * 问题 1 * 问题 2
由于第一个 prompt 会产生很多有用的 contexts,这让第二个 prompt 的 debug 效果变得非常好。
Cursor rule
Cursor 允许用户编写规则文件来自定义 AI 风格,例如规定代码风格、项目背景、命名规范等。这些规则相当于为 AI 设定“系统提示”,可作用于所有对话或特定项目。通过积累和配置这些模板和规则,你相当于训练出了一个更懂你需求的 AI 助手,在协同开发中事半功倍。
不知道 Cursor rule 怎么写,可以去参考:https://github.com/PatrickJS/awesome-cursorrules,下面是 Java 的一个例子。
配置方法如下:
解决上下文遗忘
在长对话或多轮编辑后,可能出现 Cursor 似乎“忘记”之前上下文的情况,这是因为对话长度超过模型窗口,早期内容被裁剪了。这个时候有两种方式:
一种是修改之前的问题,这样对话会从新的问题这里开始。
另一个方法就是新开一个对话,然后 @ Past chats,选中之前的对话作为上下文。
当然最好还是一个小功能就开一个对话,尽量不要在一个对话里面聊很多东西,容易出现上下文遗忘的情况,模型现在对长上下文效果并不是很好。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于