skill从入门到精通
skills有什么用:
# 1 skill(技能)是智能体完成特定任务的标准化、可复用能力模块,是连接大模型 “大脑” 与实际执行的 “手脚”
# 2 一句话总结:
Skill = 给 AI 提前写好的一套固定做事流程让它遇到某类问题,不用瞎想,直接按步骤干完
本质还是:提示词+方法脚本
--》预设提示词
--》已经写好的方法、脚本
# 3 Agent Skills = 给智能体用的「标准化技能包」
-智能体是人---》skill--》一些功能,可以强化人
-下班回家:走路30分钟走回家
-下班回家:人+自行车技能--》骑回家--》10分钟
-由 Anthropic 发起,开放标准,跨平台通用
-本质:一个文件夹,内置指令、脚本、资源,Agent 可自动发现、加载、执行
-解决:AI 缺上下文、不可靠、不可复用、跨平台不兼容问题
使用skill好处
1 不用重复教 AI同样的事做 100 遍,也不用重新说一遍流程。
2 AI 不会乱搞、更稳定有 Skill 约束,它就按步骤来,不会胡说八道。
3 可以像搭积木一样组合: 搜索 Skill + 总结 Skill + 写 PPT Skill→ 直接拼成一个 “自动做调研汇报” 的超级技能。
4 可以共享、可以卖你写的 Skill 别人也能用,像插件一样。
Skill发展
1 “Skills”这一技术概念最早是由 AI 公司 Anthropic(Claude) 提出的
2 推出时间:约 2025 年 10 月
3 背景:Anthropic 在其大模型 Claude 的生态中,为了解决模型在处理复杂任务时缺乏标准化、难以复用的问题,提出了 Agent Skills 规范。
4 定义:它将特定的能力(如代码审查、发送邮件、数据分析)封装成标准的文件夹结构(包含 SKILL.md 说明书和脚本),让 AI 能够像人类专家调用工具箱一样,按需加载和执行特定技能。
5 地位:这一规范迅速被开发者社区接受,成为了 Agent 开发工具(如 Trae、OpenClaw等)中实现“AI 自主行动”的行业标准
-Trae :AI编辑器,Cursor是一类东西--》自动写代码的智能体
-OpenClaw:龙虾:数字员工--》智能体
6 2026年3月skill 社区生态爆发,开发者开始广泛分享自定义 Skills(如 GitHub 私有技能库),Skills 成为提升开发效率 10 倍的神器
官方Skill
# 1 Skill官方
https://github.com/anthropics/skills
# 2 Claude官方对skill的文档
https://support.claude.com/zh-CN/articles/12512176-%E4%BB%80%E4%B9%88%E6%98%AF%E6%8A%80%E8%83%BD
# 3 Agent skill 标准文档
https://agentskills.io/home
# 4 Agent skill 仓库
https://github.com/agentskills/agentskills
主流Skill仓库
1 skillsmp
https://skillsmp.com/zh/search
2 腾讯SkillHub
https://skillhub.tencent.com/
3 阿里魔搭社区 (ModelScope)
https://www.modelscope.cn/skills
标准文件
# 一个合规的 Skill 必须遵循以下目录结构
my-skill/ # 1. 技能根目录(命名有严格要求,见下文)
├── SKILL.md # 【必需】核心文件:包含元数据(YAML)和指令(Markdown)
├── scripts/ # 【可选】可执行代码(Python/Bash),用于处理确定性任务
│ └── run_task.py
├── references/ # 【可选】参考文档、API 手册,供 AI 查阅
│ └── api-docs.md
└── assets/ # 【可选】静态资源(图片、模板文件等)
└── template.json
# 补一嘴,没有问题
my-skill/
├── SKILL.md
├── run_task.py
核心规范SKILL.md
1 SKILL.md 由两部分组成:YAML 元数据(头部)和 Markdown 指令(正文)
-头部(YAML元数据)和正文(Markdown格式)
1.1 头部(YAML元数据) -位于文件最顶部,用 --- 包裹。这是 AI 判断“是否加载此技能”的依据。
---
name: my-skill-name # 【必填】必须与文件夹名完全一致,仅允许小写字母、数字、连字符(-)
description: 当用户需要处理 PDF 文件时触发,包括提取文本、合并文档或填写表单。# 【必填】描述技能的功能和触发场景
version: "1.0.0" # 【可选】版本号
author: your-name # 【可选】作者
---
1.2 命名严格规范
只能包含:小写字母 (a-z)、数字 (0-9)、连字符 (-)。
禁止包含:下划线 (_)、大写字母、空格。
错误示例:send_email (错), SendEmail (错)
正确示例:send-email (对)
2 Markdown 指令 (正文)
这是 AI 执行任务的“操作手册”。建议包含以下模块:
角色定义:你现在的身份(如“资深 Python 工程师”)。
触发条件:明确何时使用该技能。
执行步骤:分步骤描述逻辑(1. 读取文件 -> 2. 调用脚本 -> 3. 输出结果)。
工具使用:说明如何调用 scripts/ 中的代码。
案例一:最小合法Skill
---
name: pdf-merger
description: 将多个 PDF 文件合并为一个文件。当用户要求合并 PDF 或整理文档时使用。
---
PDF 合并专家
角色
你是一位专业的文档处理助手,擅长使用 Python 脚本处理 PDF 文件。
触发条件
当用户提到“合并 PDF”、“把这几个文件合在一起”或“整理文档”时触发。
执行步骤
1. **确认文件**:询问用户需要合并哪些文件路径,或者检查用户是否已上传。
2. **调用脚本**:使用 `python process.py` 脚本,将文件列表作为参数传入。
3. **验证结果**:检查脚本输出,确认合并后的文件是否生成且可打开。
4. **反馈用户**:告知用户合并成功,并提供输出文件的路径。
注意事项
- 如果文件不存在,请提示用户检查路径。
- 合并后的文件名默认为 `merged_output.pdf`。
脚本调用
python process.py --action {action} --input {file}
案例二:带脚本Skill
1 作用:可以将多个pdf合并成一个文件 的技能
2 目录结构
pdf-merger
-SKILL.md
-process.py
skills文件的头部
---
name: pdf-merger
description: 将多个 PDF 文件合并为一个文件。当用户要求合并 PDF 或整理文档时使用。
---
PDF 合并专家
角色
你是一位专业的文档处理助手,擅长使用 Python 脚本处理 PDF 文件。
触发条件
当用户提到“合并 PDF”、“把这几个文件合在一起”或“整理文档”时触发。
执行步骤
1. **确认文件**:询问用户需要合并哪些文件路径,或者检查用户是否已上传。
2. **调用脚本**:使用 `python process.py` 脚本,将文件列表作为参数传入。
3. **验证结果**:检查脚本输出,确认合并后的文件是否生成且可打开。
4. **反馈用户**:告知用户合并成功,并提供输出文件的路径。
注意事项
- 如果文件不存在,请提示用户检查路径。
- 合并后的文件名默认为 `merged_output.pdf`。脚本调用
python process.py --action {action} --input {file}
import sys
from PyPDF2 import PdfMerger
def merge_pdfs(pdf_list, output):
merger = PdfMerger()
for pdf in pdf_list:
merger.append(pdf)
merger.write(output)
merger.close()
print(f"成功合并 {len(pdf_list)} 个文件到 {output}")
if __name__ == "__main__":
# 简单示例:接收命令行参数
files = sys.argv[1:]
if files:
merge_pdfs(files, "merged_output.pdf")
发送邮件Skill
Skill.md
---
name: sendemail
description: 用于发送电子邮件。当用户明确要求发送邮件、通知或消息给某人时使用。支持指定收件人、主题和正文内容。
---
# 邮件发送技能
## 用法
使用系统提示符中提供的技能目录绝对路径运行捆绑的 Python 脚本
```bash
../.venv/Scripts/python send_email.py --to "recipient@example.com" --subject "您的主题" --body "邮件内容"
```
- `to` (必填): 收件人的电子邮件地址
- `subject` (必填): 邮件主题
- `body` (必填): 邮件正文内容````
## 示例
```bash
../.venv/Scripts/python send_email.py --to "616564099@qq.com" --subject "会议提醒" --body "请在明天下午3点准时参加会议。"
```````
如果发送成功,将返回成功消息;如果失败,则返回错误描述。
## 依赖项"""
需要标准 Python 库中的 smtplib 和 email 模块(通常包含在标准安装中)。
send_email.py
"""邮件发送工具。
通过 SMTP 协议根据命令行参数发送电子邮件。
"""
import argparse
import smtplib
from email.mime.text import MIMEText
SMTP_SERVER = "smtp.qq.com"
SMTP_PORT = 587
SENDER_EMAIL = "你们的邮箱"
SENDER_AUTH_CODE = "获取的密钥"
def send_email(to_email: str, subject: str, content: str) -> str:
"""根据提供的参数发送电子邮件。
参数
----------
to_email : str
收件人的电子邮件地址。
subject : str
邮件的主题行。
content : str
邮件的主要内容。
返回:
成功消息或错误描述字符串。
"""
try:
# 构建邮件
msg = MIMEText(content, "plain", "utf-8")
msg["From"] = SENDER_EMAIL
msg["To"] = to_email
msg["Subject"] = subject
# 发送
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
#加密
server.starttls()
#登录
server.login(SENDER_EMAIL, SENDER_AUTH_CODE)
#发送邮件
server.sendmail(SENDER_EMAIL, to_email, msg.as_string())
return f"✅ 发送成功 → {to_email}"
except Exception as e:
print('==========')
return f"❌ 发送失败:{str(e)}"
def main() -> None:
"""邮件发送命令行工具的主入口点。"""
#构建命令行输入长编码来实现参数输入
parser = argparse.ArgumentParser(description="通过 SMTP 发送电子邮件")
parser.add_argument("--to", type=str, required=True, help="收件人电子邮件地址")
parser.add_argument("--subject", type=str, required=True, help="邮件主题")
parser.add_argument("--body", type=str, required=True, help="邮件正文内容")
args = parser.parse_args()
#将命令行数据提取发送邮件
result = send_email(args.to, args.subject, args.body)
print(result)
if __name__ == "__main__":
main()
开通邮箱发送功能
邮箱配置
注意:
Gmail 需要开启“允许低安全性应用访问”,或者使用应用专用密码(App Password)。
QQ 邮箱和 163 邮箱 需要在设置里开启 SMTP服务 并获取授权码,作为 EMAIL_PASSWORD。
企业邮箱 可能需要不同的 SMTP 服务器地址,请查阅官方文档。
| 邮箱提供商 | SMTP 服务器 | 端口(TLS) | 端口(SSL) |
|---|---|---|---|
| Gmail | smtp.gmail.com | 587 | 465 |
| Outlook/Hotmail | smtp.office365.com | 587 | 465 |
| QQ 邮箱 | smtp.qq.com | 587 | 465 |
| 163 邮箱 | smtp.163.com | 25 | 465 |
| Yahoo | smtp.mail.yahoo.com | 587 | 465 |

