Jean's Blog

一个专注软件测试开发技术的个人博客

0%

Agent Skill

智能技能库的诞生

核心比喻:给 AI 助理配个「按需调用的技能库」

图里用了一个非常形象的比喻:

你雇了一个聪明但不熟悉你业务的助理,有两种方式让他上手工作:

  1. 错误方式:第一天就把公司所有规章制度、流程手册全塞给他 → 信息过载,直接懵掉,效率极低。
  2. 正确方式:给他一个「智能技能库」,只有当他要处理具体任务(比如 “分析财报”“安排跨国会议”)时,才调出对应的「技能手册」给他看 → 高效、不浪费精力。

这个比喻,就是为了引出后面的核心概念:LangChain 的 Skills(技能)功能

核心概念:LangChain Skills 是什么?

图里给出了明确的定义:

LangChain 的 Skills(技能)功能,就是为 AI 智能体(Deep Agent)准备的「智能技能库」。

它的核心作用是:

  • 让 AI 智能体 按需调用 复杂、专业化的知识和工作流程
  • 避免了 “把所有知识一次性喂给 AI” 的低效方式
  • 最终实现「既高效、又节省资源」的效果

背后的深层意义:解决了 AI 智能体的关键痛点

这个设计,其实解决了 AI 智能体开发中一个很核心的矛盾:

  1. 矛盾点:AI 智能体需要处理复杂的专业任务(比如代码开发、财务分析),但大模型的上下文窗口、知识容量都是有限的,一次性加载所有知识不仅成本高,还容易让模型 “信息过载”。
  2. 解决方案:Skills 就像给 AI 装了一套「插件式工具箱」,平时不用的时候,这些 “技能”(专业知识、流程、工具调用方法)都存在库里;当 AI 判断自己需要处理某个特定任务时,再动态加载对应的技能,调用完成后就释放掉资源。

举个例子:

  • 当 AI 智能体要帮你写 Python 代码时,它才会调用「代码开发技能」,里面包含语法规则、调试流程、工具调用方法;
  • 当它要帮你写周报时,就切换调用「办公文档技能」,加载周报模板、公司汇报规范等内容。

一句话总结

这张图讲的就是:LangChain 的 Skills 功能,是让 AI 智能体像人类助理一样,按需调用专业技能的机制,既避免了信息过载,又大幅提升了复杂任务的处理效率。

什么是Agent Skills

基本定义

Agent Skills 是一种标准化的格式,用来给 AI Agent 添加新能力。

简单来说,一个技能就是一个文件夹,里面有一个 SKILL.md 文件,这个文件会告诉 Agent:

  1. 这个技能叫什么名字
  2. 它能做什么事
  3. 具体要怎么完成某项任务

你可以把它理解成:

  • 给 AI 智能体写的「标准化说明书」
  • 只要你按这个格式写好一个技能,任何支持这个标准的 Agent 都能直接看懂并使用它
  • 核心载体就是 SKILL.md 文件,它是 Agent 和技能之间的 “通用语言”

核心价值

角色 核心价值 通俗理解
技能作者 写一次技能,就能在很多不同的 Agent 产品里使用 就像写了一个通用插件,一次开发,到处复用,不用为每个平台单独适配
Agent 使用者 可以轻松给 Agent 添加新功能,开箱即用 就像给手机装 APP,想让 Agent 会做什么,直接导入对应的技能包,不用自己从零开发
团队和企业 可以把团队的知识整理成技能包,方便管理和分享 把公司的业务流程、专业知识打包成标准化技能,新人 / 新 Agent 直接就能上手,知识不会流失

Agent Skills的组成结构

目录结构

1
2
3
4
5
my-skill/
├── SKILL.md # 必需:技能说明文件
├── scripts/ # 可选:可执行的代码
├── references/ # 可选:参考资料
└── assets/ # 可选:模板和资源文件

通俗解读:

  • SKILL.md(必需):整个技能的 “大脑” 和 “说明书”,是 AI Agent 能看懂这个技能的核心文件,没有它就不是一个合法的技能包。
  • scripts/(可选):放和技能相关的代码脚本,比如实现 PDF 处理的 Python 代码,方便 Agent 直接调用执行。
  • references/(可选):放参考资料,比如 API 文档、业务规则说明,Agent 处理任务时可以查阅这些信息。
  • assets/(可选):放模板文件、资源文件,比如 PDF 表单模板、Excel 表头模板,Agent 可以直接复用。

