處理大型程式碼庫和小型專案相比,會帶來一套全新的挑戰。結合我們在擴充 Cursor 自身程式碼庫的經驗,以及來自管理超大程式碼庫客戶的洞見,我們整理出一組應對複雜度提升的實用模式。 在這份指南中,我們會帶你走過一些對大型程式碼庫特別實用的技巧。

用 Chat 快速上手不熟悉的程式碼

在一個大型程式碼庫裡穿梭,特別是對你來說全新的時候,確實不容易。你常常會用 grep、搜尋、四處點來找你要的程式碼片段。透過 Chat,你可以直接提問,快速找到想要的內容,並拿到關於它如何運作的詳細說明。 這裡我們示範如何請它協助定位 Cursor 中程式碼庫索引的實作細節,甚至要求一些範例,讓理解更直觀。

為領域特定知識撰寫規則

如果你要讓一位新協作者進入你的程式碼庫,你會提供哪些背景脈絡,來確保他們能開始做出有意義的貢獻? 你對這個問題的回答,同樣很可能是 Cursor 需要理解的寶貴資訊。對於每個組織或專案,都存在一些未必完全寫進文件的隱性知識。善用規則是確保 Cursor 掌握完整脈絡的最佳方式。 例如,如果你在撰寫如何實作新功能或服務的指引,可以寫一條簡短的規則,把它記錄下來以利長期留存。
Boilerplate
---
description: Add a new VSCode frontend service
---

1. **Interface Definition:**
   - Define a new service interface using `createDecorator` and ensure `_serviceBrand` is included to avoid errors.

2. **Service Implementation:**
   - Implement the service in a new TypeScript file, extending `Disposable`, and register it as a singleton with `registerSingleton`.

3. **Service Contribution:**
   - Create a contribution file to import and load the service, and register it in the main entrypoint.

4. **Context Integration:**
   - Update the context to include the new service, allowing access throughout the application.
如果有想讓 Cursor 一定遵守的通用格式規範,可以依據 glob 樣式自動附加規則。
Formatting
---
globs: *.ts
---
- Use bun as package manager. See [package.json](mdc:backend/reddit-eval-tool/package.json) for scripts
- Use kebab-case for file names
- Use camelCase for function and variable names
- Use UPPERCASE_SNAKE_CASE for hardcoded constants
- Prefer `function foo()` over `const foo = () =>`
- Use `Array<T>` instead of `T[]`
- Use named exports over default exports, e.g (`export const variable ...`, `export function `)

緊貼規劃制定流程

對於較大的變更,花比平常更多的心力去制定一個精準且範圍清晰的計劃,可以大幅提升 Cursor 的輸出品質。 如果在同一個提示做了幾種不同變化後,還是得不到想要的結果,試著拉高視角,從零開始擬一份更詳細的計劃,就像要為同事寫一份 PRD 一樣。很多時候,困難之處在於先弄清楚應該做什麼變更,這項工作更適合人來做。只要給出正確的指示,我們就能把部分實作工作交給 Cursor。 用 AI 強化規劃流程的一種方式是使用 Ask 模式。要建立計劃時,在 Cursor 開啟 Ask 模式,把你從專案管理系統、內部文件或零散想法中掌握的所有脈絡都丟進去。想想程式碼庫裡你已經知道想要納入的檔案與相依性。這可能是一個包含你想整合之程式碼片段的檔案,或甚至是一個整個資料夾。 以下是一個提示範例:
Planning prompt
- create a plan for how we shoud create a new feature (just like @existingfeature.ts)
- ask me questions (max 3) if anything is unclear
- make sure to search the codebase

@Past Chats (my earlier exploration prompts)

here's some more context from [project management tool]:
[pasted ticket description]
我們要模型建立一份計劃,並透過向人提問來蒐集脈絡,同時參考先前的探索性提示以及 ticket 描述。建議使用像 claude-3.7-sonnetgemini-2.5-proo3 這類思考型模型,因為它們能理解變更的意圖,並更有效地綜整出計劃。 基於這些內容,你可以在開始實作前,先和 Cursor 反覆打磨這份計劃。

為工作挑對工具

有效使用 Cursor 的關鍵技能之一,就是為當下的需求選對工具。想想你想達成什麼,然後選擇能讓你維持心流的方式。
ToolUse caseStrengthLimitation
Tab快速、手動更動完全掌控、速度快單一檔案
Inline Edit在單一檔案中的範圍式更動聚焦編輯單一檔案
Chat較大、跨檔案的更動自動蒐集上下文、深度編輯較慢、上下文龐大
每個工具都有它的甜蜜點:
  • Tab 是你要快速編輯、自己掌控方向時的首選
  • Inline Edit 在你需要對特定程式區塊做精準變更時特別好用
  • Chat 很適合需要 Cursor 理解更廣泛上下文的較大變更
使用 Chat 模式時(可能感覺慢一點,但超強),給足好的上下文能讓它更幫得上忙。用 @files 指向你想仿效的相似程式碼,或用 @folder 讓它更了解你的專案結構。也別怕把大型變更拆成小塊——開新的對話能讓焦點更集中、流程更有效率。

重點整理

  • 縮小變更範圍,別一次做太多
  • 能提供時就補上相關脈絡
  • 讓 Chat、Inline Edit、Tab 各展所長
  • 常常開新聊天
  • 先用 Ask mode 規劃,再用 Agent mode 實作