qq邮箱通过右上角设置中的安全设置就可以找到了
Trae中使用Skill
# 1 获取天气和发送邮件 两个技能写好了
-可以共享、可以卖你写的 Skill 别人也能用,像插件一样
-Cursor,Trae,LangChain,OpenClaw。。智能体,只要支持skill的使用,我们写的技能,就能给它用
# 2 以 Trae为例,测试
-1 安装Trae--》注册账号登录
-2 在d盘创建一个文件夹:skill_test
-3 在Trae中打开项目
-4 设置--》规则和技能--》创建技能
-全局:所有项目都可以用
-项目:只有当前项目可用
-5 把我们写的技能,压成zip
-6 导入到Trae中
-7 跟Trae交互,就会调用我们的技能
Deep Agent使用skill
三者区别:
| 维度 | LangChain | LangGraph | DeepAgent |
|---|---|---|---|
| 定位 | LLM 应用基础组件库 | Agent 工作流编排引擎 | 高阶自主智能体框架 |
| 抽象层级 | 低(组件级) | 中(流程级) | 高(任务级) |
| 核心能力 | 模型 / 工具集成、简单链 | 图结构、状态管理、持久化、多 Agent | 自动规划、文件系统、子 Agent、开箱即用 |
| 执行模式 | 线性 Chain 为主 | 有向图(节点 + 边),支持循环 / 分支 | 基于 LangGraph 的自主执行 |
| 开发难度 | 低(几行代码) | 中(需定义图结构) | 极低(一行创建) |
| 适用场景 | 简单问答、RAG、基础工具调用 | 复杂流程、多 Agent、生产级可靠性 | 长周期自主任务、代码工程、深度研究 |
| 依赖关系 | 独立基础库 | 可独立,也可与 LangChain 结合 | 强依赖 LangChain + LangGraph |
DeepAgentSkills
-skills
-get-weather
-get_weather.py
-SKILL.md
-sendemail
-sendemail.py
-SKILL.md
-.env
-run_email_skills.py
-run_weather_skills.py
from deepagents import create_deep_agent
from langgraph.checkpoint.memory import MemorySaver
from deepagents.backends.filesystem import FilesystemBackend
from langchain_openai import ChatOpenAI
import os
from dotenv import load_dotenv
load_dotenv()
# 1 创建model
model = ChatOpenAI(
model=os.getenv("MODEL_NAME"),
api_key=os.getenv("API_KEY"),
base_url=os.getenv("BASE_URL"),
)
# 2 短期记忆--》存状态
checkpointer = MemorySaver()
agent = create_deep_agent(
model= model,
backend=FilesystemBackend(root_dir=r'D:\project\PythonProject\DeepAgentSkill'),
skills=[r'D:\project\PythonProject\DeepAgentSkill\skills'],
checkpointer=checkpointer,
)
result = agent.invoke(
{
"messages": [
{
"role": "user",
"content": "北京天气如何?",
}
]
},
config={"configurable": {"thread_id": "12345"}},
)
print(result)
print(result['messages'][-1])
更多推荐



所有评论(0)