官方最新指南:如何用 Cursor 玩转大型代码库!

最近 Cursor 官方发布了一个指南,如何在 Cursor 中处理大型代码库,这里我翻译成中文,分享给大家。

正文从下面开始~


处理大型代码库比处理小型项目会带来一系列新的挑战。基于我们在扩展 Cursor 自身代码库的经验以及管理大型代码库的客户见解,我们发现了一些处理复杂性的有用模式。

在本指南中,我们将介绍一些我们发现对大型代码库有用的技术。

使用 Chat 快速熟悉不熟悉的代码

导航大型代码库,特别是如果你对它不熟悉,可能会很有挑战性。你经常需要 grep、搜索和点击来找到你要找的代码库的特定部分。使用 Chat,你可以开始提问来找到你要找的内容,并获得关于它如何工作的详细解释。

在这里,我们正在获取帮助来查找 Cursor 中代码库索引的实现细节,甚至要求一些示例来使其更容易理解。

为了让 Cursor 更好地理解你的代码库结构,请确保从设置中启用包含项目结构以提高性能。

为领域特定知识编写规则

如果你正在让新协作者加入你的代码库,你会给他们什么上下文来确保他们能够开始做出有意义的贡献?

你对这个问题的答案可能对 Cursor 来说也是有价值的信息。对于每个组织或项目,都有一些可能没有完全记录在文档中的潜在知识。有效使用规则是确保 Cursor 获得完整信息的最佳方式。

例如,如果你正在编写如何实现新功能或服务的说明,考虑编写一个简短的规则来记录它。

模板

---
description: 添加新的 VSCode 前端服务
---

1. **接口定义:**
   - 使用 `createDecorator` 定义新的服务接口,并确保包含 `_serviceBrand` 以避免错误。

2. **服务实现:**
   - 在新的 TypeScript 文件中实现服务,继承 `Disposable`,并使用 `registerSingleton` 将其注册为单例。

3. **服务贡献:**
   - 创建贡献文件以导入和加载服务,并在主入口点中注册它。

4. **上下文集成:**
   - 更新上下文以包含新服务,允许在整个应用程序中访问。

如果你有想要确保 Cursor 遵循的常见格式化模式,考虑基于 glob 模式自动附加规则。

格式化

---
globs: *.ts
---
- 使用 bun 作为包管理器。查看 [package.json](mdc:backend/reddit-eval-tool/package.json) 了解脚本
- 文件名使用 kebab-case
- 函数和变量名使用 camelCase
- 硬编码常量使用 UPPERCASE_SNAKE_CASE
- 优先使用 `function foo()` 而不是 `const foo = () =>`
- 使用 `Array<T>` 而不是 `T[]`
- 使用命名导出而不是默认导出,例如 (`export const variable ...`, `export function `)

密切关注计划创建过程

对于较大的更改,花更多时间创建一个精确的、范围明确的计划可以显著提高 Cursor 的输出质量。

如果你发现经过几次相同提示的变体后仍然没有得到想要的结果,考虑退一步,从头开始创建一个更详细的计划,就像你为同事创建 PRD 一样。通常困难的部分是确定应该做什么改变,这是一个适合人类的任务。有了正确的指示,我们可以将实现的部分工作委托给 Cursor。

使用 AI 来增强计划创建过程的一种方法是使用 Ask 模式。要创建计划,在 Cursor 中打开 Ask 模式,并输入你从项目管理系统、内部文档或松散想法中获得的任何上下文。考虑你已经知道想要包含的代码库中的文件和依赖项。这可以是一个包含你想要集成的代码片段的文件,或者可能是整个文件夹。

这是一个示例提示:

计划提示

- 创建一个计划,说明我们应该如何创建新功能(就像 @existingfeature.ts 一样)
- 如果有任何不清楚的地方,请向我提问(最多 3 个问题)
- 确保搜索代码库

@过去的聊天(我之前的探索提示)

这是来自[项目管理工具]的更多上下文:
[粘贴的工单描述]

我们要求模型创建一个计划,并通过向人类提问来收集上下文,参考任何早期的探索提示以及工单描述。建议使用像 claude-3.7-sonnetgemini-2.5-pro 或 o3 这样的思考模型,因为它们可以理解更改的意图并更好地综合计划。

从这一点出发,你可以在开始实现之前,在 Cursor 的帮助下迭代地制定计划。

为工作选择合适的工具

有效使用 Cursor 的最重要技能之一是为工作选择合适的工具。考虑你想要完成的任务,选择能让你保持流畅的方法。

工具 使用场景 优势 限制
Tab
快速、手动更改
完全控制,快速
单文件
Cmd K
在单个文件中进行范围更改
专注的编辑
单文件
Chat
更大的、多文件更改
自动收集上下文,深度编辑
较慢,上下文密集

每个工具都有其最佳使用场景:

  • Tab 是你想要掌控的快速编辑的首选
  • Cmd K 在需要对代码的特定部分进行专注更改时表现出色
  • Chat 非常适合那些需要 Cursor 理解更广泛上下文的更大更改

当你使用 Chat 模式时(这可能感觉有点慢,但功能非常强大),通过提供良好的上下文来帮助它帮助你。使用 @files 指向你想要模仿的类似代码,或使用 @folder 让它更好地理解你的项目结构。不要害怕将更大的更改分解成更小的块 – 开始新的聊天有助于保持专注和高效。

要点

  • 缩小更改范围,不要一次尝试做太多
  • 尽可能包含相关上下文
  • 为每个工具选择最适合的用途
  • 经常创建新的聊天
  • 使用 Ask 模式进行计划,使用 Agent 模式进行实现

原文:https://docs.cursor.com/guides/advanced/large-codebases


(文:AI智见录)

发表评论

×

下载每时AI手机APP

 

和大家一起交流AI最新资讯!

立即前往