廣告位招商中 歡迎洽談

研發團隊如何配置 Cursor 規則在多倉庫中統一架構模式與程式碼規範

365Finds Editorial
已收錄 11,430 篇 Wiki 文章

讓你的 AI 用上 365 Wiki

複製下方的提示詞,貼給你常用的 AI,然後直接提問。

下載完整版 Skill

先用提示詞體驗;經常使用時,安裝完整版 365Wiki Skill,以後無需重複複製。沒有常用 AI?Gemini、Microsoft Copilot 等網頁版也可以。

365Wiki Skill

研發團隊在推廣 Cursor 時,統一架構模式與程式碼規範的核心路徑為:從早期的單一根目錄檔案 .cursorrules 遷移至模組化專案規則(.cursor/rules/*.mdc),利用 YAML 前置元數據將規範劃分為全域核心約束與檔案路徑級(Glob)邊界,並透過 Cursor Team Rules(團隊規則控制台)或中心化 CI/CD 自動化工作流在跨程式碼倉庫間落實同步與版本治理。

若團隊在規模化使用 AI 開發工具時缺乏系統化約束,極易導致「AI 架構漂移」:不同工程師使用的底層模型生成風格歧異、頻繁幻覺引用已棄用的內部套件、跨層直連資料庫繞過領域服務,甚至在單體大倉(Monorepo)中製造不良的循環依賴。建立結構化、納入版本控制的 Cursor 規則體系,能在最大程度節省模型上下文 Token 的同時,為 AI 程式碼生成提供具確定性的工程邊界。


團隊級研發中的 AI 治理痛點

當組織級工程團隊引入 Cursor 時,開發者往往直接依賴通用基礎模型。模型缺乏團隊特有的架構脈絡,通常會引發以下協同問題:

解決這些問題的關鍵,在於技術架構師必須將組織規範轉化為持久化、隨程式碼庫版本同步演進的結構化規則。


Cursor 規則體系演進:從 .cursorrules 到模組化 .mdc

早期版本中,Cursor 主要依賴位於倉庫根目錄的單一 .cursorrules 純文字檔案。這種模式雖然向下相容,但存在顯著痛點:所有規範一次性全量載入至 Prompt,快速佔滿模型的上下文窗口(Context Window),導致指令互相干擾且模型注意力分散。

Cursor 當前的規範配置機制全面轉向基於 .cursor/rules/ 目錄的 專案規則(Project Rules),採用帶有 YAML Frontmatter 標頭的 .mdc(Markdown Cursor)檔案格式。

.mdc 規則檔案結構

每個 .mdc 檔案由頂部的 YAML 設定元數據與下方的 Markdown 具體技術指令組成:

---
description: 領域服務分層邊界與倉儲模式規範
globs: src/domains/**/*.ts, src/services/**/*.ts
alwaysApply: false
---

# 領域層架構規範

- 領域服務嚴禁直接讀取或解析 HTTP 上下文(例如 Request/Response)。
- 所有資料庫持久化異動必須透過倉儲介面(Repository Port)完成。

規則觸發模式與前置元數據

YAML Frontmatter 決定了該條規則在何種時機被注入模型的上下文:

設定欄位取值類型運作機制適用情境
alwaysApply: true布林值在每次 Chat、Composer 生成及行內編輯中均全域注入。倉庫級不可違背的基本底線、核心技術棧版本宣告、全域禁用套件。
globs: "path/**"Glob 字串或陣列僅在當前使用或正在編輯的檔案符合指定路徑模式時自動載入。分層架構規範,例如 React 伺服器端元件、資料倉儲層、API 路由規範。
description: "..."文字摘要當未設定 Glob 時,由 Cursor Agent 根據使用者 Prompt 語意智慧決定是否載入。偶發性特定工作,如資料庫遷移、安全合規審查、SDK 版本升級。
手動顯式引用不適用開發者在對話方塊或 Composer 中透過 @規則名稱 顯式呼叫。複雜跨模組重構方案、版本釋出查檢表等特殊流程。

技術架構師實戰規範藍圖

成熟的工程團隊應當將架構規範切分為權責單一的獨立 .mdc 檔案。以下是針對多層企業級專案的三個實戰配置模板。

1. 全域架構基線 (.cursor/rules/00-core-architecture.mdc)

此檔案作為倉庫頂層約束,在全專案範疇內持續生效。

---
description: 全域架構基線、基準技術棧選型與禁用相依套件清單
alwaysApply: true
---

# 全域架構與技術棧約束

## 技術棧基線
- Node.js 執行環境:v20 LTS
- TypeScript:v5.4+,啟用 `strict: true`
- 前端框架:Next.js App Router (v14+)
- 全域狀態管理:Zustand(嚴禁引入 Redux 或 MobX)

## 嚴格禁用的套件與模式
- 禁用:`axios`(統一使用封裝於 `@lib/api-client` 的原生 `fetch`)
- 禁用:`@company/ui-core-v1`(已棄用;必須使用 `@company/design-system-v2`)
- 禁用:`moment.js`(統一使用 `date-fns`)

## 程式碼品質硬性要求
- 嚴禁出現顯式 `any`;動態未知型別使用 `unknown` 並配合型別守衛。
- 採用提早返回(Guard Clauses),避免超過三層的深層巢狀 `if/else`。
- 嚴禁將金鑰、存取憑證或環境機密直接寫入原始碼中。

2. 後端領域層與整潔架構 (.cursor/rules/backend-services.mdc)

此檔案僅在開發者修改服務層或領域業務程式碼時動態載入,避免上下文浪費。

---
description: 後端領域服務六邊形架構與倉儲模式約束
globs: src/services/**/*.ts, src/domains/**/*.ts
alwaysApply: false
---

# 後端領域架構規範

## 職責邊界劃分
- 控制器(Controller)負責 HTTP 請求反序列化、參數驗證與狀態碼封裝。
- 領域服務(Service)封裝純商業邏輯。嚴禁將 Express 或 Fastify 的 `req`/`res` 物件傳入服務層。
- 倉儲層(Repository)封裝資料存取。服務層必須依賴倉儲介面抽象,嚴禁直接相依具體 ORM 實例。

## 實作範例對比

```typescript
// ✅ 正確:服務層依賴抽象倉儲介面,處理純領域實體
export class OrderService {
  constructor(private readonly orderRepository: OrderRepositoryPort) {}

  async processOrder(orderId: string): Promise<Result<Order>> {
    const order = await this.orderRepository.findById(orderId);
    if (!order) return Result.fail('Order not found');
    order.markPaid();
    await this.orderRepository.save(order);
    return Result.ok(order);
  }
}

// ❌ 錯誤:商業邏輯中直接耦合 ORM 實例與資料庫更新
export class OrderService {
  async processOrder(orderId: string) {
    await prisma.orders.update({ where: { id: orderId }, data: { status: 'PAID' } });
  }
}

### 3. 單元與整合測試規範 (`.cursor/rules/testing-standards.mdc`)

此檔案規範 AI 產生單元測試時的框架選型與斷言風格。

```markdown
---
description: 單元測試與整合測試撰寫標準及驗證要求
globs: **/*.test.ts, **/*.spec.ts, src/tests/**/*
alwaysApply: false
---

# 自動化測試規範

## 測試技術棧
- 測試執行器:Vitest
- Mock 工具:`vi.mock()`(嚴禁混用 Jest 執行環境)
- 斷言庫:`expect()` 配合型別明確的 Matcher

## 測試結構與組織規範
- 嚴格遵循 Arrange-Act-Assert(安排-執行-斷言)三段式結構。
- 單元測試與受測原始碼存放於同目錄:如 `feature.service.ts` 對應 `feature.service.test.ts`。
- 嚴禁在單元測試中發起真實外部網路連線或存取真實資料庫,必須在邊界進行 Mock。
- 每次產生測試必須涵蓋負面邊界案例(如參數缺失、權限不足、系統拋出例外等)。

跨倉庫規模化治理:單體大倉與多倉同步架構

針對不同組織規模的儲存庫型態,團隊應採取分層的規則治理架構。

                          企業級規則治理體系
                                  │
         ┌────────────────────────┴────────────────────────┐
         ▼                                                 ▼
   單體大倉模式 (Monorepo)                         多倉庫模式 (Polyrepo)
  ├── .cursor/rules/00-core.mdc                  ├── 規則中心倉:org-cursor-rules
  ├── .cursor/rules/apps-web.mdc (依應用 Glob)    ├── CI/CD 自動化校驗與同步流程
  └── .cursor/rules/shared-ui.mdc (依模組 Glob)   └── Cursor Team Rules(後台統一管控)

模式一:單體大倉(Monorepo)的分級路徑約束

在基於 Turborepo、Nx 或 pnpm workspaces 的單體大倉中,所有規則均位於根目錄 .cursor/rules/,但透過細緻的 Glob 達成實體隔離:

模式二:多程式碼倉庫的 CI/CD 程式碼化治理(Rules as Code)

針對微服務或分散式獨立倉庫,建議將 Cursor 規則視為版本化公共依賴套件進行維護:

  1. 建立中央規則倉庫: 設立專用 Git 倉庫(例如 github.com/org/cursor-rules-standards),統一維護標準 .mdc 檔案,並以語意化標籤(如 v1.2.0)發布版本。
  2. CI 漂移檢測機制: 在各微服務倉庫的 CI 流水線中加入檢驗任務,比對本地 .cursor/rules/ 是否與中央版本一致;若發現漂移則阻斷合併。
  3. 自動化同步工作流: 透過 GitHub Actions 或自動化腳本,當中央規範發布新版時,自動向所有相關下游倉庫發起 Pull Request 進行更新。

模式三:企業級 Cursor Team Rules 中心管控

採用 Cursor Team 或 Enterprise 方案的企業團隊,可直接啟用官方原生集中管理能力:


實務建議與避坑指南

治理目標推薦做法應避免的常見錯誤
節省 Token 消耗單一 .mdc 規則控制在 400 行以內;優先使用 globs 與 description 按需載入。濫用 alwaysApply: true 造成每次對話上下文皆被龐大規範佔滿。
強化指令依從性規則中務必提供具體的 ✅ 正確 與 ❌ 錯誤 程式碼對比範例。僅撰寫抽象的口號式指導原則(如「請產出高內聚、低耦合的優質程式碼」)。
錨定現有專案範本在規則中運用 @ 符號連結實際專案中的標竿檔案(例如 @src/domains/order.ts)。將數百行參考程式碼直接大段貼在 Markdown 規則之中。
落實縱深防禦機制將 Cursor 規則作為生成階段的前置指引,但必須維持 ESLint、Biome 與架構檢查工具在 CI 中的硬性把關。過度信任 AI 規則而撤除或放寬靜態型別與自動化檢查門檻。
生命週期同步更新團隊升級相依套件或調整專案目錄結構時,必須在同一 PR 中同步更新 .mdc 規則。專案架構已演進但規則長期未更新,導致 AI 持續生成過時的舊版模式。

透過將 Cursor 規則建構為模組化、路徑精確對齊的 .mdc 規範樹,並輔以中央 Git 流水線或 Team Rules 治理機制,研發團隊能夠在享受 AI 輔助開發高效率的同時,確保架構模式與程式碼規範在所有倉庫中嚴格落實。


參考資料