Skip to content
🔗 分享本题
查看我的学习进度 →

Agent Skill 作为可复用做事方法编排多个有输入输出契约的 Tool 执行外部动作

🧠 图解记忆: Skill 是做事方法,Tool 是执行动作;Skill 可编排多个 Tool 完成目标。

💡 答案要点

背景:Skills 是 2026 年 Agent 架构的新关键词

2026 年,随着多 Agent 系统成熟,"Skills" 作为独立概念从 "Tools" 中分离出来。Skills = 知识 + 行为模式 + 示例 + SOP,比 Tools 的粒度更粗、更面向业务。

Tools vs Skills 本质区别:

┌─────────────────────────────────────────────────────┐
│          Tools vs Skills 核心区别                   │
├─────────────────────────────────────────────────────┤
│                                                     │
│  Tools(原子操作)                                  │
│  ├─ 本质:可执行的函数/API                          │
│  ├─ 粒度:原子级别(如"发送邮件"、"查询天气")      │
│  ├─ 包含:输入/输出 Schema                          │
│  ├─ 无状态:每次调用独立                             │
│  └─ 示例:send_email(to, subject, body)             │
│                                                     │
│  Skills(复合能力)                                  │
│  ├─ 本质:知识 + 行为模式                            │
│  ├─ 粒度:复合能力(如"撰写商务邮件")              │
│  ├─ 包含:示例、SOP、风格指南、依赖工具集            │
│  ├─ 有状态:包含上下文理解                           │
│  └─ 示例:compose_business_email(context, tone)     │
│           → 调用 send_email + lookup_contact + ...  │
└─────────────────────────────────────────────────────┘

Skills 的核心组成:

展开 Yaml 代码示例(31 行)
yaml
# Skill 定义示例:撰写商务邮件
skill:
  name: "compose_business_email"
  description: "撰写符合公司规范的商务邮件"
  
  # 知识:邮件写作规范
  knowledge:
    - 签名格式规范
    - 称呼礼仪
    - 公司品牌调性
  
  # 示例:少量参考
  examples:
    - input: "客户投诉产品质量"
      output: "确认收到 → 表达歉意 → 解决方案 → 跟进计划"
    - input: "项目进度汇报"
      output: "结论先行 → 细节支撑 → 下一步行动"
  
  # 依赖的工具
  dependencies:
    - send_email
    - lookup_contact
    - get_customer_context
  
  # 标准操作流程
  sop:
    - step1: 理解邮件目的和收件人
    - step2: 检索相关信息(客户历史、项目背景)
    - step3: 生成初稿
    - step4: 按公司规范格式化
    - step5: 发送并记录到 CRM

为什么 Skills 在 2026 年变得重要:

1. 多Agent协作需要"技能包"而非"工具箱"
   - 单个工具太细,Agent 需要更高层次的抽象
   - Skills 提供了业务语义层的封装

2. 知识沉淀从个人到组织
   - 专家经验 → Skills 定义 → 可复用资产
   - 新 Agent 通过加载 Skills 快速具备能力

3. MCP 协议成熟后,Skills 成为下一层抽象
   - MCP = 工具标准化(USB-C)
   - Skills = 能力标准化(技能包)

Dify Nacos A2A 插件:解决 Agent 发现难题

"Dify 通过 Nacos A2A 插件实现双向多智能体协作,解决协议不兼容与智能体发现难题。"

解决的问题:

问题传统方案Nacos A2A 方案
Agent 发现硬编码地址,静态配置Nacos 服务注册与发现,动态
协议不兼容每个 Agent 自定义协议A2A 标准协议,统一通信
扩缩容手动配置服务自动注册/注销,弹性
监控无统一视图Nacos 提供注册状态监控

Nacos A2A 架构:

┌─────────────────────────────────────────────────────┐
│           Dify + Nacos A2A 架构                    │
├─────────────────────────────────────────────────────┤
│                                                     │
│  Agent 注册层(Nacos)                               │
│  ├── Agent A(客服)注册到 Nacos                     │
│  ├── Agent B(SRE)注册到 Nacos                     │
│  └── Agent Card 自动同步                            │
│                                                     │
│  A2A 通信层                                         │
│  ├── Agent A 发现 Agent B(通过 Nacos)              │
│  ├── A2A 协议标准化通信                             │
│  └── Gateway 做路由和鉴权                           │
│                                                     │
│  Dify 工作流编排层                                   │
│  ├── 多 Agent 协作流程可视化                         │
│  └── 定时/事件触发                                   │
└─────────────────────────────────────────────────────┘

生产级 Skills 部署示例:

python
# 用 LangGraph 加载和使用 Skills
from langgraph.prebuilt import SkillExecutor

# 定义 Skill(复合能力)
skill = Skill(
    name="customer_complaint_handler",
    description="处理客户投诉的完整流程",
    # Skills 包含多个 Tools 和 SOP
    tools=["lookup_customer", "send_email", "create_ticket"],
    sop=[
        {"step": 1, "action": "lookup_customer", "input": "customer_id"},
        {"step": 2, "action": "analyze_complaint", "context": "complaint_type"},
        {"step": 3, "action": "decide_response", "rules": "complaint_routing_rules"},
        {"step": 4, "action": "send_email", "template": "complaint_response"},
        {"step": 5, "action": "create_ticket", "if": "severity > high"}
    ],
    examples=[
        {"input": "产品质量问题", "output": "道歉 + 退款 + 跟进"},
        {"input": "服务态度投诉", "output": "道歉 + 调查 + 反馈"}
    ]
)

# Agent 加载 Skill
agent = ReActAgent(skills=[skill])
result = agent.run("客户张先生反映最近订单发货延迟")

# Skill 自动执行完整流程,无需手动调用每个 Tool

Skills 选型决策树:

需要的能力?
├── 原子操作(发送邮件、查天气)→ Tools(MCP 协议)
└── 复合能力(撰写邮件、处理投诉)→ Skills(自研或 Skills 框架)
    
场景?
├── 单 Agent 调用工具 → MCP + Tools
└── 多 Agent 协作 + 知识复用 → Skills + A2A

团队规模?
├── 小团队 → 用 Skills 框架自带的管理
└── 企业级 → Dify Nacos A2A / 自建 Skills Registry

面试话术:

"2026 年 Skills 和 Tools 的区别是高频考点。核心理解是:Tools 是原子操作(做一件事),Skills 是复合能力(做好一件事)。Tools 解决'能不能调用'的问题,Skills 解决'会不会调用'的问题。就像餐厅里,Tools 是厨师会切菜,Skills 是厨师会根据客人口味做出一道完整的菜。生产环境中,我把 Skills 定义成企业的'数字员工培训包'——专家经验固化在 Skills 里,新 Agent 加载后立刻具备能力,不需要每个 Agent 都从零学习。Dify 的 Nacos A2A 插件解决了多 Agent 发现的问题,让 Agent 可以动态注册和发现,不需要硬编码。"

延伸阅读:


版本: v2.9 | 更新: 2026-05-09 | by 二狗子 🐕