Docs · App Dev Guide

大模型应用开发

从 Prompt 工程到 AI Agent,一站式覆盖大模型应用开发全链路 —— 让你能在 1 周内跑出生产级 MVP。

Skills · vs Tool / MCP

Prompt / Function Call / MCP / Skills 四者经常被混淆。这一章把每个的本质和适用场景讲透。

一张图理解四者层级

┌────────────────────────────────────────────────┐
      │                                                │
      │            ┌─────────────────────┐             │
      │            │      Skills         │ ← 任务级能力 │
      │            │  (prompt + tools    │   按需加载   │
      │            │  + templates +      │   完整方法论 │
      │            │  examples)          │             │
      │            └──────────┬──────────┘             │
      │                       │                        │
      │              使用     │     使用                │
      │           ┌───────────┴────────────┐           │
      │           ↓                        ↓           │
      │  ┌──────────────┐         ┌──────────────┐    │
      │  │ Function Call│         │     MCP      │    │
      │  │              │         │              │    │
      │  │ 程序内函数    │         │  跨程序协议   │    │
      │  │ 调用         │         │  标准化       │    │
      │  └──────┬───────┘         └──────┬───────┘    │
      │         │                        │             │
      │         └──────────┬─────────────┘             │
      │                    ↓                           │
      │           ┌──────────────────┐                 │
      │           │     Prompt       │ ← 原子级指令    │
      │           │   (指令文本)      │                 │
      │           └──────────────────┘                 │
      │                                                │
      └────────────────────────────────────────────────┘

四者本质区别

抽象层是什么解决什么问题何时引入
Prompt文字指令让模型理解任务2020+(LLM 诞生即有)
Function Call程序内函数调用让模型能调外部 API2023.6(GPT 首次推出)
MCP跨程序协议让工具能复用、跨平台2024.11(Anthropic)
Skills任务级能力包让复杂任务方法论可复用2025(Claude)

关键差异维度

1. 复用粒度

Prompt:     无法复用(每次重写或简单复制)
      FC:         单函数复用(同一程序内)
      MCP:        函数集复用(跨程序、跨用户)
      Skills:     任务方法论复用(一整套 prompt + 工具 + 示例)

2. 加载方式

Prompt:     全程占 context
      FC:         tool 定义全程占 context(即使没调用)
      MCP:        tool 定义全程占 context
      Skills:     按需加载(关键差异!)

100 个 Skills 索引可能就 500 token;如果每个都全量加载,可能 50000 token。

3. 谁来决策

Prompt:    用户决定(写什么用什么)
      FC:        模型决定(用哪个 tool)
      MCP:       模型决定(用哪个 tool,跨 Server 选)
      Skills:    模型决定(先选 Skill,再让 Skill 内部选 tool)

4. 谁负责实现

Prompt:    应用开发者
      FC:        应用开发者(写函数 + 注册 schema)
      MCP:       Server 作者(任何人)→ Client 即插即用
      Skills:    Skill 作者(任何人)→ Agent 加载即用

何时用什么:决策树

你的需求是什么?
      │
      ├─ 单次对话 / 简单生成
      │  → Prompt
      │
      ├─ 让模型调某个内部 API
      │  ├─ 只在自己应用用 → Function Call
      │  └─ 想跨应用共享 → MCP Server
      │
      ├─ 让模型操作某个标准化工具(GitHub / Slack / DB)
      │  → 直接用现成的 MCP Server
      │
      ├─ 整套完整任务方法论(含多步骤、多工具、模板、示例)
      │  ├─ 一次性 → 直接写大 prompt + FC
      │  └─ 复用 → 封装为 Skill
      │
      └─ 复杂业务流程 + 多 Skill 协作
         → Skills + Agent SDK

三个 vs 对比

Skills vs Function Call

SkillsFC
定位任务级函数级
包含一整套方法论单个函数
加载按需全程在 context
例子"数据分析师" Skillquery_database() 函数

关系:Skills 内部使用 FC(Skill 里可以包含多个 FC)。

Skills vs MCP

SkillsMCP
本质能力封装通信协议
关注点「怎么做某事」「怎么标准化对接」
部署文件/目录形式加载独立进程
跨厂商Claude 生态(暂时)通用协议

关系:Skills 可以使用 MCP Server 提供的工具。Skill 里可以列出"用这个 MCP Server 的某些工具"。

MCP vs Function Call

MCPFC
标准化是(行业协议)否(各厂商不同)
部署独立进程在应用代码内
跨用户同一 Server 全网可用每用户/每应用单独写
性能多一层 IPC直接函数调用

关系:MCP 是 FC 的标准化包装 —— Server 内部还是用 FC 实现。

实例对比:同一需求的 4 种实现

需求:「让 AI 帮我做季度销售报告」

方案 A: 纯 Prompt(最简单,最不可扩展)

prompt = """
      你是数据分析专家。请基于以下销售数据生成 Q3 报告:
      [销售数据 CSV 内容]
      
      要求:
      1. 总销售额和环比
      2. Top 5 产品
      3. 区域分布
      4. 趋势预测
      
      输出:Markdown 格式
      """
      result = claude(prompt)

