核心功能詳解

深入了解 Cursor AI 每個核心功能的操作方式、使用時機與實戰技巧。

Chat 對話模式

Chat 是 Cursor 最直覺的 AI 互動方式,按 Ctrl+L(或 Cmd+L)開啟右側對話面板。

基本操作

  • 直接輸入問題,AI 會參考當前開啟的檔案與游標位置回答
  • 在程式碼中選取一段後再開啟 Chat,AI 會自動帶入選取的內容
  • 使用 @ 符號引用特定檔案或資料夾(例如 @utils/helper.ts
  • 對話歷史會保留在當前工作階段中,可以追問

@ 引用語法

// 引用單一檔案
@src/components/Button.tsx 這個元件的 props 型別是什麼?

// 引用資料夾
@src/utils 幫我找出所有處理日期格式的函式

// 引用整個程式碼庫
@codebase 我的專案中哪些地方有使用 Redux?

// 引用網路文件
@https://docs.react.dev/reference/react/useState
根據官方文件,useState 的最佳實踐是什麼?

// 引用最近的錯誤訊息
@errors 這個錯誤是什麼意思,如何修復?

實用 Chat 提示詞

// 解釋程式碼
"解釋這段程式碼的邏輯,用繁體中文說明"

// 發現潛在問題
"這段程式碼有什麼潛在的 bug 或效能問題?"

// 生成測試
"為這個函式生成 Jest 單元測試,涵蓋邊界情況"

// 改善程式碼
"重構這段程式碼使其更符合 SOLID 原則"

// 生成文件
"為這個模組生成 JSDoc 說明,包含參數與回傳值"

Chat 模式 vs Agent 模式

Chat 模式適合「問問題、獲取建議」;Agent 模式(Composer)適合「直接執行任務、修改程式碼」。兩者的主要差異在於 Agent 會主動修改檔案,而 Chat 預設只提供建議。

Agent 模式(Composer)

Ctrl+I(或 Cmd+I)開啟 Composer 面板,這是 Cursor 最強大的功能,能夠自動完成複雜的多步驟開發任務。

Agent 的能力

  • 讀取並修改多個檔案
  • 在終端機執行指令(安裝套件、執行測試等)
  • 建立新檔案與資料夾
  • 搜尋程式碼庫找到相關程式碼
  • 根據錯誤訊息自動修正並重試
  • 執行前會顯示計畫讓你確認(可以在設定中調整)

典型使用情境

// 新增功能
"在 src/components 目錄下建立一個 Modal 元件,
支援標題、內容、確認/取消按鈕,並加入動畫效果"

// 重構任務
"將 src/utils/dateHelper.js 轉換為 TypeScript,
加入完整的型別定義並更新所有引用的檔案"

// 修復 Bug
"找出並修復應用程式中所有造成記憶體洩漏的地方,
特別注意 useEffect 的清理函式"

// 加入測試
"為 src/services 目錄下的所有服務建立單元測試,
使用 Jest 和 React Testing Library"

審查 Agent 的變更

Agent 完成任務後,所有變更都會以 diff 形式顯示,你可以:

  • 按「Accept All」接受所有變更
  • 逐一審查每個檔案的變更,選擇性接受或拒絕
  • 要求 Agent 調整某個特定的變更

Agent 執行終端指令時,預設會在執行前顯示指令讓你確認。建議保持這個設定,避免意外刪除或覆蓋重要檔案。

Tab 智慧補全

Cursor 的 Tab 補全是基於整個程式碼庫上下文的 AI 預測,遠比傳統 IntelliSense 更智慧。

操作方式

  • 開始輸入程式碼時,Cursor 會以灰色文字顯示補全建議
  • Tab 接受整個建議
  • (右方向鍵)逐字接受
  • Esc 或繼續輸入來忽略建議

Tab 補全的智慧之處

// 情境一:完成函式實作
// 當你輸入函式簽名後,Cursor 可能直接預測完整實作
function calculateTax(amount: number, rate: number) {
  // Cursor 可能自動補全:
  return amount * (rate / 100);
}

// 情境二:重複模式的延伸
// 當你輸入第一個 case,Cursor 預測後續的 case
switch (action.type) {
  case 'INCREMENT':
    return { ...state, count: state.count + 1 };
  case 'DECREMENT':     // ← 你輸入到這,Tab 補完整行
    return { ...state, count: state.count - 1 };

// 情境三:測試程式碼生成
// 輸入一個 describe 區塊的標題,Cursor 預測 test 內容
describe('calculateTax', () => {
  it('should return correct tax amount', () => {
    // Cursor 可能預測:
    expect(calculateTax(100, 10)).toBe(10);
  });
});

調整補全行為

在設定中可以調整 Tab 補全的行為:

  • 開啟/關閉自動觸發
  • 調整觸發延遲時間
  • 設定特定語言或資料夾停用補全

Cmd+K 行內編輯

選取程式碼後按 Ctrl+K(或 Cmd+K),可以用自然語言直接修改選取的程式碼,結果以 diff 形式顯示。

常用場景

// 場景一:型別轉換
// 選取 JavaScript 函式,輸入:
"轉換為 TypeScript,加入完整型別定義"

// 場景二:重構
// 選取多層巢狀的 if-else,輸入:
"重構為 early return 風格,提高可讀性"

// 場景三:加入錯誤處理
// 選取 API 呼叫,輸入:
"加入完整的錯誤處理,包含 try-catch 與錯誤訊息"

// 場景四:效能最佳化
// 選取迴圈邏輯,輸入:
"用 Array.reduce 重寫這個邏輯,提高效能"

// 場景五:加入文件
// 選取函式,輸入:
"加入 JSDoc 說明,包含 @param 和 @returns"

接受或拒絕變更

Cmd+K 修改後,變更會以 diff 形式高亮顯示:

  • Ctrl+Y 接受變更
  • Ctrl+N 拒絕,恢復原始程式碼
  • 也可以用滑鼠點擊「Accept」或「Reject」按鈕

Rules for AI(.cursorrules)

在專案根目錄建立 .cursorrules 檔案,可以為整個專案設定 AI 的行為規範。這個檔案會在每次 AI 回覆時自動被包含在上下文中。

React + TypeScript 專案範例

# .cursorrules
你是一個精通 React 與 TypeScript 的資深前端工程師。

## 程式碼規範
- 使用 functional components,不使用 class components
- 所有 props 都必須有 TypeScript 型別定義
- 使用 const 宣告,避免 let(除非值需要改變)
- import 順序:React → 第三方套件 → 本地模組

## 命名規範
- 元件:PascalCase(例如 UserProfile)
- Hooks:camelCase 且以 use 開頭(例如 useUserData)
- 常數:SCREAMING_SNAKE_CASE(例如 MAX_RETRIES)
- 一般變數與函式:camelCase

## 架構規範
- 元件拆分原則:單一職責,不超過 150 行
- 將業務邏輯抽取到自訂 hooks
- 使用 React Query 管理伺服器狀態
- 使用 Zustand 管理客戶端狀態

## 回覆格式
- 說明文字使用繁體中文
- 程式碼範例完整可執行,不省略
- 有多種實作方式時,說明各自優缺點

Node.js 後端專案範例

# .cursorrules(後端版本)
你是一個 Node.js 後端工程師,熟悉 Express 和 PostgreSQL。

- 使用 async/await,避免 callback 風格
- 所有資料庫操作使用 Drizzle ORM
- API 路由遵循 RESTful 規範
- 輸入驗證使用 Zod schema
- 錯誤統一透過 middleware 處理
- 環境變數使用 dotenv,不硬編碼任何密鑰

MCP 整合(Model Context Protocol)

MCP(Model Context Protocol)是 Anthropic 推出的開放標準,讓 AI 可以透過標準化介面連接外部工具與資料來源。Cursor 從 0.43 版本開始支援 MCP。

常用 MCP 工具

  • Filesystem MCP:讓 AI 讀寫本地檔案系統
  • GitHub MCP:讓 AI 直接操作 GitHub 倉庫、PR、Issues
  • Postgres MCP:讓 AI 查詢 PostgreSQL 資料庫
  • Brave Search MCP:讓 AI 搜尋即時網路資訊
  • Puppeteer MCP:讓 AI 控制無頭瀏覽器進行測試

設定 MCP

// ~/.cursor/mcp.json 或 .cursor/mcp.json(專案層級)
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "your_token_here"
      }
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
    }
  }
}
上一步:← 安裝與設定 |下一步:工作流程 →