处理大型代码库会带来与小型项目不同的新挑战。基于我们扩展 Cursor 自身代码库的经验以及管理大型代码库客户的见解,我们发现了一些处理复杂性增加的有用模式。 在本指南中,我们将介绍一些我们发现对大型代码库有用的技术。

使用 Chat 快速了解陌生代码

浏览大型代码库,特别是对你来说全新的代码库,可能会很有挑战性。你经常需要通过 grep、搜索和点击来寻找代码库中你要找的特定部分。通过 Chat,你可以开始提问来找到你要寻找的内容,并获得其工作原理的详细解释。 在这里,我们正在获取帮助来查找 Cursor 中代码库索引的实现细节,甚至要求一些示例来使其更容易理解。
为了让 Cursor 更好地理解你的代码库结构,请确保从设置中启用包含项目结构以提高性能。

为特定领域知识编写规则

如果你要让一个新的协作者加入你的代码库,你会给他们什么上下文信息来确保他们能够开始做出有意义的贡献? 你对这个问题的答案很可能对 Cursor 理解也很有价值。对于每个组织或项目,都有一些潜在的知识可能没有在你的文档中完全记录下来。有效使用规则是确保 Cursor 获得完整信息的最佳方式。 例如,如果你正在编写如何实现新功能或服务的说明,考虑写一个简短的规则来记录它以供后续参考。
Boilerplate
---
description: 添加一个新的 VSCode 前端服务
---

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

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

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

4. **上下文集成:**
   - 更新上下文以包含新服务,允许在整个应用程序中访问。
如果有你希望确保 Cursor 遵循的常见格式化模式,考虑基于 glob 模式自动附加规则。
Formatting
---
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 模式,然后输入你从项目管理系统、内部文档或零散想法中获得的任何上下文。思考一下你在代码库中已经知道想要包含的文件和依赖项。这可以是一个包含你想要集成的代码片段的文件,或者可能是整个文件夹。 以下是一个示例提示:
Planning prompt
- 为我们应该如何创建一个新功能制定计划(就像 @existingfeature.ts 一样)
- 如果有任何不清楚的地方,请向我提问(最多 3 个问题)
- 确保搜索代码库

@Past Chats(我之前的探索提示)

这里是来自 [项目管理工具] 的更多上下文:
[粘贴的工单描述]
我们要求模型创建一个计划,并通过向人类提问来收集上下文,引用任何早期的探索提示以及工单描述。建议使用像 claude-3.7-sonnetgemini-2.5-proo3 这样的思考模型,因为它们能够理解变更的意图并更好地综合计划。 基于此,你可以在开始实现之前,在 Cursor 的帮助下迭代地制定计划。

为工作选择合适的工具

有效使用 Cursor 的最重要技能之一是为工作选择合适的工具。思考你想要完成什么,然后选择能让你保持流畅状态的方法。
工具使用场景优势限制
Tab快速的手动更改完全控制,快速单文件
Inline Edit单个文件中的范围性更改专注编辑单文件
Chat更大的多文件更改自动收集上下文,深度编辑较慢,上下文密集
每个工具都有其最佳使用场景:
  • Tab 是你进行快速编辑的首选工具,当你想要掌控全局时
  • Inline Edit 在你需要对特定代码段进行专注更改时表现出色
  • Chat 非常适合那些需要 Cursor 理解更广泛上下文的大型更改
当你使用 Chat 模式时(可能感觉有点慢但功能极其强大),通过提供良好的上下文来帮助它帮助你。使用 @files 指向你想要模仿的类似代码,或使用 @folder 让它更好地理解你的项目结构。不要害怕将大的更改分解成小块 - 开始新的聊天有助于保持专注和高效。

要点总结

  • 缩小变更范围,不要一次尝试做太多事情
  • 尽可能包含相关上下文
  • 根据各自的优势使用聊天、内联编辑和Tab功能
  • 经常创建新的聊天会话
  • 使用Ask模式进行规划,使用Agent模式进行实现