進階技巧

掌握 .cursorrules 精寫技巧、MCP 整合、隱私設定與高階工作流程,讓 Cursor AI 發揮最大效益。

進階 .cursorrules 撰寫

一份好的 .cursorrules 能讓 AI 回覆品質大幅提升。以下是撰寫高效 .cursorrules 的技巧:

結構化撰寫方式

# .cursorrules(完整企業級範例)

## 角色定義
你是本團隊的資深全端工程師,熟悉我們的技術棧與業務邏輯。
在回覆時,優先考慮可維護性和程式碼可讀性,而非過度最佳化。

## 技術棧
前端:Next.js 14 (App Router), TypeScript, Tailwind CSS, shadcn/ui
後端:Node.js, Fastify, Drizzle ORM, PostgreSQL
測試:Vitest, React Testing Library, Playwright
部署:Vercel (前端), Railway (後端)

## 程式碼風格
- 縮排:2 個空格
- 字串:單引號(import 用雙引號)
- 行尾:不加分號(Prettier 設定)
- 最大行寬:100 個字元

## 架構原則
1. 遵循 Feature-based 目錄結構
2. 每個 feature 包含:components/, hooks/, utils/, types/
3. 共用邏輯放在 src/shared/
4. API 呼叫統一在 src/services/ 層處理
5. 型別定義與使用位置在同一目錄

## 命名規範
- React 元件:PascalCase
- Hook:use 前綴 + camelCase
- 工具函式:camelCase
- 常數:UPPER_SNAKE_CASE
- 型別/介面:PascalCase,介面不加 I 前綴
- 資料庫 Table:snake_case
- API 路由:kebab-case

## 禁止事項
- 不使用 any 型別(使用 unknown 或具體型別)
- 不直接操作 DOM(使用 React ref)
- 不在元件中直接呼叫 API(透過 hooks 或 services)
- 不提交含有 console.log 的程式碼

## 回覆規範
- 說明用繁體中文,程式碼用英文
- 修改現有程式碼時,標明修改的原因
- 如有多種實作方式,列出優缺點後推薦最適合的
- 涉及安全性的建議要特別標注

分層 .cursorrules

在 Monorepo 或大型專案中,可以在不同子目錄放置不同的 .cursorrules

project/
├── .cursorrules              # 全域規則(共用規範)
├── apps/
│   ├── web/
│   │   └── .cursorrules      # 前端特定規則
│   └── api/
│       └── .cursorrules      # 後端特定規則
└── packages/
    └── shared/
        └── .cursorrules      # 共用套件規則

自訂 AI 指令

除了 .cursorrules,Cursor 提供「User Rules」功能,讓你設定跨所有專案的個人偏好:

前往 Cursor Settings → General → Rules for AI 設定全域規則,例如:

# 個人全域規則
- 說明文字使用繁體中文(台灣用語)
- 程式碼範例總是完整可執行
- 回覆時先給出結論,再詳細說明
- 如果我的問題有更好的解法,主動告訴我
- 遇到安全性問題,務必特別提醒

User Rules 的優先度低於 .cursorrules,專案層級的設定會覆蓋個人設定。

MCP 進階整合

善用 MCP(Model Context Protocol),讓 Cursor Agent 能連接真實的工具與資料:

資料庫直連(開發環境)

// .cursor/mcp.json
{
  "mcpServers": {
    "postgres-dev": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://localhost:5432/myapp_dev"
      ]
    }
  }
}

// 使用情境:
// "查詢 users 表,找出過去 7 天內沒有登入的用戶"
// "解釋 orders 表的 schema,有什麼可以最佳化的索引?"

GitHub 整合

// .cursor/mcp.json
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}

// 使用情境:
// "列出所有未關閉的 bug 相關 Issues"
// "幫我建立一個 PR 描述,基於這次的 git diff"
// "查看最近 5 個 PR 的狀態"

自訂 MCP 伺服器

// 建立自訂 MCP 伺服器(Node.js 範例)
// custom-mcp-server.js
import { Server } from "@modelcontextprotocol/sdk/server/index.js"
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"