你可以把它理解成一个标准化的「工具包」:

  • SKILL.md 是工具的使用说明书
  • scripts/ 是工具的核心零件
  • references/ 是工具的补充手册
  • assets/ 是工具的配套耗材 / 模板

SKILL.md文件规范

SKILL.md 的标准格式示例,分为两部分:开头元信息 + 正文使用说明

1
2
3
4
5
6
7
8
9
10
11
12
---
name: pdf-processing
description: Extract text and tables from PDF files, fill forms, merge documents.
---

# PDF处理技能

## 何时使用此技能
当用户需要处理PDF文件时使用此技能...

## 如何提取文本
1. 使用pdfplumber进行文本提取...
  • name:技能的唯一名称,比如 pdf-processing,是 Agent 识别技能的 ID。
  • description:技能的一句话描述,告诉 Agent “这个技能能做什么”,比如提取 PDF 文本、填充表单、合并文档。

这部分是给 Agent 的「快速索引」,Agent 在判断要不要调用这个技能时,会先看这两行信息。

正文需要包含这些关键信息:

  • 何时使用:明确说明在什么场景下应该调用这个技能(比如用户说 “帮我提取 PDF 里的文字” 时)。
  • 操作步骤:告诉 Agent 具体要怎么一步步完成任务,比如用什么工具、按什么顺序执行。
  • 还可以补充:注意事项、参数说明、错误处理方式等。

技术规范

1.必需字段:技能的 “身份证”

这两个字段是每个 SKILL.md 文件必须有的,相当于技能的唯一标识和简介:

字段 要求 通俗解读
name(技能名称) 1-64 个字符,只能用小写字母、数字和连字符,不能以连字符开头 / 结尾 技能的唯一 ID,比如 pdf-processing,必须干净规范,避免系统识别出错
description(技能描述) 1-1024 个字符,要说明 “技能能做什么、什么时候用” 给 AI 和用户看的一句话简介,比如 “提取 PDF 文本、填充表单、合并文档”,是 AI 判断要不要调用它的关键

2.可选字段:技能的 “补充信息”

这些字段不是必须的,但加上能让技能更完善、兼容性更好:

  • license:许可证信息(比如 MIT 协议),说明技能的使用权限
  • compatibility:运行环境要求(500 字以内),比如 “需要 Python 3.9 + 和 pdfplumber 库”,避免 Agent 在不兼容的环境里调用失败
  • metadata:其他附加信息,比如作者、版本号、更新时间等
  • allowed-tools:允许使用的工具列表(实验功能),限制技能能调用哪些工具,保证安全性

3.文件引用规范:技能的 “文件管理规则”

这部分是为了让技能包的文件结构清晰、Agent 能顺利找到资源:

  1. 必须使用相对路径:所有文件引用(比如脚本、模板)都要相对于技能文件夹的路径,比如 ./scripts/extract_pdf.py,这样技能包复制到任何地方都能正常工作
  2. 引用不要嵌套太深:比如不要写成 ./a/b/c/d/file.txt,尽量保持扁平结构
  3. 避免层层引用:不要在文件里引用文件再引用文件,直接让结构一目了然,减少 Agent 读取时的出错概率

Agent Skills的工作原理

1. 按需加载机制:像查字典一样调用技能

技能的加载过程,就像我们查字典一样,分三步完成:

  1. 第一步:Agent 启动时,只 “扫一眼目录”

    Agent 启动时,会先快速扫描所有技能包,只记住每个技能的名字和用途(比如 “pdf-processing:处理 PDF 文件”),但不会把所有技能的详细内容、代码都加载进内存。

    就像你只记住了字典的目录和词条标题,不会把整本字典背下来。

  2. 第二步:用户提任务时,再 “翻到对应的词条”

    当用户提出具体任务(比如 “帮我提取 PDF 里的文字”),Agent 会根据任务描述,判断需要调用哪个技能,然后才去读取这个技能的SKILL.md详细说明。

    就像你要查某个词时,才会翻到字典对应的页码,看完整解释。

  3. 第三步:执行任务时,按需 “调用补充材料”

    Agent 按照技能说明执行任务,必要时还会加载技能包里的代码、模板、参考资料(比如scripts/里的 PDF 处理脚本)。

    就像你查词时,还会顺带看一下词条里的例句、用法说明。

