Techsy
聯絡我們
立即開始
回到部落格
guides

Cursor Rules:如何撰寫真正有效的 .cursor/rules 檔案

作者: Mert Batur Gürbüz
更新於 Jul 5, 2026
4 分鐘閱讀
目錄
Cursor Rules:如何撰寫真正有效的 .cursor/rules 檔案

Cursor Rules:如何撰寫真正有效的 .cursor/rules 檔案

每位 Cursor 使用者都會遇到同樣的瓶頸。AI 產生的程式碼雖然技術上可行,卻無視你專案的規範、使用錯誤的匯入路徑、採用過時的模式,或是元件結構與專案中其他部分截然不同。Cursor rules 透過提供關於 你的 專案如何運作的持久性上下文(context),來解決這個問題。

什麼是 Cursor Rules,為什麼它們很重要?

Cursor rules 是 Markdown 檔案,作為永久性的系統提示詞(system prompt),在每次與 AI 互動時注入,包括聊天、自動完成、程式碼生成等所有場合。你可以將它們視為給 AI 的新手入門文件。與其每次會話都要糾正相同的錯誤,不如寫一次指令並讓其生效。

過去的做法是在專案根目錄使用單一的 .cursorrules 檔案。這仍然有效,但已不建議使用。目前的系統使用 .cursor/rules/ 目錄,其中包含個別的 .mdc(Markdown Cursor)檔案,每個檔案針對特定情境設定範圍。這是更好的設定,因為你不需要將所有指令塞進一個巨大的檔案中,而是依關注點分離規則,且 Cursor 只會載入與你當前操作相關的規則。

如果你曾使用過 AI 工具的上下文工程(context engineering),這個概念應該很熟悉:更好的輸入上下文能產生顯著更佳的輸出。Rules 就是針對你整個開發工作流程的上下文工程。

設定你的第一個規則檔案

在專案根目錄建立 .cursor/rules/ 目錄:

bash
mkdir -p .cursor/rules

每個規則都是一個 .mdc 檔案,包含 YAML frontmatter,後面接著 Markdown 內容。以下是基本骨架:

yaml
---
description: "When this rule should apply"
globs: ["src/components/**/*.tsx"]
alwaysApply: false
---

Your instructions go here in plain markdown.

三個 frontmatter 欄位控制一切:

欄位類型用途
alwaysApplyboolean設為 true 時,包含在每個 AI 請求中
descriptionstring幫助代理程式判斷此規則是否相關
globsstring[]觸發此規則的檔案模式

你也可以直接在 Cursor 中建立規則,在聊天中输入 /create-rule 並描述你想要的内容。但手動撰寫能讓你擁有更多控制權。

四種規則類型詳解

規則的啟動方式取決於其 frontmatter 設定。共有四種模式,選擇正確的模式對你的 上下文視窗預算 至關重要。

始終套用 (Always Apply)

yaml
---
alwaysApply: true
---

載入到每一個 AI 請求中。請謹慎使用,僅用於專案級別的基礎設定,例如技術堆疊聲明或適用於各處的關鍵規範。每個始終啟用的規則都會從每次互動中消耗 Token,無論其是否相關。

自動附加 (Auto-Attached, 基於 Glob)

yaml
---
globs: ["src/api/**/*.ts", "src/routes/**/*.ts"]
alwaysApply: false
---

僅當你編輯符合 glob 模式的檔案時才會啟動。這是主力規則類型。當你在元件檔案中時,會載入 React 元件規範;當你在路由處理器中時,會載入 API 模式;當你在撰寫測試時,會載入測試規則。

代理程式請求 (Agent-Requested, 智慧型)

yaml
---
description: "Database migration patterns using Drizzle ORM"
alwaysApply: false
---

沒有 globs,也沒有 always-apply,只有 description。Cursor 的代理程式會閱讀 description 並決定該規則是否與當前任務相關。如果你要求它撰寫遷移腳本,它會引入此規則。如果你在為按鈕樣式化,它會跳過。對於無法整齊對應到檔案路徑的規則,這種方式的效果出奇地好。

手動 (Manual)

yaml
---
---

未設定任何 frontmatter 欄位(或 frontmatter 為空)。這些規則僅當你在聊天中使用 @rule-name 明確提及它們時才會啟動。適合用於罕見但重要的指令,例如部署檢查清單或偶爾才需要的重構指南。

