技能系统概述

Skill vs Tool:一个关键的区分

在第 4 章中,我们学会了让 Agent 调用工具——搜索网页、执行代码、读写文件。这些工具就像工匠的锤子、锯子、尺子。但一个优秀的工匠之所以能造出精美的家具,不仅仅是因为他有工具,更因为他有木工技能——知道什么时候用什么工具、按什么顺序操作、遇到问题如何处理。

技能结构图

让我们用一个具体例子来感受这个区别:

# ❌ 只有工具,没有技能 —— Agent 需要被手把手指导
user: "帮我分析一下这个 CSV 文件的销售数据"
agent: "好的,我可以用 read_csv 工具读取文件。"
       # 读取后只是把原始数据展示出来
       # 不知道要做什么分析
       # 不知道怎么处理缺失值
       # 不知道用什么图表

# ✅ 有工具 + 有技能 —— Agent 像数据分析师一样工作
user: "帮我分析一下这个 CSV 文件的销售数据"
agent: # 自动执行完整的分析流程:
       # 1. 读取 CSV 并检查数据质量
       # 2. 处理缺失值和异常值
       # 3. 计算关键指标(总销售额、增长率、Top 产品)
       # 4. 选择合适的图表(趋势用折线图、占比用饼图)
       # 5. 生成结构化的分析报告

技能的三个核心特征

特征一:技能是可复用的

工具调用是"一次性"的——每次你都需要告诉 Agent 该怎么做。而技能是"一次学会、反复使用"的:

# 工具调用:每次都要详细指导
messages = [
    {"role": "system", "content": """你要做以下事情:
    1. 先用 read_csv 读取文件
    2. 检查是否有空值,用中位数填充
    3. 计算各列的均值和标准差
    4. 用 plot_chart 生成折线图
    5. 用 write_report 生成 Markdown 报告
    ...(详细的 20 行指令)"""},
]

# 技能调用:简单一句话
messages = [
    {"role": "system", "content": "你具备数据分析技能。"},
    {"role": "user", "content": "分析 sales.csv 的销售趋势"},
]
# Agent 自动执行完整的分析流程

特征二:技能包含领域知识

工具本身是"通用的",不包含业务知识。而技能将领域知识编码进去:

# 工具只知道"怎么做"
def execute_sql(query: str) -> str:
    """执行 SQL 查询"""
    return db.execute(query)

# 技能还知道"做什么"和"为什么"
DATA_ANALYSIS_SKILL = """
你是一个专业的数据分析师。在分析数据时:

数据质量检查:
- 缺失值超过 30% 的列应该考虑删除
- 数值型异常值用 IQR 方法检测(1.5倍四分位距)
- 日期列检查连续性

分析方法选择:
- 时间序列数据 → 趋势分析 + 季节性分解
- 分类数据 → 频率分布 + 交叉分析
- 数值数据 → 描述统计 + 相关性分析

可视化最佳实践:
- 趋势 → 折线图
- 比较 → 柱状图
- 占比 → 饼图/环形图
- 分布 → 直方图/箱线图
- 关系 → 散点图
"""

特征三:技能可以被发现和组合

在多 Agent 系统中,每个 Agent 拥有不同的技能。当一个 Agent 接到一个复杂任务时,它可以发现并调用其他 Agent 的技能:

技能组合与任务分配

技能的三层架构

我们将技能系统分为三个层次:

技能三层架构

第一层:基础工具层

这是第 4 章已经介绍的内容——单个可调用的工具函数。

第二层:技能定义层

将工具、知识和流程封装为可复用的技能单元。有三种主要的封装方式:

封装方式原理代表适用场景
Prompt-based用精心设计的系统提示注入领域知识和行为指南Anthropic Skills、Claude Code知识密集型任务
Code-based将技能实现为可执行的代码模块Voyager 技能库、Semantic Kernel Plugin需要精确控制的任务
Workflow-based将技能编排为状态图或工作流LangGraph Subgraph、CrewAI Task多步骤流程型任务

第三层:技能管理层

管理技能的注册、发现、选择和版本控制。这在多 Agent 系统中尤其重要——每个 Agent 需要声明自己有什么技能,其他 Agent 需要能发现和调用这些技能。

技能系统的发展脉络

技能系统发展脉络

本节小结

概念工具(Tool)技能(Skill)
粒度单个操作一类问题的完整解决方案
包含函数 + 参数描述工具 + 知识 + 流程 + 经验
复用性通用(任何场景都能用)领域化(特定类型任务)
类比锤子、锯子木工技能、数据分析技能
定义方式函数定义 + JSON SchemaPrompt / 代码 / 工作流

💡 核心观点Tool 是 Skill 的组成部分。一个技能通常包含多个工具的组合使用、专业的领域知识、标准化的处理流程,以及从经验中积累的最佳实践。随着 Agent 的应用场景越来越复杂,技能系统正在成为 Agent 架构中不可或缺的一层。


下一节:9.2 技能的定义与封装