AI 如何改变世界:Skill、MCP、CLI 的架构分层与协作

AI 如何改变世界:Skill、MCP、CLI 的架构分层与协作

引言:一个看似”重复”的问题

如果你刚接触 AI Agent 的 Skill 和 MCP 机制,大概率会产生这样的疑问:

“Skill 不就是个能跑脚本的文件夹吗?和 CLI 有什么区别?MCP 不也是调远程工具吗?这三者难道不是在重复造轮子?”

这个直觉非常合理 —— 单看代码和最终执行,它们的底层确实都落在”跑一段代码”上。但把视角拉高,三者解决的是完全不同层次的问题。本文用一个极简的 Skill Demo 作为起点,逐层拆解这三者的定位、区别和共存逻辑。


一、Skill 是什么 —— 一个极简 Demo

先说清 Skill 长什么样。下面是一个完整的 project_env 技能,功能只有一句话:检查 PyTorch 项目环境是否就绪

目录结构

project_env/
├── SKILL.md   # 给 AI 看的"说明书"
└── main.py    # 真正干活的脚本

SKILL.md

---
name: project_env
description: 检查本 PyTorch 项目的运行环境是否就绪
---

# 环境检查技能

一句话:检查 Python、PyTorch、CUDA、项目依赖是否就绪。

## 使用示例

**输入:** `检查环境`
**输出:**
>>> 技能 [project_env] 开始执行
Python: 3.10.x
PyTorch: 2.4.x
CUDA 可用: True
项目依赖: requirements.txt (12 个包)
>>> 技能 [project_env] 执行完毕

## 工作原理(极简解释)

用户说"检查环境"
  → AI 匹配到 project_env 技能
  → AI 读取 SKILL.md,理解技能的意图
  → AI 执行 main.py
  → 脚本输出结果
  → AI 将结果呈现给用户

## 文件结构

project_env/
├── SKILL.md   ← AI 读这个文件来理解技能
└── main.py    ← 技能被调用时执行这个脚本

main.py

def run():
    import sys

    print(">>> 技能 [project_env] 开始执行")
    print(f"Python: {sys.version}")

    try:
        import torch
        print(f"PyTorch: {torch.__version__}")
        print(f"CUDA 可用: {torch.cuda.is_available()}")
    except ImportError:
        print("PyTorch: 未安装")

    import os
    req = os.path.join(os.path.dirname(__file__), "..", "..", "..", "requirements.txt")
    if os.path.exists(req):
        with open(req, encoding="utf-8") as f:
            count = sum(1 for _ in f)
        print(f"项目依赖: requirements.txt ({count} 个包)")
    else:
        print("项目依赖: 未找到 requirements.txt")

    print(">>> 技能 [project_env] 执行完毕")


if __name__ == "__main__":
    run()

实际运行结果

>>> 技能 [project_env] 开始执行
Python: 3.14.3
PyTorch: 2.11.0+cpu
CUDA 可用: False
项目依赖: requirements.txt (23 个包)
>>> 技能 [project_env] 执行完毕

到这里,你很可能觉得:”这和一个普通 Python 脚本有什么区别?”

是的,单看工具代码本身,没有任何区别。 但关键不在于工具,而在于工具被谁、以什么方式发现和调用。


二、Skill vs CLI —— “调用方式变了”本身就是革命

2.1 适配方向的反转

传统 CLI:   人 ──必须适应──→ 工具的语法和参数
                           ↑
                      人做适配工作

技能模式:   人 ──说意图──→ AI ──适配──→ 工具
                                     ↑
                               AI 做适配工作

CLI 的调用链路是人 → 记参数 → 敲命令 → 解读输出,每一步都需要人的认知参与。

Skill 的调用链路是人 → 说意图 → AI 读说明书 → AI 执行 → AI 解读结果。适配成本的承担者从人变成了系统。

2.2 历史上每次都如此

时代 工具本质 交互方式 适配者
DOS 程序还是程序 命令行
GUI 桌面 程序还是程序 鼠标点击、窗口 人(门槛降低但仍在)
搜索引擎 数据还是数据 关键词
移动互联网 程序还是程序 触摸、语音
AI Agent + Skill 程序还是程序 意图表达 AI

每次交互方式的跃迁,驱动它的都不是”工具代码变高级了”,而是适配负担的转移。这一轮的不同在于:适配者从人变成了 AI,这是质变而不仅仅是量变。

2.3 另一个被低估的变化:工具组合的自由度

独立 CLI 工具要协作,人需要学每个工具的接口、写胶水脚本。但当 AI 同时持有多个 Skill 的说明书后,可以临场编排组合