这个机制的核心好处是:平时不占资源,用的时候再加载,既高效又省内存

2.核心优势:为什么这种设计很优秀?

优势 通俗解读
简单易懂 技能文件就是普通的文本(Markdown 格式),不用复杂的开发工具,任何人都能看懂、修改
灵活扩展 既能写简单的文字说明,也能扩展成包含代码、模板、参考资料的完整功能包,从小任务到复杂业务都能覆盖
方便分享 技能就是一个文件夹,可以直接复制、用 Git 做版本控制、打包发给别人,分享和复用成本极低

集成Agent Skills到Agent中

1.集成方法:两种主流方式

类型 说明 通俗理解
文件系统 Agent 在电脑上运行,通过命令行来使用技能 本地运行的 Agent,直接读取本地技能文件夹,用命令行就能调用技能
工具型 Agent 通过工具接口来激活技能和访问资源 服务端 / 平台型 Agent,通过标准化的工具接口来加载和使用技能包

简单说,就是 “本地直读” 和 “接口调用” 两种模式,覆盖了从个人开发到企业服务的不同场景。

2.集成步骤:Agent 是怎么和技能建立联系的?

这三步对应了前面讲的「按需加载」机制:

  1. 发现技能:扫描指定目录,找到所有有效的技能文件夹

    就像系统先扫一遍你电脑里的 “技能仓库”,识别出所有合法的技能包。

  2. 加载基本信息:启动时只读取每个SKILL.md文件的开头部分(name 和 description)

    只把技能的 “目录” 加载到内存,不读完整说明书,保证启动速度。

  3. 注入上下文:把技能的基本信息告诉 Agent,让它知道有哪些技能可用

    让 AI 智能体知道 “我有这些工具可以用”,为后续按需调用做好准备。

3.DeepAgents 集成示例

  • LangChain 的 Deep Agents 框架原生支持 Agent Skills
  • 必须确保 DeepAgents 及其依赖组件更新到 v0.4 及以上版本,才能正常使用这个功能

这意味着你可以直接用 DeepAgents 框架,按前面的规范写好技能包,就能快速实现一个带技能扩展能力的 AI 智能体了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from deepagents import create_deep_agent
from langgraph.checkpoint.memory import MemorySaver
from deepagents.backends.filesystem import FilesystemBackend

# 人机协作模式需要检查点功能
checkpointer = MemorySaver()

agent = create_deep_agent(
backend=FilesystemBackend(root_dir="/Users/user/{project}", virtual_mode=True),
skills=["/Users/user/{project}/skills/"],
interrupt_on={
"write_file": True, # 需要用户确认:批准、编辑或拒绝
"read_file": False, # 不需要中断
"edit_file": True # 需要用户确认:批准、编辑或拒绝
},
checkpointer=checkpointer, # 必须配置!
)

result = agent.invoke(
{
"messages": [
{
"role": "user",
"content": "What is langgraph?",
}
]
},
config={"configurable": {"thread_id": "12345"}},
)

