一、Agent Skill 是什么?

1.1 官方 / 学术定义

Agent Skill(智能体技能)
是一段封装了明确目标、输入输出、执行逻辑、工具调用或业务规则的可复用能力单元,由智能体(Agent)加载、调度、执行,用于完成某一类专一、确定、可评估的任务。

简单理解:
给 Agent 安装一个 “专业插件 / 技能包”,让它只会、也只能做好一件确定的事。

1.2 核心特征

  • 专一性:一个 Skill 只解决一类任务(如:查天气、写周报、调接口、数据清洗)
  • 确定性:输入输出格式固定,行为可预期
  • 可复用:不同 Agent、不同场景可共用
  • 可组合:多个 Skill 可串联成复杂工作流(Skill Chain / Workflow)
  • 可监控:执行过程、结果、失败原因可追踪

1.3 与普通 LLM Prompt 的区别

对比项 普通 Prompt Agent Skill
目标 通用对话 专一任务执行
输出稳定性 不稳定,易跑偏 强约束,格式固定
工具 / 系统对接 弱支持 原生支持函数、API、数据库
复用性 复制粘贴,难维护 模块化、可版本管理、可继承
适用场景 问答、闲聊、创意生成 自动化、业务流程、生产环境

二、为什么需要 Agent Skill?

2.1 传统Prompt模式的瓶颈

在2023-2025年,开发者主要依赖“提示词工程”控制AI行为,但这种模式面临两大难题:

上下文污染(Context Pollution):为覆盖所有边界情况,Prompt长达数万Token,导致模型注意力分散,产生“指令漂移”。

复用性极差:复杂的业务逻辑被硬编码在对话历史中,无法跨项目、跨团队迁移。
在这里插入图片描述

2.2 实测数据对比

维度 传统System Prompt Agent Skill模式
规则载体 纯文本随会话发送 本地结构化文件
上下文占用 全量占用 按需加载,降低60%-80%
可维护性 极低 高(模块化封装)
执行能力 仅限于文本生成 支持脚本执行与文件操作
首字延迟(TTFT) 基准 降低45%

2.3 从“提示词工程”到“技能工程”

2025年10月,Anthropic推出Agent Skill作为Claude生态的实验性功能;
2025年12月,它被确立为开放标准(Open Standard),正式标志着AI开发进入 “技能工程(Skill Engineering)” 的新阶段。
截至2026年初,开源社区已有超过6万个Claude Skills可供使用

三、Agent Skill 典型应用场景

Skill 不局限于某一领域,凡是可标准化的任务,都能封装成 Skill。

3.1 通用场景

  • 信息抽取 Skill:从文本抽姓名、电话、金额、时间
  • 文本分类 Skill:判断意图、情感、违规、分类
  • 数据清洗 Skill:格式化、去重、补全
  • 报告生成 Skill:周报、月报、总结
  • 搜索总结 Skill:联网搜索 + 内容整理

3.2 业务 / 系统场景

  • 订单查询 Skill:调用订单 API 返回订单状态
  • 天气查询 Skill:请求天气接口
  • 数据库查询 Skill:执行安全 SQL
  • 邮件 / 通知发送 Skill
  • 代码生成与执行 Skill(代码解释器)
  • RAG 检索 Skill:从知识库精准检索

3.3 多 Agent 协作场景

  • 客服 Agent:使用 “问答 Skill + 订单查询 Skill + 退款 Skill”
  • 写作助手 Agent:使用 “大纲 Skill + 扩写 Skill + 校对 Skill”
  • 数据分析 Agent:使用 “数据读取 Skill + 可视化 Skill + 总结 Skill”

四、Agent Skill 标准结构(如何设计一个 Skill)

一个生产可用的 Skill 通常包含 6 部分:

  • Skill 元信息
    • 名称、描述、版本、作者、分类
  • 输入定义(Input Schema)
    • 参数名、类型、是否必填、示例
  • 输出定义(Output Schema)
    • 固定格式:JSON / Markdown / Text
  • 执行逻辑
    -Prompt 模板
    -函数 / API 调用
    -业务规则、校验逻辑
  • 异常处理
    -参数缺失、调用失败、超时、无结果

五、Agent Skill 通用使用方式(流程)

5.1 开发阶段

  • 明确任务边界
  • 定义输入输出 Schema
  • 编写 Prompt / 函数逻辑
  • 测试用例验证
  • 注册到 Skill 库

5.2 运行阶段

  • Agent 接收用户请求
  • 意图识别 / 路由:选择对应 Skill
  • 解析并校验用户输入
  • 执行 Skill(调用 LLM / 工具 / API)
  • 格式化结果返回
  • 记录日志与监控