用户:"检查环境没问题后,跑一遍所有示例脚本,把失败的列出来"

AI 内部编排:
  project_env → 遍历 examples/*.py → 收集报错 → 生成报告

两个 Skill 的作者从未考虑过彼此的存在,但 AI 在现场把它们缝到了一起。这是 CLI 独立运行无法做到的。


三、Skill vs MCP —— 不同层次的分工

当理解了 Skill 之后,下一个自然的问题是:MCP 又是什么?和 Skill 有什么不同?

3.1 三者定位速览

维度 CLI Skill MCP
本质 工具的原始接口 工具的 AI 说明书 工具的标准化协议
谁用 AI(通过读 SKILL.md) AI(通过协议规范)
作用域 单次执行 项目级、上下文绑定 跨项目、服务级
发现机制 人知道它存在 AI 扫描目录匹配 协议握手注册
输入输出 命令行参数 文本流 结构化 JSON
可组合性 人手动编排 AI 自动编排 AI 自动编排
跨项目复用 复制粘贴 需拷贝到每个项目 一次部署到处可用

3.2 核心差异

Skill(本地版):
  项目里放脚本 + 说明书
  AI 看到后:读 → 跑 → 解读

MCP(协议版):
  远程服务实现标准协议
  AI 看到后:通过协议调用 → 获取结构化结果

3.3 为什么不是”选一个就行”

三者解决的是不同层次的问题:

═══════════════════════════════════════════
  层次         解决什么          怎么解
═══════════════════════════════════════════
  CLI       工具"能不能跑"    参数定义、入口
  Skill     工具"AI 会不会用"  说明书、上下文
  MCP       工具"AI 能不能找到" 协议、注册、标准化
═══════════════════════════════════════════

一个比喻:

CLI 是插座(通电标准)
Skill 是电器说明书(告诉 AI 这个电器怎么用)
MCP 是物联网协议(让电器能被远程发现和控制)

你的微波炉面板(CLI)一直都在,智能家居 App(MCP)让它能被远程调用,而电器说明书(Skill)让新来的管家(AI)知道这东西是加热食物的。三样东西解决三个不同问题,不存在谁替代谁。

3.4 三者的合理共存

一个典型的 AI 编程助手架构:

MCP :     GitHub MCP      数据库 MCP     自定义 MCP 
             (远端服务)       (远端服务)       (本地服务)  
           └──────┬───────┘   └──────┬───────┘   └──────┬───────┘
                                                      
           ┌──────┴──────────────────┴──────────────────┴───────┐
                               AI 编排层                        
             同时持有全部 tool list,按需调度                    
           └──────┬───────────────────┬─────────────────────────┘
                                     
Skill :  ┌──────┴──────┐    ┌──────┴──────┐
           project_env       code_check      项目专属,携带项目上下文
          └──────┬──────┘    └──────┬──────┘
                                   
CLI :   ┌──────┴──────────────────┴──────┐
                  python main.py ...           最终都是执行命令
          └─────────────────────────────────┘

MCP 回答”AI 能接触哪些工具”(横向扩展),Skill 回答”在这个项目里工具是什么、怎么用”(纵向深度),CLI 是它们共同的执行基础。不是重复,是分层。


四、AI 改变外部世界的完整能力矩阵

Skill 和 MCP 只是 AI 工具箱里靠上层的两个封装。AI 真正触达物理世界的方式远不止这两条路径:

4.1 六层能力

层级 方式 形态示例
文件系统 读/写/删/搜文件 创建 main.py、修改配置
终端命令 执行任意 shell 命令 pip install、git push、docker up
网络请求 HTTP/API 调用外部服务 GitHub API、Slack Webhook
代码生成 制造新工具并落地 生成脚手架代码、创建新模块
浏览器操作 操作 DOM、填表单 自动化测试、操作无 API 的系统
数据库/OS 读写数据、管理进程 查日志、启停服务

4.2 Skill 和 MCP 在这张图里的位置

                         ┌─────────────┐
                         │  外部服务     │
                         │  (GitHub,    │
                         │   Slack,     │
                         │   数据库)    │
                         └──────┬──────┘
                                │ HTTP / API
┌──────────┐    ┌──────┐   ┌───┴──────────┐
│  用户     │    │      │   │  网络请求     │
│ "检查环境"├───→│  AI  ├──→│  requests     │
└──────────┘    │      │   └──────────────┘
                │      │
                │      ├──→┌──────────────┐
                │      │   │  终端命令     │  → git, pip, docker...
                │      │   │  subprocess   │
                │      │   └──────────────┘
                │      │
                │      ├──→┌──────────────┐
                │      │   │  文件系统     │  → 读/写/删/搜
                │      │   │  open/fwrite  │
                │      │   └──────────────┘
                │      │
                │      ├──→┌──────────────┐
                │      │   │  代码生成     │  → 创造新文件/工具
                │      │   │  Write()      │
                │      │   └──────────────┘
                │      │
                │      ├──→┌──────────────┐
                │      │   │  Skill        │  ← 给上面四条配说明书
                │      │   │  (项目级封装) │
                │      │   └──────────────┘
                │      │
                │      └──→┌──────────────┐
                │          │  MCP          │  ← 给网络请求配协议
                │          │  (标准协议)   │
                │          └──────────────┘

4.3 各层的角色定位

角色
文件系统 / Shell / HTTP 底层能力 — AI 真正改变世界的物理通道
Skill 项目级知识封装 — 让 AI 知道在这个项目里该怎么用底层能力
MCP 跨项目协议封装 — 让 AI 用统一方式对接外部服务
代码生成 创造新能力 — AI 自己造工具,改变能力的边界

五、一个技能的内部参数流

project_env 为例,从用户输入到结果显示的完整链路:

用户: "检查环境"
  │
  ▼
AI 扫描 .trae/skills/ 目录
  │
  ├─ 命中 project_env(SKILL.md name 匹配)
  │
  ▼
AI 读取 SKILL.md
  │
  ├─ 知道功能:检查 Python/PyTorch/CUDA/依赖
  │
  ▼
AI 执行 python main.py
  │
  ▼
脚本输出:
  Python: 3.14.3
  PyTorch: 2.11.0+cpu
  CUDA 可用: False
  项目依赖: requirements.txt (23 个包)
  │
  ▼
AI 解读结果 → 呈现给用户

对于参数更复杂的 Skill(比如前面的 test_skill 支持 --show-hidden--sort-by),流程一样:

用户: "技能测试 examples --sort-by size"
  │
  ▼
AI 理解为: python main.py examples --sort-by size
  │
  ▼
argparse 解析参数 → list_directory() 函数 → 返回结果

无论是零参数还是多参数,AI 都在中间充当了翻译官的角色——把人话翻译成脚本能懂的参数组合。


六、技能目录可以装什么

一个技能目录本质上是一个微型工作空间。除了 SKILL.mdmain.py,常见的文件类型有:

文件类型 示例 作用
配置文件 config.json / config.yaml 技能的默认参数、开关
辅助脚本 utils.py / helpers.py main.py 引用的公共函数
模板文件 report.md / email.html 输出格式化模板
测试脚本 test_main.py 技能自身的单元测试
依赖声明 requirements.txt 技能专属的第三方包
数据文件 rules.csv / schema.json 规则、映射表等参考数据
示例资源 sample_input.txt 演示用的输入输出样例

一个复杂的”代码质量检查”技能可能是这样的:

code_check/
├── SKILL.md
├── main.py
├── config.yaml
├── checks/
│   ├── pep8.py
│   ├── complexity.py
│   └── naming.py
├── templates/
│   └── report.md
├── rules/
│   └── ignore_list.txt
└── tests/
    └── test_checks.py

七、结语

回到最开始的三个疑问:

“Skill 和 CLI 有何区别,是否重复?”

CLI 是工具的执行接口,Skill 是在其上加了一本 AI 可读的说明书。没有说明书,AI 不知道工具的存在和用法;没有 CLI,说明书没有可驱动的东西。它们是”方向盘”和”驾驶指南”的关系,不是重复。

“Skill 和 MCP 有何区别,为何要并存?”

Skill 解决”在这个项目里 AI 该怎么用这个工具”,MCP 解决”AI 如何发现和对接一个标准化的远程工具”。Skill 是项目级、上下文绑定的,MCP 是跨项目、协议标准化的。一个是本地说明书,一个是远程协议标准——各管一层。

“除了 MCP 和 Skill,AI 还有哪些方式改变外部世界?”

文件读写、Shell 执行、HTTP 调用、代码生成、浏览器操作——这五者是 AI 改变世界的底层物理通道。Skill 和 MCP 只是在这五个通道之上加了知识层和协议层,让 AI 知道”什么时候该走哪条通道、怎么走、走到哪里算成功”。

最终一句话:底层能力是”手脚”,Skill 是”使用手册”,MCP 是”通讯协议”,代码生成是”造新工具的能力”。四者各司其职,共同构成了 AI 与外部世界交互的完整图景。


本文基于 Trae IDE 的技能系统实际开发经验撰写。文中 demo 代码可在项目 .trae/skills/ 目录下查看。

作者: cavalier

能源行业从业者,业余爱好象棋、C++还有二胡、乒乓也很喜欢

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注