AI Agent Skill 机制全景解析:从原理到实战

摘要:在 AI Agent 开发中,Skill 机制已成为构建稳定、可复用能力的关键。本文深入解析 Skill 的工作原理、设计要点和最佳实践,帮助开发者掌握这一核心能力。

工具层

执行层

能力层

任务层

表现层

用户请求

任务理解

意图识别

任务规划

Skill 匹配引擎

Skill 加载器

Skill 执行器

脚本执行

模型推理

工具调用

Tool 接口

MCP 连接

外部 API

图 1:AI Agent Skill 机制架构图 - Skill 层位于能力层,承上启下连接任务层与工具层

目录


1. 什么是 Skill 机制

Skill(技能)是面向 AI Agent 的能力插件包/工作流包/操作手册包。它不仅仅是一段提示词,而是一套完整的、可复用的能力实现方案,包含:

  • 📋 元数据描述(SKILL.md):定义技能名称、功能、触发条件
  • 🛠️ 执行脚本(scripts/):确定性任务的自动化实现
  • 📚 参考资料(references/):API 文档、示例、规范
  • 🎨 资源文件(assets/):模板、Schema、配置
  • 🤖 Agent 配置(agents/):多 Agent 协作配置

核心价值

Skill 机制解决了 AI Agent 开发中的三大痛点:

痛点 传统方案 Skill 方案
上下文膨胀 每次任务重复注入大量指导 一次注册,按需加载
执行不稳定 依赖模型"临场发挥" 关键步骤用脚本保证确定性
知识难以沉淀 经验散落在个人笔记 团队方法论固化为技能包
35% 30% 25% 10% Skill 机制核心价值分布 上下文管理优化 执行稳定性提升 知识沉淀复用 开发效率提升

图 2:Skill 机制解决的核心痛点分布


2. Skill 工作流程详解

Skill 的执行遵循一个清晰的四阶段流程:

步骤 4: 执行

步骤 3: 加载

步骤 2: 匹配

步骤 1: 注册

SKILL.md
name: 安全审计
description: 代码安全扫描

用户任务
'扫描代码漏洞'

语义相似度
计算

匹配成功
(阈值 0.75)

读取 SKILL.md

注入上下文

准备资源

脚本执行
run.sh

使用参考
references/

应用资产
assets/

输出结果

图 2:Skill 四步工作流 - 从注册到执行的完整生命周期

匹配成功

匹配失败

用户任务请求

Skill 匹配引擎

加载 SKILL.md

注入相关资源

执行任务

返回结果

使用通用能力

阶段详解

阶段 1:Skill 注册

  • 开发者创建 SKILL.md 文件
  • 定义 namedescription 元数据
  • 系统自动扫描并注册到技能库

阶段 2:Skill 匹配

  • 用户任务描述与所有已注册技能的 description 进行语义相似度计算
  • 超过阈值(如 0.75)的技能被标记为候选
  • 按相似度排序,选择最匹配的技能

阶段 3:Skill 加载

  • 将 SKILL.md 完整内容注入到模型上下文
  • 加载相关脚本、参考资料、资源文件
  • 构建完整的执行环境

阶段 4:技能执行

  • 模型根据 SKILL.md 指导进行任务规划
  • 调用 scripts/ 中的脚本处理确定性任务
  • 整合 references/ 中的知识进行推理
  • 输出最终结果

步骤 4: 执行

步骤 3: 加载

步骤 2: 匹配

步骤 1: 注册

SKILL.md
name: 安全审计
description: 代码安全扫描

用户任务
'扫描代码漏洞'

语义相似度
计算

匹配成功
(阈值 0.75)

读取 SKILL.md

注入上下文

准备资源

脚本执行
run.sh

使用参考
references/

应用资产
assets/

输出结果

图 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

技能目录

+skills/

+ my-skill/

核心文件

+SKILL.md

*必需元数据文件

+name: string

+description: string

+version: string

+tags: string[]

脚本目录

+scripts/

+ run.sh

+ parse.py

+ validate.sh

参考目录

+references/

+ API.md

+ examples.md

+ best-practices.md

资产目录

+assets/

+ template.md

+ output_schema.json

+ config.yaml

Agent配置

+agents/

+ openai.yaml

+ claude.yaml

+ multi-agent.json

图 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 库匹配

相似度 > 阈值?

加载对应 Skill

使用通用能力

执行任务

