你真的理解AI Skill吗?下载一个Skill,放进目录,AI就能用了,看起来很简单,对吧?
但当你真正动手时,却发现事情没那么简单:为什么同样的Skill在不同工具里表现各异?为什么有的能跑脚本、有的只能聊?网上到处是“渐进式披露”“与Prompt对比”“与MCP关系”的理论分析,读完依然一头雾水。
其实,大多数人都忽略了一个关键前提:Skill本身不能独立运行,它必须依附于一个AI Agent载体——比如OpenClaw、CodeBuddy、Hermes Agent、LangChain的Deep Agent等等。脱离这些载体,Skill只是一堆静态配置。
那么,Skill到底是什么形态?它如何被加载、检索、执行?它是怎么运行脚本、怎么调MCP?
本文选择OpenClaw作为载体,搭建一个智能错题本的应用案例,以拆解一个Skill的完整构成:描述与触发条件、Workflow处理步骤、MCP调用、脚本执行、SubAgent触发,让你直观理解:Skill ≈ Prompt + Workflow + MCP + Script。
紧接着,我们会深入OpenClaw架构与源码,还原Skill的运行时真相。无论你是技术选型还是自建系统,这篇文章都将给你一份可参考的实践地图。
一、案例业务背景
1.1 痛点场景
对于中小学生家长而言,错题管理一直是学习辅导中的难题:
- 📷 错题收集难:孩子做题出错后,拍照、整理、归类耗时耗力
- 📅 复习规划难:不知道如何科学安排复习时间,经常是"想起来才看"
- 📊 掌握度跟踪难:不清楚哪些知识点真正掌握了,哪些还在反复出错
- ⏰ 主动提醒缺位:家长忙于工作,容易错过孩子的复习时间节点
1.2 智能错题本
为了解决上述痛点,我计划实现一个智能错题本,让AI 成为学生 全天候的"智能学习管家",学生能通过不断复习巩固错题来查漏补缺、提升成绩;家长能从繁琐的错题整理工作中解放出来,并能及时了解孩子的薄弱环节与进步情况,查看学习报告,监督复习进度。
系统面向两类角色:
| 角色 | 说明 | 主要功能 |
|---|---|---|
| 学生 | 主要使用者 | 上传试卷、答题复习、查看批改报告 |
| 家长 | 监督辅助者 | 查看学习报告、监督复习进度、接收周报 |
系统应包含以下核心功能:
-
📷 试卷图片批改:上传试卷自动批改打分,记录错题
-
📅 艾宾浩斯复习规划:根据掌握度自动安排复习
-
📚 智能试卷生成推送:每日自动推送复习卷
-
📊 学习效果分析:知识点掌握度可视化、错因分析
1.3 业务方案
现在人工智能浪潮如火如荼,各种各样的 AI 智能体纷纷涌现。如果我能够利用 AI 智能体实现这一方案,更能帮助我了解大模型、智能体、Skill、MCP 服务这些组件是如何协同工作的,它们的内部实现原理到底是怎样的。
为此,本方案采用多角色协作模式,将传统需要一个团队才能完成的学习辅导工作,拆解并分配给多个专职 AI Agent,通过聊天消息作为统一交互入口,实现端到端的自动化服务。
方案包含三大核心业务流程,具体流程如下:
方案采用多角色协作模式——将传统需要一个团队才能完成的学习辅导工作,拆解并分配给多个专职 AI Agent,每个 Agent 只负责一件事。角色分工如下:
| AI Agent 角色 | 角色分工 |
|---|---|
| 系统协调员 | 流程编排与用户交互,不承担具体业务逻辑 |
| 学业评估师 | 专注试卷批改,完成 OCR文字识别 + 评分 + 错误分析 |
| 复习规划师 | 专注复习规划,基于艾宾浩斯算法安排复习节奏、生成试卷并推送 |
1.4 核心价值
基于大模型构建的智能错题本系统,通过 AI Agent + Skill + MCP 服务实现端到端自动化:
| 功能 | 传统方式 | 智能错题本 |
|---|---|---|
| 错题录入 | 手动抄写/拍照存档 | 📷 图片上传 → 一站式错题批改 |
| 批改评分 | 家长逐题检查 | ✍️ AI 自动批改(OCR + 切题 + 评分 + 分析) |
| 复习规划 | 凭感觉安排 | 🧠 艾宾浩斯遗忘曲线自动生成 |
| 试卷推送 | 手动出题 | 📚 每日自动推送个性化复习卷 |
| 学习报告 | 期末总结 | 📈 实时知识点掌握度可视化 |
二、系统设计与实现
2.1 系统架构图
2.2 关键组件列表
| 组件 | 职责 | 位置/配置 |
|---|---|---|
| OpenClaw Gateway | 消息处理、Skill 匹配、MCP 调用 | OpenClaw 智能体 |
| wrong-question-notebook | 智能错题本主Skill | wrong-question-notebook/SKILL.md |
| academic-evaluator | 学业评估师Skill | academic-evaluator/SKILL.md |
| review-planner | 复习规划师Skill | review-planner/SKILL.md |
| system-coordinator | 系统协调员Skill | system-coordinator/SKILL.md |
| mcporter | MCP 客户端工具 | OpenClaw 调用MCP CLI 工具 |
| tencent-ocr-correction | 试题批改MCP服务 | tencent-ocr-correction-mcp/ |
2.3 目录结构
智能错题本采用多 Agent 协作架构,每个子代理有独立的 SKILL.md:
wrong-question-notebook/ # 智能错题本(主Skill)
├── SKILL.md # 主 Skill 描述
├── core/ # 核心逻辑
│ └── engine.py # 核心引擎
├── subagents/ # 子代理
│ ├── academic-evaluator/
│ │ ├── SKILL.md # 学业评估师
│ │ └── references/
│ │ └── mcp_reference.md # MCP 调用参考文档
│ ├── review-planner/
│ │ └── SKILL.md # 复习规划师
│ ├── system-coordinator/
│ │ └── SKILL.md # 系统协调员
└── cron/
└── review_cron.py # 定时任务
2.4 主 Skill 示例形态
智能错题本 wrong-question-notebook/SKILL.md 如下:
# 智能错题本
智能错题管理助手,通过对话完成错题录入、批改、复习规划。
## 触发条件
- 用户上传试卷/错题图片
- 消息包含:录入错题、添加错题、今日复习、复习计划、查看错题、开始答题、学习报告、帮助
## 架构
### 子代理
| 子代理 | 职责 |
|--------|------|
| **学业评估师** | 接收试卷图片,调用试题批改 MCP 服务,输出批改结果 |
| **复习规划师** | 根据批改结果安排艾宾浩斯复习,生成试卷并推送 |
| **系统协调员** | 流程编排、用户交互 |
### 调用流程
```
用户上传图片
↓
学业评估师─调用─>tencent-ocr-correction MCP服务
│ │
│ └── 腾讯云API处理:
│ • OCR 识别
│ • 切题定位
│ • 批改评分
│ • 错误分析
│ • 知识点识别
│
↓
输出:单题结果 + 批改报告
↓
复习规划师 ──设置──> 艾宾浩斯复习节点
```
### 外部服务依赖
| MCP 服务 | 调用方式 | 说明 |
|----------|----------|------|
| `tencent-ocr-correction` | `mcporter call` | 试题批改MCP服务,学业评估师调用 |
## 使用方式
直接在对话中发送命令或上传图片即可。
2.5 学业评估师 Skill 示例形态
学业评估师是本案例中唯一调用 MCP 服务的子代理,它的目录结构如下:
academic-evaluator/
├── SKILL.md # 学业评估师
└── references/
└── mcp_reference.md # MCP 调用参考文档
学业评估师 academic-evaluator/SKILL.md 如下:
# 学业评估师 (Academic Evaluator)
## 技能概述
本技能通过调用 **试题批改 MCP Server**,实现试卷图片的端到端批改处理(OCR + 切题 + 评分 + 分析)。
| MCP Server | 职责 | 本技能使用的工具 |
|------------|------|----------------|
| **试题批改** (tencent-ocr-correction) | 试卷图片 OCR 识别、切题、批改、错误分析 | `correct_paper_sync` · `submit_paper_correction` · `get_correction_result` |
**适用场景**:
- 用户上传试卷/错题图片
- 复习卷答题图片批改
- "帮我批改这张试卷"
- "批改答题图片"
---
## 工作流程
### Step 1:接收试卷图片
从系统协调员获取试卷图片(URL 或 Base64)。
### Step 2:调用试题批改 MCP
```json
{
"tool": "correct_paper_sync",
"arguments": {
"image_url": "<试卷图片URL>",
"question_config_map": {"KnowledgePoints": true, "TrueAnswer": true}
}
}
```
### Step 3:处理批改结果
- 将返回的批改结果转换为错题本标准格式
- 映射错误类型(分析关键词 → 标准错误类型)
- 输出两份数据:
-**单题结果列表** → 给复习规划师
-**批改报告** → 给用户
> 详细的 MCP 调用参数和返回值说明见 `references/mcp_reference.md`。
> **为什么分离?**
> SKILL.md 会被注入到 LLM 的 System Prompt 中,过长会导致 token 浪费。
> 将详细的调用参数文档放在 reference 中,LLM 只在需要时才读取,既节省 token 又保证完整性。
2.6 试题批改 MCP 服务
试题批改 MCP 服务是一个独立开发的 Python 项目,提供MCP服务接口,供学业评估师调用,它内部实现逻辑是调用腾讯云OCR接口,其源码结构如下:
tencent-ocr-correction-mcp/
├── mcp_server.py # MCP Server 主代码
├── requirements.txt # 依赖
└── README.md # 部署文档
它对外暴露三个 MCP 工具:
| 工具名 | 说明 | 使用场景 |
|---|---|---|
| submit_paper_correction | 提交批改任务(异步) | 大试卷/需要并发处理 |
| get_correction_result | 查询批改结果 | 异步模式轮询 |
| correct_paper_sync | 同步批改(一步到位) | 便捷调用,推荐使用 |
三、OpenClaw 的 Skill 发现和匹配机制
3.1 Skill 发现机制
OpenClaw 的Skill发现过程如下图所示:
启动时扫描 skills/ 目录加载所有 SKILL.md,使用渐进式披露机制,解析每个Skill的元数据,提取name、description、location等信息,构建可用技能列表,注入 System Prompt。
3.2 LLM 自主决策匹配
OpenClaw 将 Skill 信息注入到 System Prompt 中,由 LLM 根据用户输入自主判断需要使用哪个Skill:
| 用户输入 | LLM 决策 | 调用 |
|---|---|---|
| "帮我批改这张试卷" | 匹配 上传试卷 触发条件 | ✅ 激活 主Skill |
| "上传错题图片" | 匹配 上传错题 触发条件 | ✅ 激活 主Skill |
| "你好" | 无匹配 | ❌ 通用回复 |
"上传试卷图片" → LLM 匹配 wrong-question-notebook 触发条件 → 激活主 Skill → 调度学业评估师。
四、Skill 如何调用 MCP 服务
上一章介绍了 OpenClaw 如何发现和匹配 Skill。那么,Skill 内部又是如何调用外部 MCP 服务的呢?本章以学业评估师调用试题批改MCP服务为例,拆解完整链路。
4.1 OpenClaw MCP 全局配置
┌─────────────────────────────────────────────────────────────────┐
│ 试题批改 MCP 配置 (当前实际使用) │
│ │
│ 1. ~/.openclaw/mcp-config.json (核心 MCP 配置) │
│ 2. ~/.openclaw/openclaw.json (Gateway 配置,含 Skills 入口) │
│ 3. mcporter.json (MCP 客户端配置) │
└─────────────────────────────────────────────────────────────────┘
# 1. 核心 MCP 配置
# 位置: ~/.openclaw/mcp-config.json
{
"mcp":{
"servers":[
{
"name":"tencent-ocr-correction",
"command":"python",
"args":["mcp_server.py","--mode","stdio"],
"cwd":"/root/.openclaw/workspace/tencent-ocr-correction-mcp",
"env":{
"TENCENT_SECRET_ID":"your_secret_id",
"TENCENT_SECRET_KEY":"your_secret_key"
}
}
]
}
}
# 2. OpenClaw Gateway 配置,含 Skills 入口
# 位置: ~/.openclaw/openclaw.json
{
"skills":{
"entries":{
"mcporter":{
"enabled":true,
"env":{
"MCPORTER_CONFIG":"/root/.openclaw/workspace/node_modules/mcporter/config/mcporter.json"
}
},
"qveris-coding":{"enabled":true,"apiKey":"sk-..."},
"baidu-search":{"enabled":true,"apiKey":"bce-v3/..."}
}
}
}
# 3. MCP 客户端 mcporter扩展配置
# 位置: ~/.openclaw/workspace/node_modules/mcporter/config/mcporter.json
{
"mcpServers":{
"tencent-ocr-correction":{"url":"http://127.0.0.1:8000/mcp"}
},
"imports":["cursor","claude-code","claude-desktop","codex"]
}
4.2 OpenClaw 获取 MCP 工具列表
通过以上全局配置,OpenClaw 在运行时会获取可用的 MCP 工具列表。OpenClaw 发现并加载 MCP 工具的核心源码如下:
// 源码位置: src/agents/pi-embedded-runner/run/attempt.ts
// 1. 获取 MCP 运行时
const bundleMcpSessionRuntime = awaitgetOrCreateSessionMcpRuntime({
sessionId: params.sessionId,
sessionKey: params.sessionKey,
workspaceDir: effectiveWorkspace,
cfg: params.config,
});
// 2. 将 MCP 工具物化为 Agent 可执行的工具
const bundleMcpRuntime = awaitmaterializeBundleMcpToolsForRun({
runtime: bundleMcpSessionRuntime,
reservedToolNames: [...tools.map((tool) => tool.name)],
});
// 3. 合并到 Agent 的有效工具列表
const effectiveTools = [
...tools, // 内置工具
...(bundleMcpRuntime?.tools ?? []), // MCP 工具
];
4.3 学业评估师 Skill 调用 MCP 的完整流程
总结与回顾
业务逻辑总结
传统学习方法中,错题管理是拉开差距的关键环节——但大多数孩子和家长做不到系统化的错题整理和科学复习。
这篇文章拆解的智能错题本,本质上构建了一套自动化的学霸养成系统:
- 试卷 OCR + AI 批改:秒级完成错题识别、评分、错误分析,替代家长人工检查
- 艾宾浩斯遗忘曲线:科学安排复习节奏,在最佳记忆节点推送复习题
- 多 Agent 协作:学业评估师、复习规划师、系统协调员各司其职,就像一个全天候在线的学习团队
- 端到端自动化:从拍照上传到生成学习报告,全程无需人工干预
而这些能力,全部由 OpenClaw Skill + MCP 两个核心机制驱动——这正是本文要带你拆解的底层原理。
技术原理回顾
回顾全文,我们可以清晰地看到 AI Agent、Skill 与 MCP 服务三者协同的底层原理:
| 组件 | 本质 | 作用 |
|---|---|---|
| Skill | 能力描述文件(SKILL.md) | 定义 Agent 能做什么、何时触发、如何执行 |
| MCP | 外部服务接口协议 | 为 Skill 提供底层能力(OCR、搜索、数据库等) |
| Agent | 智能体本身 | 加载 Skill、调度执行、管理上下文 |
调用链路:用户输入 → LLM 匹配 Skill 触发条件 → 激活对应 Skill → Skill 调用 MCP 工具 → 返回结果给 Agent → 输出给用户。
这种架构的核心优势在于职责分离:Skill 专注业务逻辑描述,MCP 专注外部服务接入,Agent 专注流程编排——三者松耦合,可独立演进。
理解了这个架构,你不仅掌握了错题本的实现方式,更获得了一套可复用的 AI Agent 应用开发范式。无论是教育、办公还是其他业务场景,Skill + MCP 的组合都能帮你快速构建出真正落地的 AI 应用。
在本案例基础上,下篇文章进一步剖析OpenClaw加载和运行Skill的核心代码实现,敬请关注。
上一篇我们介绍了在Code Buddy中的SKill实践案例,有兴趣同学请点击《用一个业务案例,摸透Code Buddy的Skill原理》,了解其运行机制和OpenClaw有什么相似和不同。
本系列说明:在本系列中我们将通过不同 AI Agent(如 Code Buddy、OpenClaw、OpenCode、Hermes Agent 等)作为载体,结合具体业务案例进行实战,以深入剖析 Skill 的实现机制和底层原理。
—End—
本文作者:ysdhb4245
本文原载:公众号“木昆子记录AI”