代码解读:

  1. 导入依赖

    1
    2
    3
    from deepagents import create_deep_agent
    from langgraph.checkpoint.memory import MemorySaver
    from deepagents.backends.filesystem import FilesystemBackend
    • create_deep_agent:DeepAgents 框架的核心函数,用来创建 AI 智能体
    • MemorySaver:LangGraph 的内存检查点工具,用来保存对话状态(支持多轮对话)
    • FilesystemBackend:文件系统后端,让 Agent 可以从本地文件夹加载技能包
  2. 初始化检查点

    1
    checkpointer = MemorySaver()

    开启对话状态保存功能,是人机协作模式的必需配置。

  3. 创建 Deep Agent 实例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    agent = create_deep_agent(
    backend=FilesystemBackend(root_dir="/Users/user/{project}", virtual_mode=True),
    skills=["/Users/user/{project}/skills/"],
    interrupt_on={
    "write_file": True, # 需要用户确认:批准、编辑或拒绝
    "read_file": False, # 不需要中断
    "edit_file": True # 需要用户确认:批准、编辑或拒绝
    },
    checkpointer=checkpointer, # 必须配置!
    )
    • backend:配置文件系统后端,指定项目根目录,virtual_mode=True 表示启用虚拟文件系统模式
    • skills:指定技能包所在的文件夹路径,Agent 会从这里扫描并按需加载技能
    • interrupt_on:设置需要用户确认的操作,比如写文件、编辑文件时需要人工批准,读文件则不需要
    • checkpointer:绑定前面初始化的检查点工具
  4. 调用 Agent 执行任务

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    result = agent.invoke(
    {
    "messages": [
    {
    "role": "user",
    "content": "What is langgraph?",
    }
    ]
    },
    config={"configurable": {"thread_id": "12345"}},
    )
    • invoke:调用 Agent 执行任务
    • messages:用户的提问内容
    • config:配置对话线程 ID,用来标识当前会话,支持多轮对话状态的保存

应用场景与价值

1. 核心应用领域

Agent Skills 最典型的 4 种用法:

  • 专业知识沉淀:把专家的经验、业务规则整理成技能包,让 AI 也能像资深员工一样处理专业任务(比如财务审核、法律咨询)。
  • 能力扩展:给 Agent 增加具体功能,比如制作 PPT、搭建服务器、处理 PDF 等,相当于给 AI 装了 “专属插件”。
  • 工作流自动化:把复杂的多步骤任务(比如周报生成、客户跟进流程)变成标准化的技能流程,AI 可以按步骤自动执行。
  • 跨平台复用:同一个技能包,在不同的 Agent 产品 / 框架里都能直接使用,不用重复开发。

2.实际价值体现

价值点 通俗解读
统一标准 把团队的最佳实践固化成技能,所有人 / 所有 Agent 都按同一套标准执行,避免 “各搞一套”
降低成本 不用为每个 Agent 单独开发功能,一次开发、多处复用,减少重复投入
提高质量 技能里的流程和规则是固定的,AI 执行时更稳定可靠,减少出错概率
促进协作 技能包可以像文件一样分享、管理,团队知识不再只存在于个人手里,更容易传承和迭代

Agent Skills 不仅能让 AI 变得更能干,还能帮团队沉淀知识、统一流程、降低成本,让 AI 能力的扩展和管理变得更高效。

开发与实施指南

写出更易用、更稳定的 Agent Skills 的关键原则:

保持简洁

  • 要求SKILL.md 文件不要太长,建议控制在 500 行以内
  • 目的:让内容清晰易读,AI 和人都能快速理解技能的核心用途和步骤
  • 理解:就像给别人写操作说明,重点突出、步骤清晰比长篇大论更有用

📂 分离内容

  • 要求:把详细的参考资料放到单独的文件里,不要都塞在SKILL.md
  • 目的:保持主文件的简洁,避免信息过载
  • 理解:可以把复杂的 API 文档、规则说明放到references/文件夹里,只在SKILL.md里写关键步骤和使用场景

</> 提供示例

  • 要求:在技能说明里给出具体的输入输出例子
  • 目的:让用户 / AI 一眼就明白 “这个技能怎么用、能得到什么结果”
  • 理解:比如 “输入:帮我提取 PDF 里的文字 → 输出:PDF 的文本内容,去除格式和图片”,这样 AI 就知道什么时候该调用这个技能了

🛡️ 考虑边界

  • 要求:提前处理常见问题和特殊情况,比如文件不存在、格式错误、权限不足等
  • 目的:提高技能的可靠性,避免 AI 调用时出错
  • 理解:在说明里加上 “如果文件不存在,需要提示用户上传文件”“如果是加密 PDF,需要用户提供密码” 这类处理逻辑,让技能更健壮

这 4 条实践的核心目标,就是让你的SKILL.md文件简洁、清晰、易用、稳定,既能让 AI 准确理解和调用,也方便其他人维护和复用。