先來說,什麼是 context window?它跟在 Cursor 裡高效寫程式有什麼關係? 把視角拉遠一點,large language model(LLM)是一種透過從大量資料集學習模式來預測與生成文字的人工智慧模型。它為像 Cursor 這樣的工具提供動力,能理解你的輸入,並根據先前看過的內容建議程式碼或文字。 Token 是這些模型的輸入與輸出。它們是文字的小片段,通常是單字的一部分,LLM 會逐一處理。模型不會一次讀完整句;它會根據前面的 token 來預測下一個 token。 想看看一段文字如何被切成 token,可以用像這個的 tokenizer。 Tokenizer

什麼是 context?

在 Cursor 產生程式碼建議時,「context」指的是提供給模型的資訊(以「input tokens」表示),模型會用這些資訊來預測接下來的內容(以「output tokens」表示)。 Context 分成兩種:
  1. Intent context 定義使用者想讓模型達成的目標。比如,system prompt 通常提供高層級的指示,描述使用者希望模型如何行為。在 Cursor 中,大多數的「prompting」都屬於 intent context。「把那個按鈕從藍色改成綠色」就是一個明確的意圖;它是具指示性的。
  2. State context 描述當前的狀態。提供 Cursor 錯誤訊息、console logs、圖片,以及程式碼片段,都是與狀態相關的 context 範例。它是描述性的,而非指示性的。
這兩種 context 相互配合,透過描述目前狀態與期望的未來狀態,讓 Cursor 能給出更有用的程式碼建議。

在 Cursor 中提供脈絡

提供給模型的脈絡越貼切,效用就越高。如果在 Cursor 裡提供的脈絡不足,模型會在缺乏相關資訊的情況下硬解,通常會導致:
  1. 產生幻覺:模型在沒有模式時硬做模式匹配,結果出乎意料。像 claude-3.5-sonnet 這類模型在脈絡不足時特別常見。
  2. Agent 會自己想辦法蒐集脈絡,例如搜尋程式碼庫、讀檔、呼叫工具。強思考模型(像 claude-3.7-sonnet)用這招能走很遠,而是否給對初始脈絡,會決定整體走向。
好消息是,Cursor 的核心就是情境感知,設計上也盡量減少使用者需要介入的地方。Cursor 會自動拉入模型判定為相關的程式碼庫內容,例如目前編輯的檔案、其他檔案中語意相近的片段,以及工作階段裡的其他資訊。 不過,可用的脈絡來源很多,所以手動指定你知道與任務相關的脈絡,是把模型引導到正確方向的實用方法。

@-符號

提供明確脈絡最簡單的方法就是用 @-符號。當你很清楚要包含哪個檔案、資料夾、網站,或其他脈絡時,這招超好用。越具體越好。以下是如何更精準提供脈絡的說明:
符號範例使用情境缺點
@code@LRUCachedFunction你知道哪個 function、constant 或 symbol 和你要產生的輸出最相關需要對整個 codebase 有相當多的了解
@filecache.ts你知道要讀或要編輯哪個檔案,但不確定在檔案裡的確切位置視檔案大小而定,可能會把對目前任務不相關的脈絡一起帶進來
@folderutils/某個資料夾中的全部或大多數檔案都與任務相關可能會包含大量與目前任務不相關的脈絡
Context Menu

規則

把規則當成你和團隊成員都能取用的長期記憶。先把領域特定的脈絡(包含工作流程、格式與其他慣例)收集起來,會是撰寫規則的絕佳起點。 也可以用 /Generate Cursor Rules 從現有對話產生規則。如果你有一段很長、包含許多提示的來回對話,裡面很可能有一些實用的指示或通用規則,之後可以重複利用。 Rules

MCP

Model Context Protocol 是一個延展層,能讓 Cursor 具備執行動作與引入外部情境的能力。 依照你的開發環境,你可能會想用不同類型的伺服器,但我們發現特別實用的兩大類是:
  • 內部文件:例如 Notion、Confluence、Google 文件
  • 專案管理:例如 Linear、Jira
如果你已有透過 API 存取情境並執行動作的工具,就能為它建一個 MCP 伺服器。這裡有一份簡短指南,教你如何建立 MCP 伺服器 MCP

自我蒐集脈絡

很多使用者正在採用的一個強大做法,是讓 Agent 先寫一些短期的小工具,接著執行它們來蒐集更多脈絡。這在有人介入審查的工作流程特別有效,因為你會在程式碼被執行前先過目。 例如,在程式碼中加入除錯訊息、跑起來,然後讓模型檢視輸出,能讓它取得無法從靜態分析推論出的動態脈絡。 在 Python 中,你可以這樣提示 Agent:
  1. 在程式碼相關位置加入 print(“debugging: …”) 陳述式
  2. 用終端機執行程式或測試
Agent 會讀取終端機輸出,然後決定下一步怎麼做。核心概念是讓 Agent 能存取實際的執行時行為,而不只是靜態程式碼。 Self-Gathering Context

重點摘要

  • Context 是高效 AI 寫程式的基礎,由 intent(你想做什麼)和 state(目前有哪些東西)組成。同時提供兩者能幫助 Cursor 做出更準確的預測。
  • 用帶有 @ 符號的「精準 context」(@code、@file、@folder)來精確引導 Cursor,而不是只依賴自動收集的 context。
  • 把可重複的知識整理成 rules,讓整個團隊共用,並透過 Model Context Protocol 擴充 Cursor 的能力以串接外部系統。
  • Context 不足會導致幻覺或效率低下;過多無關的 context 會稀釋訊號。拿捏好平衡,才能拿到最佳效果。