Cursor進階技巧大全與疑難解決
作者:程式設計師 NEO 原文連結
作為一個 AI 領域的從業者,同時也是 AI 輔助編程的深度用戶。
下面這幾句話是我認為你最需要知道也是對你最有幫助的,哪怕不看下面的技巧,我也推薦你花幾秒鐘看看。
- LLM 上下文是受限的,且上下文越多,它越難捕獲到你的意圖。
- LLM 輸出是
嚴重
受限的,目前常用的最多為8192
Tokens。 - 無論是 Cursor、Windsurf、Copilot 還是 Cline,它們都只是你的助手,請全程參與並把握主導權和決策權。
當前 Cursor 最新版本 0.44.10。
Cursor 使用技巧
Agent 模式使用技巧
搜索代替指定
理由:強制觸發 Cursor Agent 模式裡面的搜索功能,它搜到的片段 + 上下文,比你手動指定多個文件給它得到的結果會好很多(因為你指定文件的話,它只會讀取開頭一兩百行,可能都讀不到你想要它修改的函數,然後這時候上下文又會多一大堆沒用的干擾信息,也就是會出現各位所說的變傻)
- 移除 context 指定,觸發 agent 模式的自動搜索。
如上圖,context 指定內容為空,觸發 agent 模式的自動搜索。
同時改為在描述中提供:
- 明確的方法名
- 關鍵類名
- 相關變量名
- 具體功能描述
我舉個栗子:
请帮我实现一个方法,功能是将一个字符串转换为大写,方法名为 `toUpperCase`,类名为 `StringUtils`,字符串变量名为 `str`。
文件處理
理由:文件是額外資訊,CHAT 中請只保留最關鍵的指示資訊和引導資訊。過多的資訊會干擾模型對你需求的理解。
功能模組:Cursor Settings -> Features -> Docs:
避免直接粘貼:
- 不要在編輯框直接添加大量文件,將文件添加到文件配置中,然後在編輯框中使用
@
符號觸發文件配置
- 使用文件配置功能
文件指定:
- 僅為項目共享必要的數據,而不是所有項目的文件均共享。
- 推薦僅添加訓練數據無法覆蓋的內容,如:較新的庫文件、開發接口文件等。
- 文件自己寫最好(要求就是精煉,和強烈的個人編碼風格),僅提供方法使用教程,簡短文字描述,便於切片和索引。
文件鏈接配置方式:
https://github.com/username/repo/blob/main/docs/doc.md
- 使用 GitHub 倉庫儲存文件,方便管理和更新。
- 也可使用雲儲存服務(如阿里雲 OSS)
本地文件指定,在 Cursor 設定中開啟本地文件 Cursor Settings -> Beta -> Notepads:
在左側邊欄中底部 Notepads 中添加文件:
上下文管理
理由:Cursor 是一個助手,而不是決策專家,有時候人動動腦子做個決策就是它望塵莫及的了。
- 避免提供過多文件導致上下文溢出。
- 確保關鍵指令不被忽略。
- 優先提供必要的上下文信息,而不是所有信息。
- 不要幻想一個 CHAT 解決所有問題,學會將問題分解,解決一個問題使用一個 CHAT。
Lint 配置
理由:部分項目會導致額外的矯正,浪費時間,大部分情況下人一眼看過去就知道是什麼問題了。
- 建議關閉自動 lint。
- 需要時使用 @lint 手動觸發,避免過度自動化帶來的干擾。
前端同學須知
當你費勁口舌跟它辯論 UI 有什麼 BUG,不如甩給它一張界面截圖,也許你會有意外的發現。
Cursor Rule
- 善用 Cursor Rule,可以在項目根目錄創建
.cursorrules
文件,cursor 在chat/composer
中均會參考此文件定義。 - 在 cursor rule 中指定項目所有用到的庫(必要的)、UI 風格、編碼規範、項目模組定義等。
https://cursor.directory/ 中有很多規則可以參考,也可以自己定義。
常見問題處理
出現锟斤拷亂碼怎麼辦?錯誤示例(來自朋友聊天截圖分享):
請使用全局 utf-8
。
中英日三文混雜,修改 46 處,均無亂碼。
附上給定亂碼,其自動修復為正確內容截圖。
搜尋不準確:
- 提供更精確的關鍵詞,避免使用模糊的描述。
- 使用完整的方法名/類名/變量名等。
如何使用 agent 模式?
如果你的版本支持,那麼 composer 頁面或彈窗下面的聊天框右下角會有如下選項(normal 和 agent),選中 agent 時為白色,且鼠標懸浮會提示你正在使用 agent 模式。
- checkpoints 不會回退?
每個 checkpoints 旁邊均有一個 restore
按鈕,點擊即可回到當時的狀態。
checkpoints 太多不知道回退到哪,也適用於沒有 checkpoints 沒有 restore 按鈕的版本?
如果你發送了 A 消息,cursor 幫你做了 1、2、3 件事情,這些事情你都不想 care 了。那麼你只需要雙擊 A 消息,再點一次 submit,然後會有如上彈窗提醒,選中 continue and revert 即可,然後 cursor 會再根據你的 A 消息重新發送請求,如果不需要就點界面中的 cancel 取消即可。
如何為 composer 配置自定義(自己提供 Key)模型?
可以。但只能官 Key。
非官 key,中轉站呢?沒有辦法。
cursor 的 composer 不會使用用戶配置的自定義 endpoint。如有這個需求,請試試 Cline,這是一個非常好用的 agent(缺點:無 checkpoints,行級處理導致無法一次 ctrl + z 撤銷,也就是會在 timeline 留下很多修改過程中的髒版本,這是我對我來說最不喜歡的一點)。
實現新功能,但代碼散落在多個文件?
不需要提供 context,只需要在 agent 模式下的聊天框中提供文件名和涉及到的必要的接口描述以及新功能描述即可(非必要請勿指定 context,特別是文件幾百上千行時)。
如果我想讓 AI 總結項目,生成開發指南,但不想讓他修改代碼該怎麼辦?
- 首先,我們要明確一點,LLM 上下文和輸出都是受限的,所以尋常的 Chat 模式必定是無法使用的,因為你不可能將所有代碼一次性全部提供給它,它也不可能給你生成幾萬行的開發指南。
- 所以,我們需要使用具有 agent 功能的工具,如:cursor compose 裡面的 agent 模式,或者 cline 工具,這些工具本質上是由一個決策者和多個執行者組成,決策者負責制定完成任務所需要進行的操作步驟,再交由執行者去執行,決策和執行都是單獨的一次 Chat。
那麼,思路就很簡單了。
- 拿到項目文件目錄接口,由決策者生成閱讀指南,相當於你的 leader 教你如何閱讀項目。
- 讓執行者根據決策者生成的閱讀指南,逐個文件閱讀並生成文件內容概要、函數接口概要,將閱讀結果保留到
/docs
目錄下的項目同結構md
文件下(如:src/hello/prompt.py
(提供一些 prompt 常量)=>docs/src/hello/prompt.md
,src/hello/fillPrompt.py
(提供一些工具函數,來操作 prompt 裡面定義的變量等信息)=>docs/src/hello/fillPrompt.md
)。 - 所有的執行者閱讀完後,再交由思考者,逐個文件夾總結歸納(例如:
docs/src/hello/
下有prompt.md
和fillPropmt.md
,對齊總結歸納後會得到docs/src/hello.md
),如此循環遞歸向上,直到得到最終的docs.md
,這便是我們所需要的項目開發指南。 - 實現:(待續,內容有點多,有需要再繼續寫)如果你使用 cline,那麼請你創建一個
MCP
工具,用於獲取項目目錄和文件結構,並需要能標註和獲取已經瀏覽和歸納總結過的文件。