✅ 简单 ❌ 数据要手动塞 prompt,没法处理大文件 ❌ 没法生成真实图表 ❌ 换个时间段就要重写 prompt

方案 B: Prompt + Function Call

tools = [
          {"name": "read_csv", "input_schema": {...}},
          {"name": "compute_stats", "input_schema": {...}},
          {"name": "generate_chart", "input_schema": {...}},
          {"name": "write_pdf", "input_schema": {...}}
      ]
      
      messages = [{"role":"user", "content":"基于 q3_sales.csv 生成 PDF 报告"}]
      
      # 用循环跑 tool calls
      while True:
          resp = client.messages.create(model="...", tools=tools, messages=messages)
          if resp.stop_reason != "tool_use": break
          # 处理 tool_use ...

✅ 能处理大数据 ✅ 真实生成 PDF ❌ 一整套 tools 每次都占 context ❌ "怎么写好报告"的方法论散落在 prompt 里 ❌ 不同团队重复实现

方案 C: 用 MCP Server

// Claude Desktop 配置
      {
          "mcpServers": {
              "data": {
                  "command": "npx",
                  "args": ["-y", "@mycompany/sales-mcp-server"]
              }
          }
      }

用户在 Claude Desktop 里:"读 q3_sales.csv 生成报告"

✅ 工具跨用户共享(公司全员可用) ✅ MCP Server 一次部署,所有客户端用 ❌ 还是"工具集合",缺少"完整任务模板" ❌ 用户每次还得手写"怎么生成好报告"

方案 D: 封装为 Skill

skills/sales_report_generator/
      ├── SKILL.md                    ← 完整方法论
      ├── tools/
      │   ├── read_csv.py
      │   ├── compute_stats.py
      │   └── generate_chart.py
      ├── templates/
      │   └── q_report.jinja2          ← 报告模板
      └── examples/
          └── good_q3_report.md        ← 优秀案例
<!-- SKILL.md -->
      # Sales Report Generator
      
      ## When to use
      当用户需要生成销售相关报告时使用。
      
      ## Tools available
      - read_csv: 读取 CSV 数据
      - compute_stats: 计算统计指标
      - generate_chart: 生成可视化
      
      ## Process
      1. 用 read_csv 加载数据
      2. 用 compute_stats 计算: 总额、环比、Top 产品、区域分布
      3. 用 generate_chart 生成: 趋势图、饼图
      4. 套用 templates/q_report.jinja2 生成最终报告
      5. 输出 Markdown,结构参考 examples/good_q3_report.md

使用:

agent = ClaudeAgent(skills=["sales_report_generator"])
      agent.run("基于 q3_sales.csv 生成报告")
      # Claude 自动:
      # 1. 识别需要 sales_report_generator Skill
      # 2. 加载该 Skill 完整内容
      # 3. 按 Process 执行
      # 4. 输出符合 templates 的报告

✅ 方法论可分享(其他团队直接拿来用) ✅ 按需加载(不用时不占 context) ✅ 一致性高(template 保证产出风格统一) ✅ 易维护(要改报告格式只改 template)

这就是 Skills 的核心价值

何时升级到 Skills

按以下信号判断从 FC/MCP 升级到 Skills:

该用 Skills:

  • 同一任务被反复实现(说明有方法论可沉淀)
  • prompt 越来越长(按需加载省 token)
  • 团队希望分享"做某事的最佳实践"
  • 产品形态是 Agent / 助手

暂时不用:

  • 单一简单工具(FC 够了)
  • 一次性脚本
  • 不用 Claude 生态

Skills 的"灰色地带"

Skills + MCP

Skills 内部可以调 MCP Server。例如:

<!-- SKILL.md -->
      ## Tools available
      - github (from MCP server `@modelcontextprotocol/server-github`)
      - slack (from MCP server `@modelcontextprotocol/server-slack`)

这样 Skill 不需要自己实现 GitHub 集成,复用社区 MCP Server。

Skills + 多个 LLM

Skills 内部可以指定不同步骤用不同模型:

## Process
      1. 用 Haiku(便宜)做意图分类
      2. 用 Sonnet 做主要分析
      3. 用 Sonnet Thinking 做关键决策

这种"模型路由"是 Skills 高级用法。

总结:四者的协同

真实生产架构:
      
      Skills           ←  封装业务方法论
         ↓
      Function Call    ←  本地小工具
      + MCP Servers    ←  跨平台标准工具
         ↓
      Prompt           ←  指令文本
         ↓
      LLM API(Claude / GPT / DeepSeek)

不是"二选一",而是分层使用

学习路径建议

按这个顺序学习,每一层为下一层打基础:

Week 1: Prompt 工程(100-107)
         ↓
      Week 2: Function Call(200-204)
         ↓
      Week 3: MCP(400-403)
         ↓
      Week 4: Skills(500-503)← 你在这里
         ↓
      Week 5+: Agent(600-604

每往上一层,抽象度变高、复用粒度变大

下一节:编写 Skill —— 动手做一个真实可用的 Skill。