AI Agent 生态核心概念详解:Agent、MCP、Skill 与 JSON-RPC
一、Agent(智能体)
1.1 什么是 Agent?
Agent(智能体) 是一个能够感知环境、自主决策并执行行动以实现目标的智能实体。
通俗理解:
- 传统 AI(如 ChatGPT):只会"说"的博学顾问
- Agent:有"手和脚"的顾问,能订票、发邮件、查数据库
1.2 Agent 的核心特征
| 特征 | 说明 |
|---|---|
| 自主性 | 无需人类持续干预 |
| 感知能力 | 能接收文本、图像、传感器等环境信息 |
| 推理决策 | 能制定计划、分解任务、选择行动 |
| 行动执行 | 能调用工具、API、代码完成操作 |
| 目标导向 | 所有行动服务于特定目标 |
1.3 Agent 的核心组成架构┌─────────────────────────────────────────────────┐
│ Agent 系统 │
├─────────────────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────┐ │
│ │ 大脑 │ │ 感知 │ │ 规划 │ │ 行动 │ │
│ │ (LLM) │──│ 模块 │──│ 模块 │──│ 模块 │ │
│ └─────────┘ └─────────┘ └─────────┘ └──────┘ │
│ ↑ ↑ ↑ ↑ │
│ └────────────┴────────────┴───────────┘ │
│ 协同工作 │
└─────────────────────────────────────────────────┘
各模块职责:
- 大脑(LLM):核心推理引擎,负责理解、规划、决策
- 感知模块:接收用户输入、环境反馈、工具返回结果
- 规划模块:将复杂任务分解为步骤,形成执行计划
- 行动模块:调用工具(API、代码、数据库、浏览器等)
1.4 Agent 的典型工作流程
用户目标 → 感知 → 规划(任务分解)→ 调用工具行动 → 观察结果 → 重新规划(循环)→ 最终输出
示例:求职 Agent 完成"找到匹配的AI岗位并申请"
- 读取用户简历(感知)
- 规划:搜索→筛选→排序→生成申请信→发送
- 调用 LinkedIn 搜索 API
- 分析职位描述匹配度
- 调用 LLM 生成定制申请信
- 调用邮件 API 发送
- 汇报结果
1.5 Agent 的类型
| 类型 | 特点 | 示例 |
|---|---|---|
| 单任务 Agent | 完成一个明确任务 | "总结这份PDF" |
| 多步推理 Agent | 分解复杂任务逐步执行 | "分析销售数据并生成报告" |
| ReAct 模式 Agent | 推理(Reasoning)+行动(Acting)交替循环 | 边做边想的自动客服 |
| 多 Agent 系统 | 多个专门 Agent 协作 | 规划Agent+执行Agent+检查Agent |
| 自主 Agent | 长期运行,持续监控环境 | 自动交易机器人 |
二、MCP(模型上下文协议)
2.1 什么是 MCP?
MCP(Model Context Protocol) 是 Anthropic 推出的开源标准协议,目的是统一 AI 与外部工具的连接方式。
一句话类比 :MCP 之于 AI,就像 USB-C 之于电脑。
2.2 MCP 解决的核心问题
| 痛点 | 具体表现 | MCP 解决方案 |
|---|---|---|
| 碎片化 | 每个模型的工具调用格式不同 | 统一协议标准 |
| 高耦合 | 工具逻辑与模型代码深度绑定 | 解耦,独立维护 |
| 上下文丢失 | 多轮调用时状态管理复杂 | 标准化上下文传递 |
价值:将 M×N 的集成问题(M个模型 × N个工具 = M×N个连接器)简化为 M+N 个适配器。
2.3 MCP 的核心架构
┌─────────────────────────────────────────────────────────────┐
│ 应用主机 (Host) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 客户端 (Client) │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────┬───────────────────────────────┘
│
┌───────────────────┼───────────────────┐
↓ ↓ ↓
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Server │ │ Server │ │ Server │
│ (本地) │ │ (数据库) │ │ (云端API)│
└──────────┘ └──────────┘ └──────────┘
三个核心角色:
| 角色 | 职责 | 类比 |
|---|---|---|
| 主机 Host | 承载AI应用的容器 | 电脑本身 |
| 客户端 Client | 建立连接、标准化请求、安全认证 | USB接口 |
| 服务器 Server | 暴露具体工具能力 | 鼠标/U盘等外设 |
2.4 MCP 的工作流程
用户:"查一下北京今天的天气"
↓
【主机 Host】接收用户请求
↓
【客户端 Client】分析意图,生成标准化工具调用请求
↓
{
"tool_name": "get_weather",
"parameters": {"city": "北京", "unit": "celsius"}
}
↓
【服务器 Server】路由到对应工具,执行天气API调用
↓
服务器返回结果
↓
主机将结果呈现给用户:"北京今天25°C,晴天"
2.5 MCP vs Agent 的关系
| 维度 | MCP | Agent |
|---|---|---|
| 角色定位 | 标准化连接器 | 智能决策中枢 |
| 核心职能 | "如何安全调用工具" | "做什么、用什么工具、怎么做" |
| 类比 | USB接口标准 | 操作系统 |
| 解决什么 | 工具集成的碎片化问题 | 复杂任务的规划、执行、反思 |
黄金组合 :
用户目标 → AI Agent(决策中枢)→ MCP网关(标准化调用)→ 工具池
↑ ↑
做什么、为什么 如何安全地做
三、Skill(技能)
3.1 什么是 Skill?
Skill(技能) 是 Claude 的一种可复用能力包 ------它是一个包含指令、脚本和资源的文件夹,Claude 在需要相关任务时动态加载,从而在特定领域表现得像专家一样。
一句话类比 :Skill 之于 Claude,就像 "岗位操作手册"之于新员工。
3.2 Skill 解决的核心问题
| 痛点 | 具体表现 | Skill 解决方案 |
|---|---|---|
| 重复解释 | 每次都要重新说明格式规范 | 把规范打包成Skill,永久生效 |
| 质量不稳定 | 同任务不同时间效果差异大 | 用标准化指令固化流程 |
| 知识流失 | 最佳实践无法跨对话复用 | Skill 是跨对话持久化资产 |
| 复杂任务难执行 | 纯文字指令无法精确操作 | Skill 可附带脚本执行精确操作 |
3.3 Skill 的目录结构
my-skill/ ← 技能根目录
├── SKILL.md ← 【必需】技能的核心指令文件
├── reference.md ← 【可选】参考文档
├── examples.md ← 【可选】使用示例
├── scripts/ ← 【可选】可执行脚本
│ └── helper.py
└── templates/ ← 【可选】模板文件
└── template.docx
3.4 SKILL.md 的结构
c
name: 品牌指南 # 技能名称(≤64字符)
description: 应用公司品牌规范到所有演示文稿和文档
version: 1.0.0 # 可选,版本号
dependencies: # 可选,依赖包
- python>=3.8
3.5 渐进披露架构(省上下文的关键)
第一层:元数据扫描
↓ (仅加载 ~100 tokens)
Claude 读取所有 Skill 的 name + description,快速判断哪些相关
↓ (发现相关Skill)
第二层:核心指令加载
↓ (加载完整SKILL.md,约5k tokens)
Claude 读取详细的执行步骤和规范
↓ (需要执行精确操作)
第三层:脚本/资源按需加载
↓
Claude 调用 scripts/ 中的代码执行具体任务
3.6 Skill vs MCP vs Prompt vs Project
| 维度 | Skill | MCP | Prompt | Project |
|---|---|---|---|---|
| 本质 | 流程+经验的说明书 | 外部系统的连接器 | 临时的对话指令 | 持续的知识环境 |
| 回答的问题 | "怎么做好这件事?" | "怎么连接外部系统?" | "现在要做什么?" | "需要知道什么背景?" |
| 生命周期 | 跨对话持久化 | 会话级连接 | 单次对话即丢失 | 项目级持续 |
| 是否自动 | 自动按需加载 | 显式调用 | 手动输入 | 始终加载 |
协作示例:基于CRM数据生成销售报告
-
MCP:连接到 Salesforce/CRM,拉取原始数据
-
Skill:教 Claude 如何分析数据------"先做同比环比、再做品类排名"
-
Prompt:你临时说的"把数字保留两位小数"
-
Project:存放公司产品信息和历史销售数据的知识库
四、JSON-RPC 2.0 协议
4.1 什么是 JSON-RPC?
JSON-RPC 2.0 是一个轻量级的远程过程调用协议 ,使用 JSON 作为数据格式。核心思想:让你像调用本地函数一样调用远程服务。
4.2 核心概念对比
| 方式 | 本质 | 代码示例 |
|---|---|---|
| 传统 HTTP API | 发送请求,告诉服务器"做什么" | POST /getUser + {"id": 123} |
| JSON-RPC | 调用函数,告诉服务器"执行哪个方法" | {"method": "getUser", "params": [123]} |
4.3 请求格式
一个 JSON-RPC 请求包含以下字段:
json
{
"jsonrpc": "2.0", // 固定,协议版本
"method": "subtract", // 要调用的方法名
"params": 42, 23, // 参数(可以是数组或对象)
"id": 1 // 请求ID,用于匹配响应
}
参数两种形式:
-
按位置 :
"params": [42, 23](数组) -
按名称 :
"params": {"minuend": 42, "subtrahend": 23}(对象)
4.4 响应格式
成功响应:
json
{
"jsonrpc": "2.0",
"result": 19, // 执行结果
"id": 1 // 对应请求的ID
}
错误响应:
json
{
"jsonrpc": "2.0",
"error": {
"code": -32601, // 错误码
"message": "Method not found",
"data": null
},
"id": 1
}
4.5 通知(Notification)
通知是一种不需要响应 的请求,没有 id 字段:
json
{
"jsonrpc": "2.0",
"method": "log_message",
"params": "User logged in"
}
// 服务器不会返回任何响应
4.6 标准错误码
| 错误码 | 含义 | 说明 |
|---|---|---|
| -32700 | Parse error | JSON 格式无效 |
| -32600 | Invalid Request | 请求对象无效 |
| -32601 | Method not found | 方法不存在 |
| -32602 | Invalid params | 参数无效 |
| -32603 | Internal error | 内部错误 |
| -32000 ~ -32099 | Server error | 服务器自定义错误 |
4.7 JSON-RPC 的优势
| 特点 | 说明 |
|---|---|
| 极简 | 只需 6 个字段,没有任何冗余 |
| 语言无关 | JSON 通用,任何语言都可实现 |
| 传输无关 | 可跑在 HTTP、WebSocket、stdio 等任何通道上 |
| 批量调用 | 一次发送多个请求,减少网络往返 |
| 异步通知 | 无需等待响应的场景更高效 |
4.8 在 MCP 中的应用
MCP 协议基于 JSON-RPC 2.0 构建,以下是 MCP 中的典型消息:
客户端列出工具:
json
{
"jsonrpc": "2.0",
"method": "tools/list",
"id": 1
}
服务器返回工具列表:
json
{
"jsonrpc": "2.0",
"result": {
"tools": [{
"name": "get_weather",
"description": "查询天气",
"inputSchema": {...}
}]
},
"id": 1
}
调用工具:
json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_weather",
"arguments": {"city": "Beijing"}
},
"id": 2
}
4.9 MCP 对 JSON-RPC 的扩展
MCP 在 JSON-RPC 2.0 基础上增加了:
-
标准化方法名 :
initialize、tools/list、tools/call等 -
能力协商:客户端/服务器在初始化时声明支持哪些功能
-
流式响应:通过 JSON-RPC 的通知机制实现 Server-Sent Events
五、四者关系全景图
text
┌─────────────────────────────────────────────────────────────────┐
│ 应用层 │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Agent (智能体) │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │ │
│ │ │ 大脑 │ │ 感知 │ │ 规划 │ │ Skill 执行 │ │ │
│ │ │ (LLM) │ │ 模块 │ │ 模块 │ │ │ │ │
│ │ └────┬────┘ └────┬────┘ └────┬────┘ └──────┬──────┘ │ │
│ │ └────────────┴────────────┴──────────────┘ │ │
│ └───────────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌───────────────────────────┴───────────────────────────────┐ │
│ │ MCP 协议层 │ │
│ │ (基于 JSON-RPC 2.0 的标准化通信) │ │
│ └───────────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌───────────────────────────┴───────────────────────────────┐ │
│ │ 工具层 │ │
│ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ │
│ │ │GitHub │ │ 数据库 │ │ Slack │ │ 文件 │ │ 其他 │ │ │
│ │ │Server │ │ Server │ │ Server │ │ Server │ │ Server │ │ │
│ │ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘ │ │
│ └────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
六、总结对比表
| 概念 | 核心职责 | 关键特征 | 典型应用 |
|---|---|---|---|
| Agent | 智能决策与执行 | 自主性、规划能力、工具调用 | 自动客服、代码生成、数据分析 |
| MCP | 标准化工具连接 | 统一协议、解耦、安全 | AI 连接数据库、API、本地文件 |
| Skill | 可复用能力包 | 按需加载、跨对话持久、带脚本 | 品牌规范、报告生成、文档处理 |
| JSON-RPC | 轻量级 RPC 协议 | 极简、语言无关、传输无关 | MCP 底层协议、微服务通信 |
一句话总结:
-
Agent 是大脑,负责思考与决策
-
MCP 是神经系统,负责连接身体各部位
-
Skill 是肌肉记忆,让特定动作做得又快又好
-
JSON-RPC 是神经信号格式,让通信标准化