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 为什么必须最后接?

接下来去哪

本页目录