Agent Skill 机制全解析:从原理到实战
AI Agent Skill 机制全景解析:从原理到实战
摘要:在 AI Agent 开发中,Skill 机制已成为构建稳定、可复用能力的关键。本文深入解析 Skill 的工作原理、设计要点和最佳实践,帮助开发者掌握这一核心能力。
图 1:AI Agent Skill 机制架构图 - Skill 层位于能力层,承上启下连接任务层与工具层
目录
- [1. 什么是 Skill 机制](#1-什么是 skill-机制)
- 2. Skill 工作流程详解
- [3. Skill 比单纯 Prompt 好在哪里](#3-skill-比单纯 prompt-好在哪里)
- 4. Skill 典型文件目录结构
- 5. SKILL.MD 内容简介
- 6. Skill 各个目录作用
- 7. Skill 触发方式
- 8. Skill 在智能体整体架构的位置
- 9. Skill 和 Tool、MCP、Prompt 区别
- [10. 实战案例:AI 安全评测报告 Skill](#10-实战案例:ai-安全评测报告 skill)
- 11. Skill 设计关键点
- 12. Skill 目录位置
- 13. Skill 的本质
- 14. 最小可用模板
1. 什么是 Skill 机制
Skill(技能)是面向 AI Agent 的能力插件包/工作流包/操作手册包。它不仅仅是一段提示词,而是一套完整的、可复用的能力实现方案,包含:
- 📋 元数据描述(SKILL.md):定义技能名称、功能、触发条件
- 🛠️ 执行脚本(scripts/):确定性任务的自动化实现
- 📚 参考资料(references/):API 文档、示例、规范
- 🎨 资源文件(assets/):模板、Schema、配置
- 🤖 Agent 配置(agents/):多 Agent 协作配置
核心价值
Skill 机制解决了 AI Agent 开发中的三大痛点:
| 痛点 | 传统方案 | Skill 方案 |
|---|---|---|
| 上下文膨胀 | 每次任务重复注入大量指导 | 一次注册,按需加载 |
| 执行不稳定 | 依赖模型"临场发挥" | 关键步骤用脚本保证确定性 |
| 知识难以沉淀 | 经验散落在个人笔记 | 团队方法论固化为技能包 |
图 2:Skill 机制解决的核心痛点分布
2. Skill 工作流程详解
Skill 的执行遵循一个清晰的四阶段流程:
图 2:Skill 四步工作流 - 从注册到执行的完整生命周期
阶段详解
阶段 1:Skill 注册
- 开发者创建 SKILL.md 文件
- 定义
name和description元数据 - 系统自动扫描并注册到技能库
阶段 2:Skill 匹配
- 用户任务描述与所有已注册技能的
description进行语义相似度计算 - 超过阈值(如 0.75)的技能被标记为候选
- 按相似度排序,选择最匹配的技能
阶段 3:Skill 加载
- 将 SKILL.md 完整内容注入到模型上下文
- 加载相关脚本、参考资料、资源文件
- 构建完整的执行环境
阶段 4:技能执行
- 模型根据 SKILL.md 指导进行任务规划
- 调用 scripts/ 中的脚本处理确定性任务
- 整合 references/ 中的知识进行推理
- 输出最终结果
图 2:Skill 四步工作流 - 从注册到执行的完整生命周期
3. Skill 比单纯 Prompt 好在哪里
很多人会问:为什么不直接用 Prompt 指导模型,而要引入 Skill 机制?
对比分析
| 维度 | 纯 Prompt 方案 | Skill 机制 |
|---|---|---|
| 上下文效率 | 每次任务重复注入长 Prompt | 注册后按需加载,减少 60%+ 上下文 |
| 执行稳定性 | 完全依赖模型能力,结果波动大 | 关键步骤用脚本保证,稳定性提升 80%+ |
| 知识沉淀 | 经验散落在对话记录中 | 固化为可版本管理的技能包 |
| 团队协作 | 难以共享和复用 | 技能包可跨项目、跨团队复用 |
| 可测试性 | 难以单元测试 | scripts/ 可独立测试 |
| 可维护性 | Prompt 修改影响全局 | 单一技能独立升级 |
实际效果对比
假设你需要让 Agent 完成"生成 AI 安全评测报告"任务:
纯 Prompt 方案:
每次调用都需要注入 2000+ 字的完整指导:
- 评测维度有哪些
- 每个维度的评分标准
- 报告格式要求
- 数据来源说明
- 常见陷阱提醒
...
问题: 每次调用浪费大量 token,且模型可能遗漏某些要点。
Skill 方案:
# 注册时(一次)
SKILL.md:
name: "AI 安全评测报告生成"
description: "生成专业的 AI 系统安全评测报告,包含漏洞扫描、对抗测试、合规检查..."
# 使用时
用户:"生成安全评测报告"
系统 → 匹配到技能 → 加载 SKILL.md + 调用 scripts/audit.py
优势: 上下文精简 90%,执行结果稳定可预期。
4. Skill 典型文件目录结构
一个完整的 Skill 包通常包含以下目录结构:
skills/
└── my-skill/
├── SKILL.md # 必需:技能元数据和工作流指导
├── scripts/ # 必需:可执行脚本
│ ├── run.sh # 主入口脚本
│ ├── parse.py # 数据解析脚本
│ └── utils.py # 工具函数
├── references/ # 可选:参考资料
│ ├── API.md # API 文档
│ ├── examples.md # 使用示例
│ └── best-practices.md
├── assets/ # 可选:资源文件
│ ├── template.md # 报告模板
│ └── output_schema.json
└── agents/ # 可选:多 Agent 配置
└── openai.yaml
图 3:Skill 标准目录结构 - 包含 5 个核心组成部分
结构说明
- SKILL.md:Skill 的"说明书",定义了什么情况下使用这个技能、如何使用
- scripts/:处理确定性任务,如数据解析、API 调用、格式转换
- references/:领域知识沉淀,如 API 文档、最佳实践、案例库
- assets/:模板和 Schema,保证输出格式统一
- agents/:多 Agent 协作配置,用于复杂任务分解
5. SKILL.MD 内容简介
SKILL.md 是 Skill 包的核心文件,必须包含以下元数据:
---
name: "AI 安全评测报告生成"
description: "生成专业的 AI 系统安全评测报告,包含漏洞扫描、对抗测试、合规检查、风险评估等维度。适用于 AI 产品上线前的安全审计场景。"
version: "1.2.0"
author: "AI 安全团队"
tags: ["security", "audit", "compliance"]
---
# AI 安全评测报告生成
## 触发条件
当用户请求涉及以下场景时自动触发:
- AI 系统安全评估
- 漏洞扫描报告生成
- 合规性检查
- 对抗测试分析
## 工作流程
### 1. 数据收集
调用 `scripts/collect_data.py` 收集系统信息
### 2. 漏洞扫描
调用 `scripts/scan_vulnerabilities.py` 进行自动化扫描
### 3. 对抗测试
调用 `scripts/adversarial_test.py` 执行对抗样本测试
### 4. 报告生成
整合所有结果,使用 `assets/template.md` 生成最终报告
## 输出格式
报告包含以下章节:
1. 执行摘要
2. 系统架构分析
3. 漏洞扫描结果
4. 对抗测试表现
5. 合规性评估
6. 风险等级评定
7. 改进建议
## 注意事项
- 确保目标系统已授权测试
- 敏感数据需要脱敏处理
- 报告需经过人工复核
关键字段说明
| 字段 | 必需 | 说明 |
|---|---|---|
name |
✅ | 技能名称,用于识别和展示 |
description |
✅ | 技能功能描述,用于匹配引擎 |
version |
❌ | 版本号,便于升级管理 |
tags |
❌ | 标签列表,便于分类检索 |
author |
❌ | 作者信息,便于追溯 |
6. Skill 各个目录作用
scripts/ - 确定性任务执行器
作用:处理规则明确、可自动化的任务
典型脚本:
run.sh:主入口,协调各子脚本parse_data.py:数据解析和清洗call_api.py:外部 API 调用封装generate_report.py:报告生成
设计原则:
- 脚本应可独立测试
- 输入输出明确定义
- 错误处理完善
- 日志记录完整
references/ - 领域知识库
作用:沉淀专业知识,减少模型"幻觉"
典型内容:
- API 文档和调用示例
- 行业标准和规范
- 历史案例和最佳实践
- 常见问题解答
价值: 让模型基于真实知识推理,而非凭空想象
assets/ - 模板和 Schema
作用:保证输出格式统一、符合规范
典型文件:
template.md:报告/文档模板output_schema.json:JSON Schema 验证config.yaml:配置参数
agents/ - 多 Agent 配置
作用:复杂任务分解为多 Agent 协作
典型场景:
- 任务规划 Agent
- 执行 Agent
- 评审 Agent
- 整合 Agent
7. Skill 触发方式
自动触发
系统通过语义匹配自动触发 Skill:
匹配算法:
- 对用户输入进行语义向量化
- 与所有已注册 Skill 的
description计算余弦相似度 - 选择相似度最高的 Skill(需超过阈值,如 0.75)
- 加载并执行
手动指定
用户也可以直接指定使用某个 Skill:
用户:"使用 AI 安全评测报告 Skill 生成报告"
系统:直接加载对应的 SKILL.md
优先级规则
当多个 Skill 同时匹配时:
- 用户明确指定的 Skill 优先级最高
- 相似度最高的 Skill 优先
- 可配置 Skill 优先级权重
8. Skill 在智能体整体架构的位置
Skill 机制位于 AI Agent 架构的能力层,承上启下:
各层职责
| 层级 | 职责 | 与 Skill 的关系 |
|---|---|---|
| 表现层 | 用户交互 | 接收任务请求 |
| 任务层 | 理解规划 | 识别 Skill 触发条件 |
| 能力层 | Skill 核心 | 匹配、加载、执行 |
| 工具层 | 外部能力 | Skill 调用 Tool/MCP |
| 模型层 | 推理计算 | Skill 注入上下文 |
9. Skill 和 Tool、MCP、Prompt 区别
这是最容易混淆的概念,让我们清晰区分:
图 5:四种概念在 Agent 系统中的定位差异
核心区别
| 概念 | 本质 | 作用 | 生命周期 |
|---|---|---|---|
| Skill | 工作流指南 | 指导 Agent 如何正确使用能力 | 长期复用 |
| Tool | 能力接口 | 提供具体功能(如搜索、计算) | 按需调用 |
| MCP | 连接层 | 标准化 Tool 接入协议 | 基础设施 |
| Prompt | 临时指令 | 单次任务指导 | 一次性 |
关系图解
MCP 层:提供标准化的能力接入方式
↓
Tool 层:具体实现功能(搜索、计算、API 调用)
↓
Skill 层:指导如何正确使用这些 Tool 完成复杂任务
↓
Prompt:单次任务的临时指导(已被 Skill 替代)
实际场景举例
场景:生成 AI 安全评测报告
| 组件 | 作用 |
|---|---|
| MCP | 提供标准化的文件读取、HTTP 请求接口 |
| Tool | file_read() 读取配置文件,http_get() 调用扫描 API |
| Skill | 指导按什么顺序调用哪些 Tool、如何处理结果、如何生成报告 |
| Prompt | (已被 Skill 替代)不再需要每次注入 2000 字指导 |
为什么需要 Skill 层?
如果只有 Tool 和 MCP,Agent 面临什么问题?
- 不知道何时使用哪个 Tool:有 100 个 Tool,但不知道任务需要哪些
- 不知道如何组合 Tool:即使知道需要哪些,也不知道调用顺序
- 结果处理不一致:每个 Tool 返回格式不同,需要统一处理
- 知识难以沉淀:每次都要重新"学习"如何使用
Skill 就是解决这些问题:它记录了"完成某类任务的完整工作流"。
10. 实战案例:AI 安全评测报告 Skill
让我们通过一个完整案例,理解 Skill 的实战应用。
案例背景
某 AI 创业公司需要在产品上线前进行安全评测,传统方式:
- 人工编写评测方案:2-3 天
- 执行扫描和测试:1-2 天
- 编写报告:1 天
- 总计:4-6 天
引入 Skill 后:
- 配置 Skill 包:2 天(一次性投入)
- 执行评测:30 分钟
- 生成报告:自动化
- 总计:30 分钟
Skill 包结构
skills/ai-security-audit/
├── SKILL.md
├── scripts/
│ ├── run.sh
│ ├── collect_system_info.py
│ ├── scan_vulnerabilities.py
│ ├── adversarial_test.py
│ └── generate_report.py
├── references/
│ ├── OWASP_Top_10.md
│ ├── AI_Security_Standards.md
│ └── audit_examples.md
├── assets/
│ ├── report_template.md
│ └── output_schema.json
└── agents/
└── audit_team.yaml
SKILL.md 核心内容
---
name: "AI 安全评测报告生成"
description: "生成专业的 AI 系统安全评测报告,包含漏洞扫描、对抗测试、合规检查、风险评估等维度。适用于 AI 产品上线前的安全审计场景。"
---
## 工作流程
### 1. 系统信息收集
```bash
python scripts/collect_system_info.py --target $SYSTEM_URL
2. 漏洞扫描
python scripts/scan_vulnerabilities.py --config assets/config.yaml
3. 对抗测试
python scripts/adversarial_test.py --samples 1000
4. 报告生成
python scripts/generate_report.py --output output/audit_report.md
输出标准
报告必须包含:
- 执行摘要(200 字以内)
- 漏洞清单(按严重程度分级)
- 对抗测试通过率
- 合规性评分
- 改进建议优先级
### 执行效果
**输入:**
用户:“对 https://api.my-ai-app.com 进行安全评测”
**输出:**
```markdown
# AI 安全评测报告
## 执行摘要
对目标系统进行完整安全评测,发现中危漏洞 3 个,低危漏洞 5 个,整体安全评分 78/100。
## 漏洞清单
| 等级 | 漏洞类型 | 位置 | 修复建议 |
|------|----------|------|----------|
| 中危 | SQL 注入 | /api/query | 使用参数化查询 |
| 中危 | XSS | /api/search | 输出编码 |
| 中危 | 敏感信息泄露 | /api/debug | 禁用调试接口 |
## 对抗测试
- 测试样本:1000 个
- 通过率:94.2%
- 主要问题:提示词注入攻击
## 合规性评估
- OWASP Top 10: 符合 8/10
- AI 安全标准:符合 75%
- 数据保护:符合 90%
## 改进建议
1. [高] 修复 SQL 注入漏洞
2. [高] 增强提示词注入防护
3. [中] 完善日志脱敏
11. Skill 设计关键点
1. 明确的触发条件
SKILL.md 的 description 必须清晰描述:
- 适用场景
- 任务类型
- 目标用户
好的描述:
“生成专业的 AI 系统安全评测报告,包含漏洞扫描、对抗测试、合规检查。适用于 AI 产品上线前的安全审计场景。”
差的描述:
“做个安全评测”
2. 模块化脚本设计
# ❌ 不好的设计:所有逻辑在一个脚本
def run():
# 500 行代码混合数据收集、扫描、报告生成
...
# ✅ 好的设计:职责分离
# collect_data.py - 只负责数据收集
# scan.py - 只负责扫描
# report.py - 只负责报告生成
3. 完善的错误处理
#!/bin/bash
# run.sh
set -e # 遇到错误立即退出
echo "Step 1: 收集系统信息"
if ! python scripts/collect_data.py; then
echo "错误:数据收集失败"
exit 1
fi
echo "Step 2: 漏洞扫描"
if ! python scripts/scan.py; then
echo "错误:扫描失败"
exit 1
fi
echo "✓ 评测完成"
4. 可测试性
每个脚本都应该能独立测试:
# scripts/parse_data.py
def parse_api_response(response: dict) -> dict:
"""解析 API 响应"""
# 实现逻辑
return parsed_data
# 测试
def test_parse_api_response():
test_input = {"status": "ok", "data": [...]}
result = parse_api_response(test_input)
assert result["status"] == "ok"
5. 版本管理
---
name: "AI 安全评测报告生成"
version: "1.2.0" # 语义化版本
changelog:
- "1.2.0": 新增对抗测试模块
- "1.1.0": 优化报告格式
- "1.0.0": 初始版本
---
12. Skill 目录位置
推荐目录结构
project-root/
├── skills/ # 团队共享技能库
│ ├── ai-security-audit/
│ ├── data-analysis/
│ └── report-generation/
├── projects/
│ ├── project-a/
│ │ └── skills/ # 项目专属技能
│ │ └── custom-task/
│ └── project-b/
└── templates/ # Skill 模板
└── basic-skill/
目录职责
| 目录 | 作用 | 共享范围 |
|---|---|---|
skills/ |
团队通用技能 | 全团队共享 |
projects/*/skills/ |
项目专属技能 | 项目内共享 |
templates/ |
技能模板 | 用于快速创建 |
加载优先级
系统按以下顺序搜索 Skill:
- 项目专属技能目录
- 团队共享技能目录
- 系统默认技能目录
13. Skill 的本质
Skill 是什么?
Skill 不是代码,不是 Prompt,而是一个"能力封装规范"。
它包含三个核心要素:
Skill 的价值主张
-
减少上下文浪费
- 传统:每次任务重复注入长 Prompt
- Skill:注册后按需加载,节省 60%+ token
-
提升执行稳定性
- 传统:依赖模型"临场发挥"
- Skill:关键步骤用脚本保证确定性
-
沉淀团队方法论
- 传统:经验散落在个人笔记
- Skill:固化为可版本管理的技能包
-
降低使用门槛
- 传统:需要理解复杂 Prompt 结构
- Skill:用户只需描述任务,系统自动匹配
Skill 的演进方向
14. 最小可用模板
快速创建一个可用的 Skill,复制以下模板:
1. 创建目录结构
mkdir -p skills/my-first-skill/{scripts,references,assets}
2. 创建 SKILL.md
---
name: "我的第一个技能"
description: "这是一个示例技能,用于演示 Skill 的基本结构和用法"
version: "1.0.0"
---
# 我的第一个技能
## 触发条件
当用户请求执行 [具体任务类型] 时触发
## 工作流程
1. 执行 `scripts/run.sh`
2. 查看输出结果
3. 返回给用户
## 注意事项
- 确保已安装依赖
- 检查配置文件
3. 创建 run.sh
#!/bin/bash
# scripts/run.sh
echo "开始执行技能..."
# 你的逻辑在这里
echo "任务完成!"
# 输出结果
echo "结果:成功"
chmod +x scripts/run.sh
4. 测试
# 注册技能
skill-cli register skills/my-first-skill/
# 触发技能
用户:"执行我的第一个技能"
系统:✓ 匹配成功,执行完成
总结
核心要点回顾
- Skill 是什么:面向 AI Agent 的能力插件包,包含元数据、脚本、参考资料、资源文件
- 核心价值:减少上下文浪费、提升执行稳定性、沉淀团队方法论
- 关键文件:SKILL.md 必须包含
name和description - 目录结构:SKILL.md + scripts/ + references/ + assets/ + agents/
- 触发方式:语义匹配自动触发或手动指定
- 与其他概念区别:
- MCP 负责接入
- Tool 负责调用
- Skill 指导正确使用
- Prompt 是临时指令(已被 Skill 替代)
最佳实践
✅ 推荐做法:
- 明确描述触发条件
- 模块化脚本设计
- 完善的错误处理
- 可独立测试
- 版本管理
❌ 避免做法:
- 模糊的功能描述
- 所有逻辑在一个脚本
- 缺少错误处理
- 硬编码配置
- 无版本控制
下一步行动
- 学习:阅读团队现有的 Skill 包,理解设计规范
- 实践:选择一个重复性任务,创建第一个 Skill
- 分享:将 Skill 提交到团队技能库,供他人复用
- 优化:根据使用情况持续改进
参考资料
如需转载请联系作者授权。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)