首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Skills、Rules 与 MDC:AI 编程时代三大能力范式的辨析与协同

Skills、Rules 与 MDC:AI 编程时代三大能力范式的辨析与协同

作者头像
沈宥
发布2026-01-29 14:53:52
发布2026-01-29 14:53:52
6470
举报

摘要:在 2026 年 AI 原生开发(AI-Native Development)浪潮中,**Skills(技能)、Rules(规则) 与 MDC(Model-Driven Context,模型驱动上下文) 已成为构建智能编程代理的三大核心范式。三者常被混用,甚至被误认为可相互替代。本文将系统性剖析三者的定义、技术本质、适用场景与局限性,并通过真实工程案例论证:Skills 并不能完全取代 Rules 或 MDC,三者实为互补共存的“能力三角”**。文章还将提出一套融合三者的最佳实践框架,帮助团队构建高可靠、可维护、可演进的智能开发体系。


一、引言:为何需要厘清这三者的边界?

随着 Cursor、Antigravity、Coze 等平台纷纷推出“AI 能力扩展”机制,开发者面临一个关键问题:

“我该用 Skill、Rule 还是 MDC 来实现这个功能?”

例如,当团队希望“禁止在生产代码中使用 console.log”时:

  • 有人建议写一个 Skill
  • 有人主张配置一条 Rule
  • 还有人提到可通过 MDC 注入上下文来引导模型行为。

看似都能达成目标,但其背后的技术逻辑、维护成本、执行可靠性却天差地别。

若混淆使用,轻则导致提示词膨胀、响应延迟,重则引发安全漏洞或规范失效。因此,明确三者的定位与边界,是构建健壮 AI 工程体系的前提


二、定义与技术本质

2.1 Skills(技能):结构化 SOP 的可执行封装

定义

Skills 是将人类专家在特定任务中的标准操作流程(SOP) 封装为可复用、可调用、可版本化的 AI 能力单元。

技术特征

  • 主动触发:由用户指令(如 /review)或系统事件显式调用;
  • 完整上下文:包含输入、处理逻辑、输出格式、依赖资源;
  • 多模态支持:可结合提示词、脚本、模板、外部工具;
  • 独立闭环:一个 Skill 可完成端到端任务(如“审查 → 修复 → 测试”)。

典型结构(以 Cursor Native Skill 为例):

yaml编辑

代码语言:javascript
复制
name: "SecureLogger"
trigger: "/no-console"
prompt_template: |
  You are a security auditor. Replace all console.log with logger.info.
  Code:
  ```js
  {{selection}}

response_parser: { type: "diff" }

text编辑

代码语言:javascript
复制
**本质**:**任务导向的能力模块**,强调“做什么”和“怎么做”。

---

### 2.2 Rules(规则):约束性策略的声明式表达

**定义**:  
> Rules 是对 AI 行为施加的**硬性或软性约束**,用于确保输出符合安全、合规、风格等要求。

**技术特征**:
- **被动生效**:无需用户触发,自动应用于所有相关交互;
- **轻量高效**:通常以正则、关键词、AST 模式匹配实现;
- **低延迟**:在提示注入前或输出后快速过滤;
- **不可绕过**(理想情况下):即使模型“想”违规,也会被拦截。

**典型形式**:
- Antigravity 的 `rules/` 目录中的 `.rule` 文件;
- Cursor 的 `settings.json` 中的 `ai.rules` 配置;
- GitHub Copilot 的企业策略(Policy)。

**示例**(禁止 `console.log`):
```json
{
  "id": "no-console-in-prod",
  "type": "output_filter",
  "pattern": "console\\.log\  $ ",
  "action": "block",
  "message": "Use logger instead of console.log in production code."
}

本质边界守卫,强调“不能做什么”。


2.3 MDC(Model-Driven Context,模型驱动上下文):动态上下文的智能注入

定义

MDC 是一种根据当前开发上下文(文件类型、项目结构、依赖关系等)动态生成并注入提示词的机制,用于引导模型做出更贴合场景的决策。

技术特征

  • 隐式激活:随每次请求自动注入,用户无感知;
  • 上下文感知:基于 AST、符号表、Git 历史等深度分析;
  • 柔性引导:不强制约束,而是“暗示”最佳路径;
  • 高信息密度:可注入数千 token 的相关上下文。

典型实现

  • Cursor 的 “Contextual Awareness” 引擎;
  • Antigravity 的 context/ 模块;
  • Sourcegraph Cody 的 “Enhanced Context”。