const server = new Server({ name: "custom-tools", version: "1.0.0" }, {
  capabilities: { tools: {} }
})

// 定義工具
server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [{
    name: "get_user_data",
    description: "從內部 API 取得用戶資料",
    inputSchema: {
      type: "object",
      properties: { userId: { type: "string" } },
      required: ["userId"]
    }
  }]
}))

// 工具處理邏輯
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name === "get_user_data") {
    const data = await fetchUserFromAPI(request.params.arguments.userId)
    return { content: [{ type: "text", text: JSON.stringify(data) }] }
  }
})

const transport = new StdioServerTransport()
await server.connect(transport)

隱私模式

對於涉及敏感程式碼的專案,了解 Cursor 的隱私設定非常重要:

隱私模式(Business 方案)

  • 程式碼不會被用於訓練 AI 模型
  • AI 請求不會被 Cursor 儲存
  • 與 OpenAI 的合約保證不使用資料訓練
  • 需要升級至 Business 方案

使用自己的 API 金鑰

如果你使用 BYOK(Bring Your Own Key)模式:

  • 程式碼直接發送至 OpenAI 或 Anthropic,不經過 Cursor 伺服器
  • 受 OpenAI/Anthropic 的隱私政策保護(預設不用於訓練)
  • 適合有敏感程式碼但無法升級 Business 方案的個人開發者

建議的隱私實踐

  • 將機密設定(API Keys、密碼)放在 .env 檔案,並加入 .gitignore
  • .cursorignore 中排除敏感目錄,避免 AI 索引
  • 不在 Chat 中貼上真實的生產環境資料
# .cursorignore(排除 AI 索引的目錄)
.env
.env.*
secrets/
certificates/
*.pem
*.key
node_modules/
.git/

Monorepo 策略

在 Monorepo 環境中使用 Cursor,有幾個需要特別注意的地方:

索引設定

// .cursorignore(減少不必要的索引,提升效能)
**/node_modules/
**/dist/
**/build/
**/.next/
**/coverage/
# 只排除不需要 AI 了解的目錄
# 保留所有原始碼,讓 AI 有完整上下文

多應用切換

在 Monorepo 中使用 Chat 時,明確指定你在操作哪個應用:

// 明確引用特定應用的程式碼
"@apps/web/src/components 幫我建立一個新的 DataTable 元件"

// 跨應用查詢
"@apps/web @apps/api
前端和後端對 User 型別的定義是否一致?
有沒有需要同步的地方?"

效能優化技巧

讓 Cursor AI 回覆更快、更精準的實用技巧:

  • 縮小上下文範圍:引用特定檔案而非整個程式碼庫,讓 AI 聚焦在相關程式碼
  • 清晰的問題描述:「幫我修復這個 bug」比「這裡有問題」能得到更好的答案
  • 使用快速模型做初稿:用 gpt-4o-mini 快速生成初稿,再用 Claude 精修
  • 關閉不需要的自動功能:如果某頁面不需要 Tab 補全,可以暫時關閉節省資源
  • 定期重整對話:過長的對話歷史會降低精準度,遇到新問題時開啟新對話

搭配 Claude Code 使用

Cursor 和 Claude Code 可以互補使用,發揮各自的優勢:

Cursor 適合日常編輯工作,Claude Code 適合需要深度 Agent 自動化的複雜任務(如大規模重構、CI/CD 整合)。兩者不衝突,可以在同一個專案中並用。

分工建議

  • Cursor:日常程式碼編寫、即時補全、快速修改、Chat 問答
  • Claude Code:大型重構、跨 Repo 操作、長時間自動化任務、CI/CD 整合

共用 .cursorrules 與 CLAUDE.md

// 讓兩個工具共享相同的規範
// .cursorrules(Cursor 讀取)
// CLAUDE.md(Claude Code 讀取)
//
// 建議在 CLAUDE.md 中引用 .cursorrules:
// "請參考 .cursorrules 文件中的程式碼規範"
//
// 或維護一個共用的規範文件:
// docs/ai-rules.md
// 在 .cursorrules 和 CLAUDE.md 中都引用這份文件
上一步:← 工作流程 |下一步:實戰範例 →