首先,什麼是上下文視窗?它與使用 Cursor 進行有效編程有什麼關係? 讓我們先放大視野來看,大型語言模型(LLM)是一種人工智慧模型,通過從大量資料集中學習模式來預測和生成文本。它透過理解您的輸入並根據之前見過的內容建議程式碼或文本,為 Cursor 等工具提供動力。 Token 是這些模型的輸入和輸出。它們是文本的片段,通常是單詞的一個片段,LLM 會逐一處理。模型不會一次讀取整個句子;它們會根據之前的 token 來預測下一個 token。 要查看某些文本如何進行 token 化,您可以使用像這個這樣的 tokenizer。 Tokenizer

什麼是上下文?

當我們在 Cursor 中生成程式碼建議時,「上下文」指的是提供給模型的資訊(以「輸入標記」的形式),模型接著使用這些資訊來預測後續的資訊(以「輸出標記」的形式)。 上下文有兩種類型:
  1. 意圖上下文定義了使用者希望從模型中獲得什麼。例如,系統提示通常作為使用者希望模型如何行為的高層級指令。在 Cursor 中進行的大部分「提示」都是意圖上下文。「將那個按鈕從藍色改為綠色」是陳述意圖的一個例子;它是規範性的。
  2. 狀態上下文描述當前世界的狀態。向 Cursor 提供錯誤訊息、控制台日誌、圖片和程式碼片段都是與狀態相關的上下文例子。它是描述性的,而非規範性的。
這兩種類型的上下文透過描述當前狀態和期望的未來狀態來協調工作,使 Cursor 能夠提出有用的程式碼建議。

在 Cursor 中提供上下文

您能提供給模型的相關上下文越多,它就越有用。如果在 Cursor 中提供的上下文不足,模型會嘗試在沒有相關資訊的情況下解決問題。這通常會導致:
  1. 幻覺,模型會嘗試進行模式匹配(當沒有模式時)造成意外的結果。這在像 claude-3.5-sonnet 這樣的模型沒有獲得足夠上下文時經常發生。
  2. Agent 會嘗試透過搜尋程式碼庫、讀取檔案和呼叫工具來自行收集上下文。強大的思考模型(如 claude-3.7-sonnet)可以透過這種策略走得很遠,而提供正確的初始上下文將決定發展軌跡。
好消息是 Cursor 的核心就是建立在上下文感知之上,設計上只需要使用者最少的介入。Cursor 會自動引入模型估計相關的程式碼庫部分,例如當前檔案、其他檔案中語義相似的模式,以及來自您會話的其他資訊。 然而,可以引入的上下文很多,因此手動指定您知道與任務相關的上下文是引導模型朝正確方向發展的有效方式。

@-符號

提供明確上下文最簡單的方式是使用 @-符號。當您明確知道要包含哪個檔案、資料夾、網站或其他上下文片段時,這些符號非常有用。您越具體,效果越好。以下是如何更精確地使用上下文的詳細說明:
符號範例使用情境缺點
@code@LRUCachedFunction您知道哪個函數、常數或符號與您要產生的輸出相關需要對程式碼庫有大量了解
@filecache.ts您知道應該讀取或編輯哪個檔案,但不確定檔案中的確切位置根據檔案大小,可能會包含許多與當前任務無關的上下文
@folderutils/資料夾中的所有檔案或大部分檔案都相關可能會包含許多與當前任務無關的上下文
Context Menu

規則

您應該將規則視為您或團隊其他成員希望能夠存取的長期記憶。捕捉特定領域的上下文,包括工作流程、格式化和其他慣例,是撰寫規則的絕佳起點。 規則也可以透過使用 /Generate Cursor Rules 從現有對話中產生。如果您已經進行了大量來回對話和提示,其中可能包含一些有用的指令或通用規則,您可能希望稍後重複使用。 Rules

MCP

Model Context Protocol 是一個擴展層,您可以透過它為 Cursor 提供執行操作和引入外部上下文的能力。 根據您的開發設置,您可能想要利用不同類型的伺服器,但我們發現特別有用的兩個類別是:
  • 內部文檔:例如 Notion、Confluence、Google Docs
  • 專案管理:例如 Linear、Jira
如果您已有透過 API 存取上下文和執行操作的現有工具,您可以為其建立一個 MCP 伺服器。這裡有一個關於如何建立 MCP 伺服器的簡短指南。 MCP

自我收集上下文

許多用戶正在採用的一個強大模式是讓 Agent 編寫短期工具,然後運行這些工具來收集更多上下文。這在人機協作工作流程中特別有效,您可以在代碼執行前先檢查代碼。 例如,在您的代碼中添加調試語句,運行它,然後讓模型檢查輸出,這樣可以讓它訪問無法靜態推斷的動態上下文。 在 Python 中,您可以通過提示 Agent 來做到這一點:
  1. 在代碼的相關部分添加 print(“debugging: …”) 語句
  2. 使用終端運行代碼或測試
Agent 將讀取終端輸出並決定下一步該做什麼。核心思想是讓 Agent 訪問實際的運行時行為,而不僅僅是靜態代碼。 Self-Gathering Context

重點摘要

  • 上下文是有效 AI 編程的基礎,由意圖(你想要什麼)和狀態(現有什麼)組成。提供這兩者有助於 Cursor 做出準確的預測。
  • 使用 @-符號(@code、@file、@folder)進行精準的上下文定位來精確引導 Cursor,而不是僅依賴自動上下文收集。
  • 將可重複使用的知識捕獲到規則中以供團隊廣泛重用,並透過 Model Context Protocol 擴展 Cursor 的功能來連接外部系統。
  • 上下文不足會導致幻覺或效率低下,而過多不相關的上下文會稀釋信號。找到適當的平衡點以獲得最佳結果。