上下文

代码库索引

为你的代码库建立索引

要使用 @codebaseCtrl/⌘ Enter 获得更好、更准确的代码库答案,你可以为代码库建立索引。在后台,Cursor 会为代码库中的每个文件计算嵌入向量,并使用这些向量来提高代码库答案的准确性。

你的代码库索引会自动与最新的代码库更改同步。

你可以在 Cursor Settings > Features > Codebase Indexing 下查看代码库索引的状态。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/chat/codebase-indexing.png

高级设置

默认情况下,Cursor 会索引代码库中的所有文件。

你还可以展开 Show Settings 部分来访问更多高级选项。在这里,你可以决定是否要为新仓库启用自动索引,并且除了 .gitignore 设置外,还可以配置 Cursor 在仓库索引期间要忽略的文件。

如果你的项目中有一些 AI 绝对不需要读取的大型内容文件,忽略这些文件 可以提高答案的准确性。

AI 规则

你可以通过修改 Cursor Settings > General > Rules for AI 下的 Rules for AI 部分来为 Cursor 添加自定义指令。

这些自定义指令将用于 Cursor Chat 和 Ctrl/⌘ K 等功能。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/rules-for-ai.png

.cursorrules

对于项目特定的指令,你可以在项目根目录中的 .cursorrules 文件中包含这些指令。

与"Rules for AI"部分一样,.cursorrules 文件中的指令将用于 Cursor Chat 和 Ctrl/⌘ K 等功能。

@ 符号

基本用法

在 Cursor 的 AI 输入框中,如 Cmd K、Chat 或 Terminal Cmd K 中,你可以通过输入 @ 来使用 @ 符号。会出现一个带有建议列表的弹出菜单,它会根据你的输入自动过滤,只显示最相关的建议。

键盘快捷键

你可以使用上/下箭头键在建议列表中导航。你可以按 Enter 选择建议。如果建议是一个类别,比如 Files,建议将被过滤为仅显示该类别中最相关的项目。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@-symbols-basics.png

Cmd K 键盘快捷键

你可以使用上/下箭头键在选定的 Cmd K @ 符号列表中导航,使用 Enter 展开/折叠选定的上下文项。对于文件引用,你可以使用 Ctrl/⌘ M 切换文件读取策略。在 这里 阅读更多关于文件读取策略的信息。

@Files

@Files

在 Cursor Chat 和 Cmd K 等 AI 输入框中,你可以使用 @Files 引用整个文件。此外,如果你在 @ 后继续输入,你会在 @Code 策略后看到你的文件搜索结果。

为了确保你引用的文件是正确的文件,Cursor 会显示文件路径的预览。当你在不同文件夹中有多个同名文件时,这特别有用。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@file.png

聊天中的长文件引用

在 Cursor 的聊天中,如果文件内容太长,Cursor 会将文件分成更小的块,并根据与查询的相关性重新排序。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@file-long-file.png

Cmd K 分块策略

对于 Cmd K,Cursor 也会根据内容长度以不同方式使用文件引用。

  • auto
    • 根据文件大小自动选择三种读取策略之一
  • full file
    • 整个文件用作上下文。
  • outline
    • Cursor 解析文件的大纲并将信息用作上下文。
  • chunks
    • Cursor 将文件分成更小的块并选择最相关的一个。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@file-cmdk.png

拖放

你也可以从主侧边栏将文件拖放到 Chat 或 Cmd K 中,将它们添加为上下文。

@Folders

目前,@Folders 仅在 Cursor Chat 中支持。

@Folders

你也可以在 Cursor 中引用整个文件夹作为上下文。@Folders 对于 长上下文聊天 特别有用,在这种情况下,你想为 AI 提供大量上下文。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@folder.png

@Code

@Code

要引用特定的代码部分,你可以使用 @Code 符号。

代码预览

@Files 符号类似,Cursor 会显示代码内容的预览,这样你可以验证你引用的代码是否正确。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@code.png

从编辑器中

添加代码片段作为上下文的另一种方式是选择你想要引用的代码,然后点击"Add to Chat"(Ctrl/⌘ Shift L)或"Add to Edit"(Ctrl/⌘ Shift K)。

这些操作会将选定的代码片段添加到聊天输入框或当前活动的 Cmd K 提示栏中。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@code-select.png

