Cursor Chat:适合什么样的使用场景?

Cursor Chat:适合什么样的使用场景?

Chat(Cmd+L) 功能适合什么样的使用场景?你知道怎么在 Chat 中合理的使用上下文吗?
author
Wonderhows December 03, 2024

今天我们要聊一个特别有趣的话题 —— Cursor 的聊天功能。你知道吗?Cursor 有三个超级好用的功能:Tab(就像是你的代码小助手),提示栏(Cmd+K)(就像是一个随时准备帮你的编程老师),还有今天要说的 Chat(Cmd+L)(就像是一个无所不知的编程专家)。

想知道这个聊天功能有多厉害吗?让我们一起来看看!

记得我们之前说过,提示栏(Cmd+K)功能 主要是帮你处理一些明确的代码修改。而 Chat(Cmd+L) 呢,就像是一个万能的编程助手,什么问题都可以问它!

Cursor Chat

你知道为什么 Chat(Cmd+L) 这么特别吗?因为它可以和你聊天!就像和朋友聊天一样,当你遇到不太清楚的问题时,可以一来一回地交流,慢慢把问题说清楚。这就好比你在问路,如果对方第一次没听明白,你可以换个方式再解释一遍。

通过这样的对话方式,AI 就能更好地理解你的困惑,给出更有帮助的答案。就像一个耐心的老师,不断引导你找到最好的解决方法。

