AI 程式設計教程中文版
從原理到實戰

MCP、Skills、Workflows 怎麼分工

解釋 Windsurf 裡外部工具、能力包、手動流程、Hooks 和專案規則的邊界,避免把所有自動化都堆進 MCP。

先一句話講清 MCP:MCP(Model Context Protocol,模型上下文協議) 是一套讓 AI 呼叫外部工具的標準介面——Cascade 透過它能查 GitHub issue、讀資料庫 schema、調內部 API。你可以把它理解成"AI 的 USB 介面":定一套通用規則,任何外部系統按這套規則接進來,Cascade 就能用。

Windsurf 裡最容易誤用的是 MCP。很多人看到 MCP 就想把所有東西都接進去,結果得到一堆許可權不清、輸出不穩、難維護的工具。正確做法是先判斷需求屬於外部能力、流程步驟、專案規則、複雜能力包,還是自動治理。

本篇目標:把 Rule、Workflow、Skill、Hook、MCP 的職責分開,讓每一層只做它應該做的事。

1. 五層分工

flowchart TB
    Need["想讓 Cascade 更會做事"] --> Rule["Rule / AGENTS.md"]
    Need --> Workflow["Workflow"]
    Need --> Skill["Skill"]
    Need --> Hook["Hook"]
    Need --> MCP["MCP"]
    Rule --> R1["持續行為約束"]
    Workflow --> W1["手動 slash command"]
    Skill --> S1["模型動態呼叫 + 支援檔案"]
    Hook --> H1["動作前後自動校驗/阻斷/日誌"]
    MCP --> M1["訪問外部服務和工具"]

    style MCP fill:#dbeafe,stroke:#2563eb,stroke-width:2px
    style Hook fill:#fee2e2,stroke:#dc2626,stroke-width:2px

判斷標準:

需求推薦機制
“每次修改前先讀專案邊界”AGENTS.md / Rule
“釋出前按固定步驟檢查”Workflow
“原始碼脫敏打包,需要指令碼、模板、檢查清單”Skill
“寫程式碼後自動跑 lint 或阻止讀 secrets”Hook
“查詢 GitHub PR、資料庫 schema、內部 API”MCP

2. MCP 只負責外部能力

MCP 是把 Cascade 接到外部工具和服務的協議層。官方 Windsurf MCP 頁面說明,Cascade 作為 MCP client,可以請求 MCP server 暴露的 tools。

適合接 MCP:

  • GitHub issue / PR / CI 狀態。
  • 資料庫 schema 或只讀查詢。
  • 內部搜尋服務。
  • 文件檢索。
  • 工單系統。
  • 瀏覽器或其他外部自動化工具。

不適合接 MCP:

  • “React 元件怎麼寫”。
  • “每次改動前先看 diff”。
  • “釋出前跑哪些檢查”。
  • “某目錄不能改”。

這些分別應該寫成 Rule、Workflow、Skill 或 Hook。

MCP 接入順序:

  1. 先接只讀 server。
  2. 只啟用必要 tools。
  3. token 用 env/file/OAuth,不寫死。
  4. 寫入型 tools 單獨審查。
  5. 團隊使用 registry、whitelist 和 owner 機制。

3. Workflow 是手動 runbook

Workflow 是 markdown 檔案,儲存在 .windsurf/workflows/ 或全域性目錄,透過 /workflow-name 手動呼叫。官方強調它是 manual-only,Cascade 不會自動呼叫。

適合:

  • /pre-release-check
  • /review-pr
  • /run-tests-and-fix
  • /security-scan
  • /deployment-check

Workflow 的優點是可控。你明確觸發它,它才執行。高風險流程應該優先用 workflow,而不是讓模型自動決定什麼時候開始釋出或改 PR。

4. Skill 是複雜能力包

Skill 是資料夾能力包,核心是 SKILL.md,可以帶 scripts、templates、checklists、references。官方說明 Windsurf 使用 progressive disclosure:預設只給模型看 skill 的 namedescription,完整材料只有被呼叫時載入。

適合 Skill:

  • 原始碼脫敏打包。
  • 安全審計。
  • 文件轉換。
  • 多步釋出檢查。
  • 標準化報告生成。
  • 帶指令碼和模板的團隊流程。

description 是觸發條件,不是普通簡介。寫得太泛會誤觸發,寫得太窄會用不上。

5. Hook 是自動治理

Hook 不是提示詞,也不是能力包。官方 Cascade Hooks 頁面說明,Hooks 會在 Cascade 的關鍵動作前後執行 shell command;pre-hook 可以用 exit code 2 阻斷動作。

適合 Hook:

  • 阻止讀取 secrets/
  • 寫入受保護檔案前要求人工處理。
  • 寫程式碼後自動跑 formatter、lint、test。
  • 記錄檔案讀取、寫入、命令執行和模型資訊。
  • 企業裝置統一安全策略。

不適合 Hook:

  • 長篇寫作規則。
  • 多步釋出 runbook。
  • 需要模板和指令碼的大能力包說明。

這些仍然應該分別放到 Rule、Workflow 或 Skill。

6. 一個 PR 處理例子

需求:讓 Windsurf 幫團隊處理 PR。

不要直接接一堆工具。先拆:

  • AGENTS.md:程式碼風格、禁止改動範圍、測試命令。
  • Workflow:/review-pr,規定 review 步驟和輸出格式。
  • Skill:如果 review 需要公司專用檢查表,把檢查表和指令碼做成 skill。
  • Hook:寫程式碼後自動跑格式化或阻斷敏感檔案修改。
  • MCP:只讀接 GitHub PR、issue、CI 狀態。

這樣每一層職責清楚,出問題也能定位。

7. 商業團隊安全順序

先做低許可權,再做高許可權:

  1. 寫 root AGENTS.md
  2. .codeiumignore
  3. 寫低風險 workflow。
  4. 寫需要模板/指令碼的 skill。
  5. 寫審計和阻斷 hook。
  6. 接只讀 MCP。
  7. 接寫入型 MCP。
  8. 對寫入型 MCP 加審批、日誌、owner 和撤權。

寫入型 MCP 是最後一步。它一旦接上,Cascade 就可能請求呼叫真實外部系統。沒有許可權模型和審計日誌,不要接生產寫許可權。

官方來源

  • Model Context Protocol (MCP) —— 官方 Windsurf MCP 文件。
  • Skills —— 官方 Skill、progressive disclosure、scope 和格式說明。
  • Workflows —— 官方 workflow、slash command、manual-only 和 precedence 說明。
  • Cascade Hooks —— 官方 hooks、pre/post、exit code 阻斷和配置層級說明。
  • Memories & Rules —— 官方 Rules、Workflows、Skills、Memories 的對比。

本篇自檢

  1. 哪些需求應該進 MCP,哪些不應該?
  2. Workflow 為什麼適合高風險手動流程?
  3. Skill 的 description 為什麼是觸發條件?
  4. Hook 和 Workflow 的核心差異是什麼?
  5. 寫入型 MCP 為什麼必須最後接?

接下來去哪

本頁目錄