要将选定的代码添加到新聊天中,你可以按 Ctrl/⌘ L

@Docs

@Docs

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@docs.png

Cursor 带有一组已爬取、索引并准备好作为上下文使用的第三方文档。你可以使用 @Docs 符号访问它们。

添加自定义文档

如果你想爬取和索引尚未提供的自定义文档,你可以通过 @Docs > Add new doc 来实现。在你粘贴完想要的文档 URL 后,会出现以下模态框:

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@docs-add.png

然后 Cursor 会索引并学习该文档,你就可以像使用其他文档一样将其用作上下文。如果你想索引所有子页面和子目录,请确保在 URL 末尾添加斜杠。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@docs-learning.png

管理自定义文档

Cursor Settings > Features > Docs 下,你会看到你添加的文档。你可以在这里编辑、删除或添加新文档。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@docs-manage.png

@Git

目前,@Git 仅在 Cursor Chat 中支持。

@Git

在 Cursor 的聊天中,你可以使用 @Git 将 git 提交、差异或拉取请求添加到你的提示中。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@git.png

常见用例

@Git 的一个常见用例是让 Cursor 的 AI 扫描差异并查找可能由差异引起的错误或问题。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@git-usecase1.png

你也可以使用 @Diff of Working State 从当前差异生成提交消息。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@git-commit-message.png

@Codebase

@Codebase

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/chat/@codebase.png

通过 @Codebase,Cursor Chat 会经过这些步骤,直到找到最重要的代码片段来使用。

  • 收集:扫描你的代码库以查找重要的文件/代码块
  • 重新排序:根据与查询的相关性重新排序上下文项
  • 推理:思考使用上下文的计划
  • 生成:提出响应

提交高级代码库查询的另一种方式是点击 Ctrl/⌘ + Enter 按钮旁边的下拉菜单,并为搜索行为选择 reranker。这仅在未使用 @Codebase 时可用,否则 @Codebase 优先。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/chat/codebase-dropdown.png

@Web

@Web

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@web.png

使用 @Web,Cursor 会根据你提供的查询和上下文构建搜索查询,并搜索网络以找到相关信息作为额外的上下文。

这对于让 Cursor 找到网上最新的信息,或让 Cursor 在几秒钟内抓取多个网站以找到最佳答案很有用,用户无需手动搜索任何地方。

@Chat

此功能目前仅适用于 Cmd K。

@Chat

你可以在 Cmd K 中使用 @Chat 将当前聊天消息添加为上下文。当你有一个想要应用于编辑或生成代码的 AI 对话时,这很有用。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@chat.png

@Definitions

此功能目前仅适用于 Cmd K。

@Definitions

@Definitions 符号将所有附近的定义添加到 Cmd K 作为上下文。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@definitions.png

粘贴链接

@https://your-link.com

要让 Cursor 在回应前访问链接,请输入 @ 然后粘贴链接。

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@link.png

移除链接

默认情况下,我们会自动解析链接并在 Cursor Chat 中将它们转换为 @Links。如果你更喜欢将链接作为纯文本,请点击链接,然后点击 Unlink

https://mintlify.s3.us-west-1.amazonaws.com/cursor/images/context/@link-unlink.png

忽略文件

.cursorignore 文件让你可以从 Cursor 的代码库索引中排除文件和目录

关于 .cursorignore

要从 代码库索引 中忽略文件,你可以在项目根目录中使用 .cursorignore 文件。它的工作方式与 git 的 .gitignore 相同。

.cursorignore 遵循 .gitignore。如果你已经有 .gitignore,文件默认会被忽略。如果你想忽略额外的文件,可以将它们添加到 .cursorignore 文件中。

你可以在我们的 安全页面 上阅读更多关于这如何工作的信息。

聊天和 Composer 上下文

目前,Cursor Chat 和 Composer 可以访问其上下文中的所有文件,不受 .cursorignore 设置的影响。

有关我们如何处理 AI 请求的更多信息,可以在我们的 安全页面 上找到。

.cursorignore 文件示例

忽略特定文件

#忽略 `dist` 目录中的所有文件
dist/

#忽略所有 `.log` 文件
*.log

#忽略特定文件 `config.json`
config.json