那么,什么时候用 Chat(Cmd+L) 最合适呢?我给你列几个常见的场景:

  1. 当你想学习新东西的时候(比如:“React 是什么?能给我解释一下吗?")
  2. 当你想知道怎么写更好的代码(比如:“这段代码可以写得更简单吗?")
  3. 当你的程序出错了,不知道怎么修复(比如:“为什么我的程序总是报错呢?")

基础功能

Chat 功能就像是一个超级版的 ChatGPT,但是专门用来帮你写代码。有什么编程问题,尽管问它!

Cursor Chat 基础功能

不过,Cursor 的 Chat 可不是普通的聊天工具,它有两个特别厉害的本领:

  1. 可以用 @ 符号快速找到你想要的信息(就像在微信里@好友一样简单)
  2. 可以直接把 AI 给出的代码应用到你的项目中(用 Apply 按钮就行)

这些功能可是 Cursor 独有的哦!就连 ChatGPT 和其他编辑器都没有这么方便的功能。

Apply

先来看看 Apply 功能,这个功能特别好用!就像复制粘贴一样简单,可以把 AI 推荐的代码直接用到你的项目里。

Cursor Chat Apply

用了 Apply 之后,你还可以看到代码改动的地方(就像看到修改前后的对比一样),如果觉得改得好,就点"接受”;如果觉得不合适,就点"拒绝”,就这么简单!

Cursor Chat Apply

虽然 Apply 能力让聊天功能(Cmd+L)具有了代码修改的能力,但是如果有明确的代码修改需求,其实更推荐使用专门为代码修改设计的功能:

  1. 提示栏(Cmd+K): 擅长局部代码的修改能力
  2. Composer: 擅长全局跨文件的修改能力

基于 @ 的上下文引用

在Cursor的AI输入框中,比如在提示栏(Cmd K)、Chat 或 Composer 中,您都可以通过输入@符号来引用上下文。

Cursor Chat 上下文引用

值得说明的是在 Chat 和 Composer 中,@ 的上下文引用能力基本是一致的。

而在提示栏(Cmd+K)中,因为其功能主要是做局部代码的修改,其 @ 的上下文引用能力受到了一定的限制。

在AI辅助编程中,上下文的使用至关重要,这可以从AI解决问题的角度来理解:

AI自身的局限性

  • 虽然AI知道很多东西,但它也不是无所不知的。有时候,它可能对某些特定的技术领域不太了解。

问题的特殊性

  • 每个项目都有其独特的结构、逻辑和需求。没有上下文,AI 很难理解如何针对你当前项目的场景去解决这个问题。

合理使用上下文

怎么才能合理的使用上下文信息呢?

合理使用上下文信息就像给AI一个"小抄”。这个"小抄"要做到两点:

  1. 挑重点:只选择真正相关的信息,不要把无关的东西也塞进去。
  2. 适可而止:给的信息要够用,但也不要太多。太少了AI可能理解不了你的问题,太多了反而会让AI不知所措,产生幻觉的可能性会变大。

简单来说,就是要给AI恰到好处的信息,既不少也不多,这样AI才能最好地帮助你解决问题。

根据上下文从当前项目获取还是外部获取,可以将上下文信息的获取分成两类:

  1. 内部信息
  2. 外部信息

内部信息

内部信息的引用使得 Cursor 能够更好地理解和处理项目内部的复杂性,从而获取最精准的回答。

Cursor 提供了多种内部信息引用方式,相对来看,其信息的承载范围从小到大依次是:

Code < Files ≈ Git < Folders < Codebase

这种逐步扩大的上下文范围设计,使得开发者可以根据问题的复杂度和影响范围,灵活选择最合适的上下文信息,从而获得更精准、更有价值的AI辅助。

Code/Files/Folders

直接根据字面的意思就能看出这三个分别代表了什么样的引用信息,根据需要选择合适的上下文范围:

  1. Code(代码片段):允许你引用当前文件中的特定代码片段
  2. Files(文件):让你引用整个文件的内容(包括图像文件)
  3. Folders(文件夹):使你能够引用整个文件夹中的所有文件

值得注意的是,当你使用 Files(文件)或 Folders(文件夹)级别的引用时,如果一个文件内容太多,Chat 不会一下子全部读取,而是会把文件分成小块。

然后,它会根据你的问题,挑选出最相关的部分。这样做可以让 Cursor 更快地回答你的问题,并且给出更准确的回答。

Cursor Chat 长上下文

如果你就是想把整个文件或文件夹的内容都给到 AI,可以开启长上下文功能。

另外,你会发现在提示栏(Cmd+K)中,是不提供大范围的上下文引用能力的,比如 Folders 和 Codebase,Cursor 还是希望提示栏(Cmd+K)专注于局部代码的处理。

Git

Git 中携带的信息就像是代码的时间线,让你能清楚地看到代码是如何演变到现在这个样子的。

Cursor 提供了以下几种 Git 相关的上下文信息。

Cursor Chat Git

有了这些上下文信息,可以非常方便的对代码进行审查、优化、bug 修复:

  • PR(Diff of Main Branch):当前分支与主分支的 diff

  • 待提交的修改(Commit:Diff with Working State):在你的 git 工作区中还没 add 的代码信息。

    • 可以使用这个快速生成 git commit message
  • 已提交的Commit:代码库中管理的所有 Commits

除了在聊天框中直接使用 @Git 引用信息外,还可以在 AI 面板(Panel)上使用 Review 功能

目前 Review 功能还在 Beta 阶段,需要在 Cursor 设置中打开。

Cursor Chat Git Preview

Review 可以更方便的对 Git 中的 Commit 代码进行审查和优化。

Cursor Chat Git Preview

在输入框中你可以输入自定义的代码 review 指令。

下面直接选择你要 review 的代码上下文,和 @Git 提供的类似。

Codebase

@Codebase 是 Cursor 提供的一个强大功能,它允许 AI 扫描整个代码库来提供更全面的上下文和建议。

这个功能特别适合处理大型项目或需要跨文件分析的情况。

想象一下,就像是你在一个大图书馆里找书,@Codebase 就是你的图书管理员,它知道每本书在哪里,内容是什么。

你知道吗?@Codebase 其实用了一个很厉害的技术,叫做 RAG。它就像是给你的代码做了一个详细的目录,把所有文件都整理好,放在你的电脑里,随时可以查找。

在 Cursor 的设置里,你可以看到你的"代码图书馆"整理得怎么样了:

Cursor Chat Codebase

在 Chat 里使用 @Codebase 的时候,你有两种方式可以选择:

Cursor Chat Codebase

第一种叫 embedding 模式,就像是快速查字典一样,直接找到最相关的内容给你看。

第二种叫 reranker 模式,这个更厉害一些,它不仅会找到相关的内容,还会仔细想一想,把最有用的信息排在前面给你看。就像是一个认真的助教,不仅帮你找资料,还帮你整理好了。

Cursor Chat Codebase

我自己试过很多次,发现当你想要全面了解一个项目的时候,用 reranker 模式效果会更好哦!

外部信息

除了项目里的信息,有时候我们还需要查看外面的资料,这就像是让 AI 不只看教科书,还要看看外面的世界。这样 AI 就能知道更多东西,给你更好的帮助。

Cursor 给我们提供了两个好帮手:@Doc@Web,就像是两个图书馆管理员,一个负责技术文档,一个负责互联网资料。

Doc

@Doc 就像是你的专业文档管理员。比如说,你在用 React 写代码,但是忘记了某个功能怎么用,这时候就可以用 @Doc 来查看 React 的说明书。

Cursor 已经帮我们准备好了一些常用的文档,比如 React 的说明书:

Cursor Chat Doc

如果你需要其他的文档,也可以自己添加。就像是在图书馆里添加新的书籍一样简单:

Cursor Chat Doc

你只需要告诉 Cursor 文档在哪里(给一个网址),它就会自动帮你把所有相关的资料都收集好。

Web

@Web 就像是你的互联网助手,可以帮你在网上搜索资料。

最简单的用法就是在聊天的时候输入 @Web,它就会自动去网上找相关的信息,就像是你有一个随时准备帮你查资料的好朋友。

Cursor Chat Web

你也可以直接告诉它要看哪个网页,只需要输入网址就行了:

Cursor Chat Web

上下文模版 - Notepad

Notepad 是一个特别贴心的功能,就像是你的私人笔记本。你可以把常用的信息都记在里面,需要的时候随时翻出来看。

Cursor Chat Notepad

用 Notepad,你可以:

  • 把重要的东西记下来:比如项目是做什么的、代码要怎么写、常用的代码片段等等
  • 随时查看笔记:不管是在聊天的时候,还是用 Composer 的时候,都可以很方便地看到你记的笔记

Cursor Chat Notepad

Notepad 最棒的地方在于,它可以帮你把所有重要的信息都整理好。这样不仅可以让你和 AI 聊天更有效率,还能确保 AI 总是知道你项目的背景,给出最合适的建议。

在 Notepad 里,你现在可以写文字,也可以引用文件。不过,要是能支持更多种类的引用就更好了,比如能把我们前面说的各种引用方式都用上。

总结

Chat(Cmd+L) 就像是一个超级厉害的编程助手,不管你遇到什么问题,它都能帮你:

  • 简单的代码问题?没问题!
  • 复杂的项目讨论?也不怕!

记住一点:要想让这个助手帮你更好,就要学会给它提供足够的信息(也就是上下文),这样它才能完全发挥它的本领!

comments powered by Disqus