規則類型載入時機最佳適用場景
Always Apply每個請求技術堆疊、關鍵規範
Auto-Attached開啟相符檔案框架模式、檔案類型規則
Agent-Requested由代理程式決定跨領域關注點、工作流程
Manual使用 @ 提及一次性任務、檢查清單

真正有效的 Glob 模式

Globs 決定哪些檔案會觸發自動附加規則。如果設定錯誤,你的規則要麼永遠不會觸發,要麼到處亂觸發。以下是有效的做法:

yaml
# All TypeScript files in src
globs: ["src/**/*.ts", "src/**/*.tsx"]

# Only component files
globs: ["**/components/**/*.tsx"]

# Python files, excluding tests
globs: ["**/*.py", "!**/test_*.py"]

# Multiple specific directories
globs: ["src/api/**", "src/services/**"]

來自實際使用的幾個注意事項:

  • src/* 僅匹配一層目錄。你幾乎總是想要使用 src/**/* 進行遞迴匹配。
  • *.js 不會匹配 .jsx 或 .ts 檔案。請明確指定副檔名。
  • Globs 必須是 YAML 列表。像 {src,lib}/**/*.ts 這樣的大括號語法可能會靜默失敗,請堅持使用單獨的列表項目。
  • ! 前綴用於排除模式,這對於忽略生成的檔案或舊程式碼很有用。

實用規則範例

理論與現實在此交會。這些是你可以直接放入專案並立即看到更好 AI 輸出的規則。

專案級別基礎規則 (Always Apply)

yaml
---
alwaysApply: true
---

# Project: Acme Dashboard

## Tech Stack
- Next.js 15 (App Router only — no Pages Router)
- TypeScript strict mode
- Tailwind CSS v4
- Drizzle ORM with PostgreSQL
- pnpm for package management

## Critical Conventions
- All components are React Server Components by default
- Use "use client" only when the component needs interactivity
- Import paths use @/ alias mapped to src/
- Error handling: wrap async operations in try/catch, never use .catch()
- No default exports except for pages and layouts

保持此規則在 30 行以內。它會隨每個請求載入,因此每個字都會消耗 Token。

React 元件規則 (Auto-Attached)

yaml
---
description: "React component patterns and conventions"
globs: ["src/components/**/*.tsx", "src/app/**/*.tsx"]
alwaysApply: false
---

# React Component Rules

## Structure
Every component file follows this order:
1. Imports
2. Type definitions (Props interface)
3. Component function (named export)
4. Sub-components (if any)

## Patterns

Use named exports, not default:
- YES: `export function Button({ label }: ButtonProps)`
- NO: `export default function Button()`

For data fetching in Server Components:
```tsx
// 直接在元件中獲取資料,不使用 useEffect
export async function UserProfile({ id }: { id: string }) {
  const user = await db.query.users.findFirst({
    where: eq(users.id, id)
  });
  return <div>{user.name}</div>;
}

Anti-Patterns (NEVER do these)

  • No useEffect for data fetching in Server Components
  • No CSS modules — use Tailwind exclusively
  • No barrel exports (index.ts re-exports)
  • No prop drilling beyond 2 levels — use context or composition
text

### Python API 規則 (Auto-Attached)

```yaml
---
description: "FastAPI endpoint conventions and patterns"
globs: ["src/api/**/*.py", "src/routes/**/*.py"]
alwaysApply: false
---

# FastAPI Conventions

## Endpoint Structure
- Use APIRouter for route grouping
- Type all request/response models with Pydantic v2
- Dependency injection for database sessions

## Pattern
```python
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.ext.asyncio import AsyncSession

router = APIRouter(prefix="/users", tags=["users"])

@router.get("/{user_id}", response_model=UserResponse)
async def get_user(
    user_id: int,
    db: AsyncSession = Depends(get_db)
) -> UserResponse:
    user = await db.get(User, user_id)
    if not user:
        raise HTTPException(status_code=404, detail="User not found")
    return UserResponse.model_validate(user)

Error Handling

  • Always use HTTPException, not raw Response objects
  • Log errors with structlog before raising
  • Return consistent error shapes: {"detail": "message"}
text

### Go Service 規則 (Auto-Attached)

```yaml
---
description: "Go service patterns and error handling"
globs: ["**/*.go", "!**/*_test.go"]
alwaysApply: false
---

# Go Conventions

## Error Handling
- Always handle errors immediately — no _ for error returns
- Wrap errors with fmt.Errorf("context: %w", err)
- Use sentinel errors for expected failure cases