示例: 当用户在 utils/auth.py 中输入 def login(,MDC 自动注入:

text编辑

代码语言:javascript
复制
Relevant context:
- This project uses OAuth2 with JWT tokens (see auth/jwt_handler.py)
- All login functions must call rate_limiter.check()
- Return type should be AuthResponse (defined in models.py)

本质智能导航仪,强调“应该往哪走”。


三、能力对比:一张表看懂差异

表格

维度

Skills

Rules

MDC

触发方式

显式(命令/事件)

隐式(全局生效)

隐式(每次请求)

作用时机

任务执行期

输入前 / 输出后

提示生成期

控制强度

建议性 → 强制性(取决于实现)

强制性(理想)

建议性

执行开销

高(可能调用脚本)

极低(正则匹配)

中(需上下文提取)

可定制性

极高(完整 SOP)

中(模式+动作)

高(上下文策略)

适用场景

复杂任务(审查、生成、测试)

安全红线、风格底线

智能补全、上下文理解

失败后果

任务未完成

风险未拦截

建议不精准

🔑 核心区别

  • Rules 是“刹车” —— 防止 AI 走错路;
  • MDC 是“地图” —— 告诉 AI 最佳路径;
  • Skills 是“司机” —— 执行具体驾驶任务。

四、案例剖析:三者如何协同工作?

场景:在 JavaScript 项目中安全地记录日志

步骤 1:MDC 提供上下文

当开发者在 src/api/user.js 中输入 console.,MDC 自动注入:

text编辑

代码语言:javascript
复制
Project context:
- 使用 Winston 作为日志库(package.json)
- 日志级别:info/warn/error
- 禁止记录 PII(个人身份信息)
- 示例:logger.info('User login', { userId: '***' })

→ 模型更可能建议 logger.info 而非 console.log

步骤 2:Rules 设置底线

即使模型仍输出 console.log,Rules 引擎会拦截:

json编辑

代码语言:javascript
复制
{ "pattern": "console\\.log\  $ ", "action": "replace", "with": "logger.info(" }

→ 自动替换或阻断提交。

步骤 3:Skills 提供主动服务

开发者选中一段含 console.log 的代码,输入 /migrate-logs,触发 LogMigrator Skill

  • 分析日志内容是否含 PII;
  • 自动脱敏;
  • 替换为 logger.info(...)
  • 添加缺失的 import logger from '../utils/logger'

→ 完成端到端迁移。

协同价值: MDC 减少错误发生,Rules 防止错误落地,Skills 主动修复历史问题。


五、Skills 能否完全替代 Rules 和 MDC?

5.1 为什么不能替代 Rules?

问题 1:响应延迟
  • Skill 需要显式调用,无法实时拦截每一次 console.log 输入;
  • 而 Rule 可在毫秒级完成匹配,适合高频、低延迟场景。
问题 2:覆盖盲区
  • 开发者可能忘记运行 Skill;
  • Rule 则 100% 覆盖所有输出,无遗漏。
问题 3:安全不可妥协
  • 对于 SQL 注入、硬编码密钥等高危问题,必须默认阻断
  • Skill 的“建议性”输出无法满足安全合规要求。

📌 结论Rules 是安全与合规的最后防线,不可由 Skill 替代


5.2 为什么不能替代 MDC?

问题 1:上下文缺失
  • Skill 通常只处理选中代码,缺乏全局视野;
  • MDC 可提供跨文件符号引用、架构约束等深层上下文。
问题 2:交互侵入性
  • 要求用户频繁输入 /xxx 会打断心流;
  • MDC 在后台静默工作,体验更流畅。
问题 3:泛化能力弱
  • Skill 针对特定任务优化,难以适应未知场景;
  • MDC 通过动态上下文注入,使模型具备“举一反三”的能力。

📌 结论MDC 是实现“智能感知”的基础,Skill 无法复制其上下文理解深度


六、反例警示:滥用 Skills 导致的工程灾难

案例 1:用 Skill 实现“禁止 print()”

某团队创建 NoPrintSkill,要求开发者每次提交前运行 /check-print

后果

  • 新人常忘记运行,导致 print() 泄露到生产环境;
  • CI 流程复杂化,需额外调用 Skill API;
  • 审查效率低下,远不如一条正则 Rule。

案例 2:用 Skill 替代 MDC 做智能补全

试图通过 Skill 注入项目文档到提示词。

后果

  • 提示词超长(>32K tokens),响应极慢;
  • 上下文静态,无法随光标位置动态更新;
  • 模型注意力分散,补全质量下降。

⚠️ 教训用错工具,事倍功半


七、最佳实践:构建“能力三角”协同框架

我们推荐以下分层架构:

text编辑

代码语言:javascript
复制
+---------------------+
                |      Skills         | ← 复杂任务(审查/生成/迁移)
                +----------+----------+
                           ↑
+------------------+       |       +------------------+
|      Rules       | ←─────+────→ |       MDC        |
| (安全/风格底线)  |               | (上下文智能引导) |
+------------------+               +------------------+
          ↑                               ↑
          +------------ 内核 --------------+
                    (AI Agent)

7.1 分工原则

表格

功能

推荐方案

禁止硬编码密码

Rule(正则匹配 + 阻断)

自动添加 license header

Skill(/add-license)

智能补全 React 组件 props

MDC(注入 TS 类型定义)

批量修复 ESLint 错误

Skill(/fix-lint)

防止 SQL 注入

Rule + Skill(Rule 拦截,Skill 修复)

7.2 配置示例(Cursor + Antigravity 混合)

yaml编辑

代码语言:javascript
复制
# .cursor/skills/secure-reviewer.yaml
name: "SecureCodeReviewer"
trigger: "/sec-review"
# ... Skill 配置

# rules/security.rule
pattern: "password\s*=\s*['\"].+['\"]"
action: block
severity: critical

# mdc/context-strategy.yaml
inject_on: ["*.py", "*.js"]
sources:
  - type: ast_symbols
  - type: git_history, max_commits: 10
  - type: project_docs, paths: ["SECURITY.md"]

八、未来演进:三者的融合趋势

尽管三者目前独立存在,但前沿平台已在探索融合:

  1. Rule 触发 Skill → 当 Rule 检测到问题,自动建议运行对应 Skill 修复。
  2. MDC 增强 Skill → Skill 执行时,自动加载 MDC 提供的上下文,提升准确性。
  3. Skill 生成 Rule → 通过分析 Skill 修复记录,自动生成新 Rule(如发现新型漏洞模式)。

🌐 终极形态一个自适应、自学习、自防护的智能开发体,其中:

  • MDC 提供感知,
  • Rules 提供免疫,
  • Skills 提供行动。

九、结语:各司其职,方成体系

回到最初的问题:“Skills 能否完全替代 Rules 和 MDC?”

答案清晰而坚定:不能,也不应

  • Rules 是底线,守护安全与规范的不可退让边界;
  • MDC 是眼睛,赋予 AI 理解复杂工程上下文的能力;
  • Skills 是双手,执行那些需要专业知识与步骤的任务。

三者如同“大脑、神经与肌肉”,缺一不可。真正的工程卓越,不在于追求单一技术的极致,而在于让不同能力在正确的位置发挥最大价值

在 AI 编程的新纪元,让我们摒弃“非此即彼”的思维,拥抱“协同共生”的智慧——因为最好的 AI 开发者,从来不是一个人,而是一个系统。


附录:术语对照表

表格

术语

全称

典型平台实现

Skills

Standardized Operational Procedures for AI Agents

Cursor Native Skills, Antigravity Skills

Rules

Declarative Policy Constraints

Antigravity Rules, GitHub Copilot Policies

MDC

Model-Driven Context

Cursor Contextual Awareness, Cody Enhanced Context

延伸阅读

  • 《The Three Layers of AI Programming》— Andrej Karpathy, 2025
  • Cursor 官方文档:https://cursor.sh/docs/skills-rules-context
  • Antigravity 能力架构白皮书:https://antigravity.google/whitepapers/agent-capabilities
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 质量工程与测开技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、引言:为何需要厘清这三者的边界?
  • 二、定义与技术本质
    • 2.1 Skills(技能):结构化 SOP 的可执行封装
    • 2.3 MDC(Model-Driven Context,模型驱动上下文):动态上下文的智能注入
  • 三、能力对比:一张表看懂差异
  • 四、案例剖析:三者如何协同工作?
    • 场景:在 JavaScript 项目中安全地记录日志
      • 步骤 1:MDC 提供上下文
      • 步骤 2:Rules 设置底线
      • 步骤 3:Skills 提供主动服务
  • 五、Skills 能否完全替代 Rules 和 MDC?
    • 5.1 为什么不能替代 Rules?
      • 问题 1:响应延迟
      • 问题 2:覆盖盲区
      • 问题 3:安全不可妥协
    • 5.2 为什么不能替代 MDC?
      • 问题 1:上下文缺失
      • 问题 2:交互侵入性
      • 问题 3:泛化能力弱
  • 六、反例警示:滥用 Skills 导致的工程灾难
    • 案例 1:用 Skill 实现“禁止 print()”
    • 案例 2:用 Skill 替代 MDC 做智能补全
  • 七、最佳实践:构建“能力三角”协同框架
    • 7.1 分工原则
    • 7.2 配置示例(Cursor + Antigravity 混合)
  • 八、未来演进:三者的融合趋势
  • 九、结语:各司其职,方成体系
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档