在这里插入图片描述

六、代码实战:从零实现一个 Agent Skill 系统

6.1 环境安装

pip install pydantic openai python-dotenv

6.2 基础架构设计

  • BaseSkill:所有技能的抽象基类
  • SkillManager:技能注册、查找、执行管理器
  • 每个技能独立成类,遵循统一输入输出

6.3 完整代码实现

1)定义基础 Skill 基类

from abc import ABC, abstractmethod
from pydantic import BaseModel, Field
from typing import Any, Dict, Optional, Type


# 输入输出基类
class SkillInput(BaseModel):
    pass


class SkillOutput(BaseModel):
    success: bool
    data: Optional[Any] = None
    error: Optional[str] = None


# 技能抽象基类
class BaseSkill(ABC):
    # 元信息
    name: str = ""
    description: str = ""
    input_schema: Type[SkillInput] = SkillInput

    @abstractmethod
    def execute(self, input_data: SkillInput) -> SkillOutput:
        """执行技能"""
        pass

2)实现 Skill 1:天气查询 Skill

class WeatherQueryInput(SkillInput):
    city: str = Field(..., description="城市名,如:北京")
    date: Optional[str] = Field(None, description="日期,如:2026-02-28")


class WeatherQuerySkill(BaseSkill):
    name = "weather_query"
    description = "根据城市和日期查询天气信息"
    input_schema = WeatherQueryInput

    def execute(self, input_data: WeatherQueryInput) -> SkillOutput:
        # 模拟调用天气 API
        try:
            weather_info = {
                "city": input_data.city,
                "date": input_data.date or "今日",
                "weather": "晴",
                "temperature": "10℃ ~ 20℃",
                "wind": "微风"
            }
            return SkillOutput(success=True, data=weather_info)
        except Exception as e:
            return SkillOutput(success=False, error=str(e))

3)实现 Skill 2:文本信息抽取 Skill

from openai import OpenAI
import os
from dotenv import load_dotenv
load_dotenv()

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))


class InfoExtractInput(SkillInput):
    text: str = Field(..., description="需要抽取信息的文本")


class InfoExtractSkill(BaseSkill):
    name = "info_extract"
    description = "从文本中抽取:姓名、电话、金额、时间"
    input_schema = InfoExtractInput

    def execute(self, input_data: InfoExtractInput) -> SkillOutput:
        prompt = f"""
        从下面文本中抽取信息,只返回JSON,不要其他内容:
        字段:name, phone, money, time
        文本:{input_data.text}
        """

        try:
            response = client.chat.completions.create(
                model="gpt-3.5-turbo",
                messages=[{"role": "user", "content": prompt}]
            )
            result = response.choices[0].message.content
            return SkillOutput(success=True, data=result)
        except Exception as e:
            return SkillOutput(success=False, error=str(e))

4)实现 Skill 3:周报生成 Skill

class WeeklyReportInput(SkillInput):
    username: str
    finished_work: list[str]
    next_plan: list[str]
    problems: Optional[list[str]] = None


class WeeklyReportSkill(BaseSkill):
    name = "weekly_report"
    description = "根据工作内容自动生成周报"
    input_schema = WeeklyReportInput

    def execute(self, input_data: WeeklyReportInput) -> SkillOutput:
        try:
            finished = "\n".join([f"- {item}" for item in input_data.finished_work])
            plan = "\n".join([f"- {item}" for item in input_data.next_plan])
            problems = "\n".join([f"- {item}" for item in input_data.problems]) if input_data.problems else "无"

            report = f"""
# 个人周报
姓名:{input_data.username}

## 本周完成工作
{finished}

## 下周计划
{plan}

## 遇到问题
{problems}
            """
            return SkillOutput(success=True, data=report)
        except Exception as e:
            return SkillOutput(success=False, error=str(e))

七、总结

Agent Skill = 智能体的最小执行单元

  • 让 Agent 从 “通用语言模型” 变成 “任务执行引擎”
  • 可控、可靠、可复用、可组合、可工程化
  • 是企业落地 LLM Agent 的必备架构

未来智能体系统一定会走向:

  • Skill 库 + 调度引擎 + 监控平台 的标准化架构

我是小鱼

  • CSDN 博客专家
  • AIGC 技术MVP专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 企业认证金牌面试官
  • 多个名企认证&特邀讲师等
  • 名企签约职场面试培训、职场规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)评测一等奖获得者

关注小鱼,学习【人工智能与大模型】最新最全的领域知识。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