## Project Layout
- cmd/ for entrypoints
- internal/ for private packages
- pkg/ for public libraries

## Pattern
```go
func (s *UserService) GetByID(ctx context.Context, id string) (*User, error) {
    user, err := s.repo.Find(ctx, id)
    if err != nil {
        if errors.Is(err, ErrNotFound) {
            return nil, fmt.Errorf("user %s: %w", id, ErrNotFound)
        }
        return nil, fmt.Errorf("fetching user %s: %w", id, err)
    }
    return user, nil
}
text

## 管理 Token 稅負

這是大多數 Cursor 指南忽略的一點:你撰寫的每個規則都會消耗 Token。一個擁有 20 個始終啟用規則的專案,可能在 AI 甚至查看你的程式碼之前,每個請求就消耗 **2,000+ Token** 僅用於指令。

這很重要,因為 Cursor 的聊天上下文在標準模式下大約為 20,000 Token。如果你的規則吃掉了其中的 25%,你就損失了四分之一的 AI「思考空間」來處理你的實際問題。隨著規則累積,你會注意到輸出品質變差,特別是在較長的對話中。

三個原則能保持你的 Token 預算健康:

**1. 積極使用自動附加和代理程式請求規則。** 只有你的專案堆疊聲明應該始終啟用。其他一切都應條件式載入。那個 React 元件規則?當你撰寫 SQL 遷移腳本時,它不需要存在於上下文中。

**2. 寫得精簡,不要囉嗦。** 將「強烈建議開發者在定義公共 API 合約時使用 TypeScript 介面而非類型別名」替換為「公共 API 優先使用 `interface` 而非 `type`」。AI 不需要說服,它需要指令。

**3. 應用「三次規則」。** 只有在 AI 犯錯三次後,才將模式編碼為規則。如果 Cursor 已經在沒有規則的情況下正確處理了你的命名規範,那就跳過該規則。每個不必要的規則都是浪費的上下文。

你可以在 Cursor 聊天面板底部的狀態列監控 Token 使用情況。注意它是否接近 100%,那是你需要修剪規則的信號。

## 為真實專案組織規則

一個生產環境專案通常需要 5-8 個規則檔案。以下是一個運作良好的結構:

```text
.cursor/rules/
  base.mdc            # Tech stack, always-apply (< 30 lines)
  components.mdc      # React/Vue patterns, glob to component dirs
  api.mdc             # Backend conventions, glob to API dirs
  database.mdc        # ORM patterns, glob to models/migrations
  testing.mdc         # Test conventions, glob to test files
  deployment.mdc      # CI/CD patterns, manual trigger
  personal.mdc        # Your preferences (gitignored)

除了 personal.mdc 之外,將所有内容提交到版本控制。這樣你的整個團隊都能獲得相同的 AI 行為,這正是重點所在。正如一位 Cursor 論壇用戶所言,好的規則意味著「你更多地原樣接受建議,輸出在第一次嘗試时就符合你的規範」。

如果你在使用 Cursor 的同時也使用其他 AI 編碼工具,這些概念可以直接轉移。Claude Code 使用 CLAUDE.md,GitHub Copilot 有指令檔案,Windsurf 也有自己的格式,但底層原理是相同的。

規則優先級如何運作

當多個規則適用於同一個檔案時,Cursor 遵循明確的層級:

優先級來源覆蓋行為
1 (最高)團隊規則 (儀表板)用戶無法停用
2專案規則 (.cursor/rules)覆蓋用戶規則
3用戶規則 (Cursor 設定)全域預設值

團隊規則可在 Team 和 Enterprise 方案中使用。它們由管理員在 Cursor 儀表板中設定,並在整個組織中強制執行,個別開發人員無法關閉它們。

在專案規則內部,如果兩個規則適用於同一個檔案且發生衝突,行為並未嚴格定義。在實踐中,後來載入的規則往往具有優先權。為你的檔案編號(001-base.mdc, 002-components.mdc)可以讓你獲得可預測的順序。

常見錯誤及修復方法

在閱讀了數十個社區討論串並在多個專案中測試規則後,這些是最常讓人栽跟頭的錯誤:

撰寫過於模糊的規則。 「撰寫乾淨的程式碼」對 AI 來說毫無意義。「使用具名匯出,而非預設匯出。將元件結構化為:匯入、類型、函數、子元件」則提供了可執行的內容。