匹配算法:

  1. 对用户输入进行语义向量化
  2. 与所有已注册 Skill 的 description 计算余弦相似度
  3. 选择相似度最高的 Skill(需超过阈值,如 0.75)
  4. 加载并执行

手动指定

用户也可以直接指定使用某个 Skill:

用户:"使用 AI 安全评测报告 Skill 生成报告"
系统:直接加载对应的 SKILL.md

优先级规则

当多个 Skill 同时匹配时:

  1. 用户明确指定的 Skill 优先级最高
  2. 相似度最高的 Skill 优先
  3. 可配置 Skill 优先级权重

8. Skill 在智能体整体架构的位置

Skill 机制位于 AI Agent 架构的能力层,承上启下:

模型层

工具层

能力层

任务层

表现层

用户界面

API 网关

任务理解

意图识别

任务规划

Skill 匹配引擎

Skill 加载器

Skill 执行器

Tool 调用

MCP 连接

外部 API

LLM 推理

向量检索

各层职责

层级 职责 与 Skill 的关系
表现层 用户交互 接收任务请求
任务层 理解规划 识别 Skill 触发条件
能力层 Skill 核心 匹配、加载、执行
工具层 外部能力 Skill 调用 Tool/MCP
模型层 推理计算 Skill 注入上下文

9. Skill 和 Tool、MCP、Prompt 区别

这是最容易混淆的概念,让我们清晰区分:

Skill MCP Tool Prompt 临时使用 长期复用 具体能力 工作流指南 Skill vs Tool vs MCP vs 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 面临什么问题?

  1. 不知道何时使用哪个 Tool:有 100 个 Tool,但不知道任务需要哪些
  2. 不知道如何组合 Tool:即使知道需要哪些,也不知道调用顺序
  3. 结果处理不一致:每个 Tool 返回格式不同,需要统一处理
  4. 知识难以沉淀:每次都要重新"学习"如何使用

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:

  1. 项目专属技能目录
  2. 团队共享技能目录
  3. 系统默认技能目录

13. Skill 的本质

Skill 是什么?

Skill 不是代码,不是 Prompt,而是一个"能力封装规范"

它包含三个核心要素:

Skill

方法论

最佳实践沉淀

团队经验固化

标准化工作流

执行规范

何时使用

如何使用

注意事项

资源集合

脚本工具

参考资料

模板 Schema

Skill 的价值主张

  1. 减少上下文浪费

    • 传统:每次任务重复注入长 Prompt
    • Skill:注册后按需加载,节省 60%+ token
  2. 提升执行稳定性

    • 传统:依赖模型"临场发挥"
    • Skill:关键步骤用脚本保证确定性
  3. 沉淀团队方法论

    • 传统:经验散落在个人笔记
    • Skill:固化为可版本管理的技能包
  4. 降低使用门槛

    • 传统:需要理解复杂 Prompt 结构
    • Skill:用户只需描述任务,系统自动匹配

Skill 的演进方向

1.0 基础技能 单一任务自动化 简单脚本调用 2.0 智能编排 多技能组合 动态工作流 3.0 自进化 自动学习优化 技能自动发现 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/

# 触发技能
用户:"执行我的第一个技能"
系统:✓ 匹配成功,执行完成

总结

核心要点回顾

  1. Skill 是什么:面向 AI Agent 的能力插件包,包含元数据、脚本、参考资料、资源文件
  2. 核心价值:减少上下文浪费、提升执行稳定性、沉淀团队方法论
  3. 关键文件:SKILL.md 必须包含 namedescription
  4. 目录结构:SKILL.md + scripts/ + references/ + assets/ + agents/
  5. 触发方式:语义匹配自动触发或手动指定
  6. 与其他概念区别
    • MCP 负责接入
    • Tool 负责调用
    • Skill 指导正确使用
    • Prompt 是临时指令(已被 Skill 替代)

最佳实践

推荐做法:

  • 明确描述触发条件
  • 模块化脚本设计
  • 完善的错误处理
  • 可独立测试
  • 版本管理

避免做法:

  • 模糊的功能描述
  • 所有逻辑在一个脚本
  • 缺少错误处理
  • 硬编码配置
  • 无版本控制

下一步行动

  1. 学习:阅读团队现有的 Skill 包,理解设计规范
  2. 实践:选择一个重复性任务,创建第一个 Skill
  3. 分享:将 Skill 提交到团队技能库,供他人复用
  4. 优化:根据使用情况持续改进

参考资料


如需转载请联系作者授权。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