讓所有內容都始終套用。 你的直覺可能是對每個規則都設定 alwaysApply: true。請抵制這種衝動。每季度審計你的規則,如果你有超過 2-3 個始終啟用的規則,你可能正在浪費 Token。

忘記測試規則。 撰寫規則後,開啟相關檔案並要求 Cursor 生成應遵循該規則的內容。如果沒有,你的 glob 模式可能有誤,或者指令不夠清晰。

未記錄反模式 (Anti-patterns)。 告訴 AI 要做什麼只是工作的一半。告訴它 不要 做什麼是另一半。在每个规则中包含一个「絕不執行這些操作」的部分,並提供錯誤方法的明確範例。

忽略 UI 中的規則儲存。 一個 已知錯誤 會導致規則編輯消失。如果更改消失,請完全關閉 Cursor,在未保存更改的彈出視窗中選擇「覆蓋 (Override)」,然後重新開啟。

Cursor Rules vs CLAUDE.md vs AGENTS.md

Cursor 並非唯一使用指令檔案的工具。以下是為那些在 多個 AI 編碼助手 之間工作的人提供的格式比較:

功能.cursor/rulesCLAUDE.mdAGENTS.md
格式帶 frontmatter 的 MDC純 Markdown純 Markdown
Glob 範圍是否目錄級別
規則類型4 種 (always, auto, agent, manual)始終啟用始終啟用
Token 控制細粒度粗粒度粗粒度
版本控制是是是
適用環境僅 CursorClaude Code多種工具

Cursor 的優勢在於細粒度。CLAUDE.md 和 AGENTS.md 更簡單,它們始終載入所有内容。Cursor 讓你能在正確的時間載入正確的規則,這在你的指令集超過幾百行時變得非常重要。

若要深入了解上下文如何在這些工具中塑造 AI 輸出,我們的 上下文工程指南 分解了無論你使用哪種編輯器都適用的原則。

常見問題 (FAQ)

.cursorrules 已棄用嗎?

是的。專案根目錄中的單一 .cursorrules 檔案仍然有效,但 Cursor 建議遷移到 .cursor/rules/*.mdc 檔案。新格式支持 glob 模式、條件式載入和更好的組織。透過將單一大檔案拆分為專注的規則來進行遷移。

我應該使用什麼副檔名,.mdc 還是 .md?

對於包含 YAML frontmatter(description, globs, alwaysApply)的檔案,請使用 .mdc。純 .md 檔案也可以在 rules 目錄中運作,但不支持啟用條件式載入的 frontmatter 元數據。

一個專案應該有多少個規則?

對大多數專案來說,五到八個是甜蜜點。一個始終啟用的基礎規則,三到四個按檔案類型範圍劃分的自動附加規則,以及一兩個用於特殊任務的手動規則。超過 10 個規則通常意味著有些可以合併或移除。

Cursor rules 會影響自動完成和 Tab 補全嗎?

規則適用於聊天和代理程式互動。用戶規則 不 適用於內聯編輯 (Cmd/Ctrl+K),且規則通常不會影響 Cursor Tab 自動完成建議。它們在聊天和 Composer 會話中最有效。

我可以在多個專案之間共享規則嗎?

可以,透過 Cursor 的 Remote Rules 功能。前往 Cursor Settings > Rules, Commands,選擇「Remote Rule (GitHub)」,並貼上儲存庫 URL。當來源儲存庫更新時,規則會自動同步。或者,維護一個共享規則儲存庫並符號連結到每個專案中。

建議的最大規則長度是多少?

Cursor 的文件建議將個別規則保持在 500 行 以下。在實踐中,目標是每個規則少於 100 行。較短的規則更容易維護且消耗較少的 Token。如果規則超過 150 行,請將其拆分為兩個專注的規則。

規則是否適用於 Cursor 中的所有 AI 模型?

規則適用於 Cursor 支持的每個模型,包括 Claude、GPT-4o、Gemini 等。無論你選擇哪個模型,規則都會作為系統級上下文注入。模型行為可能有所不同,但規則本身與模型無關。

如何除錯無效的規則?

首先,驗證 glob 模式是否匹配你的檔案,開啟檔案並檢查規則是否出現在上下文面板中。其次,使用應觸發規則的直接問題進行測試。第三,暫時設定 alwaysApply: true 以確認規則内容本身有效。如果有效,則問題出在你的 glob 模式上。

我應該將 .cursor/rules 提交到 git 嗎?

絕對應該。專案規則的重點在於團隊範圍的一致性。提交 .cursor/rules/ 中的所有内容,除了個人偏好檔案。將 personal.mdc 添加到 .gitignore 中,用於不應適用於所有人的個人設定。

我可以將 Cursor rules 與 MCP 伺服器一起使用嗎?

可以,而且它們互補性很好。規則定義 AI 應 如何 撰寫程式碼,而 MCP 伺服器 則讓 AI 能夠存取外部工具和資料。規則可能會說「始終使用我們的內部 API 客戶端」,而 MCP 伺服器則讓 AI 在開發過程中實際查詢該 API。

如果 AI 功能在你的路線圖上,這正是我們的專長:Techsy 的 AI 整合團隊 協助將 LLM 系統從原型推向生產環境。想要對你的技術堆疊獲得第二意見嗎?獲取免費諮詢。

參考來源

  • Cursor Rules 文件
  • Trigger.dev, 如何撰寫優秀的 Cursor Rules
  • Cursor Forum, MDC Rules 最佳實踐與疑難排解
  • Peakvance, Cursor Rules 指南:Token 稅負
  • GitHub 上的 awesome-cursor-rules-mdc

標籤

cursor rulescursor ideai codingcontext engineeringcursor rules filemdc formatai development tools

分享這篇文章

相關文章

更多「%s」主題文章 guides

guides
Jul 18, 2026

2026 年 LLM API 價格比較:所有主要模型定價一覽

2026 年完整 LLM API 價格比較 — Claude、GPT-5.6、Gemini、DeepSeek、Qwen、GLM 和 Mistral 並列比較每百萬 Token 的價格,數據直接來自官方定價頁面。

12 min read 分鐘閱讀
繼續閱讀
guides
Apr 12, 2026

Surfer SEO 2026 指南:內容編輯器、NLP 評分與 AI 搜尋

一份實用的 Surfer SEO 指南,涵蓋內容編輯器工作流程、NLP 評分系統、用於 GEO 優化的 AI Tracker 以及 API 自動化。基於對 50 多篇文章的測試經驗。

14 min read 分鐘閱讀
繼續閱讀
guides
Apr 12, 2026

2026 Semrush 指南:詳解所有工具(附實例)

一份實用的 Semrush 指南,涵蓋關鍵字研究、網站審計、競爭對手分析、AI 可見度追蹤以及 MCP 伺服器設定。包含來自真實 SEO 工作流程的程式碼範例與操作流。

14 min read 分鐘閱讀
繼續閱讀
查看全部文章
啟動專案

準備好創造點什麼了嗎 非凡體驗?

讓我們將你的願景化為現實。團隊已準備好,助你打造真正有影響力的軟體。

預約 30 分鐘需求討論查看作品

精選上架

Claude 技能

查看全部
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

AI 自動化作業

查看全部
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

精選上架

Claude 技能

查看全部
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

AI 自動化作業

查看全部
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

服務項目

  • 企業級解決方案
  • 手機應用程式
  • 網頁應用

解決方案

  • CRM 系統
  • AI 整合應用
  • ERP 整合系統
  • 語音助理代理
  • 工作流程自動化
  • 網路資安

資源庫

  • 部落格
  • 專案作品

社群

  • AI 自動化作業
  • Claude 技能

工具

  • 手機應用程式開發費用計算器
  • OpenAI / LLM API 費率計算器
  • MVP 開發費用計算器
  • 語音 AI 助理費用計算器

關於 TECHSY

  • 瀏覽
  • 合作夥伴
  • 聯絡我們

法律聲明

  • 私隱政策
  • 服務條款
  • Cookies說明

服務項目

  • 企業級解決方案
  • 手機應用程式
  • 網頁應用

解決方案

  • CRM 系統
  • AI 整合應用
  • ERP 整合系統
  • 語音助理代理
  • 工作流程自動化
  • 網路資安

資源庫

  • 部落格
  • 專案作品

社群

  • AI 自動化作業
  • Claude 技能

工具

  • 手機應用程式開發費用計算器
  • OpenAI / LLM API 費率計算器
  • MVP 開發費用計算器
  • 語音 AI 助理費用計算器

關於 TECHSY

  • 瀏覽
  • 合作夥伴
  • 聯絡我們
法律聲明私隱政策服務條款Cookies說明
TECHSY
© 2026 Techsy.保留所有權利。