2026年5月,Hermes Agent v0.14 的 Skill 系统已经支撑了 50+ 官方 Skill——从代码审查到微信发布,从内容创作到 Cron 调度。但真正让它强大的,是你自己写的 Skill。本文将手把手教你创建第一个生产级 Skill,从零到上线公众号草稿。
为什么 Skill 是 Agent 的核心竞争力
先看一个对比:
没有 Skill 的 Agent:每次对话都要重新描述需求——"请用我的公众号风格写文章,字数1500-2500,开头要有钩子,结尾要有CTA,插图要带数据标注…"这段话你重复了 20 次。
有 Skill 的 Agent:你只需要说"Agent工坊,写一篇关于内存管理的教程"——Agent 自动加载 Skill,知道所有规范、知道要用什么工具、知道输出格式是什么。
差距不在模型能力——在于"记忆的固化程度"。 Skill 就是把你的业务经验、操作规范、踩过的坑,固化成 Agent 的"肌肉记忆"。
Skill 系统架构速览
一个完整的 Skill 定义是这个结构:
---
name: my-custom-skill
description: 你的Skill功能描述
triggers:
- 触发关键词1
- 触发关键词2
version: 1.0.0
metadata:
hermes:
tags: [标签1, 标签2]
related_skills: [关联Skill名]
---
# Skill 正文:给 Agent 的指令
## 执行流程
1. 第一步做什么
2. 第二步做什么
...
关键设计原则:
- name:唯一标识,Agent 用它来加载/引用
- description:一句话描述,Agent 用它判断是否匹配用户意图
- triggers:触发关键词列表,用户消息匹配任一即加载
- 正文:给 Agent 的详细指令,可以是 SOP、规范、代码模板等
Step-by-Step:创建一个"公众号数据周报"Skill
假设你的场景是:每周日自动生成公众号数据周报,包括阅读量、分享数、粉丝增长、文章表现。
Step 1:定义 Skill 元数据
---
name: weekly-report-generator
description: 公众号数据周报生成器 - 自动采集数据、生成图表、撰写分析并提交草稿
triggers:
- 生成周报
- weekly report
- 数据周报
version: 1.0.0
metadata:
hermes:
tags: [wechat, analytics, automation]
related_skills: [wechat-public-account-draft]
---
Step 2:定义数据采集流程
在 Skill 正文中定义数据采集逻辑,使用 execute_code 工具调用微信数据接口:
import subprocess, json
from datetime import datetime, timedelta
def fetch_weekly_stats():
"""获取最近7天的公众号数据"""
# 1. 获取 access_token
r = subprocess.run([
'curl', '-s', '-X', 'POST',
'https://api.weixin.qq.com/cgi-bin/stable_token',
'-H', 'Content-Type: application/json',
'-d', json.dumps({
"grant_type": "client_credential",
"appid": "YOUR_APPID",
"secret": "YOUR_SECRET"
})
], capture_output=True, text=True)
token = json.loads(r.stdout)['access_token']
# 2. 获取文章数据
end_date = datetime.now()
begin_date = end_date - timedelta(days=7)
r = subprocess.run([
'curl', '-s', '-X', 'POST',
f'https://api.weixin.qq.com/cgi-bin/freepublish/batchget'
f'?access_token={token}',
'-H', 'Content-Type: application/json',
'-d', json.dumps({
"offset": 0, "count": 20,
"no_content": 1
})
], capture_output=True, text=True)
return json.loads(r.stdout)['item']
Step 3:定义报告模板
在 Skill 正文中嵌入 Markdown 报告模板,使用 {placeholder} 作为变量占位符:
# 📊 公众号周报 | {start_date} - {end_date}
## 本周概览
- 📈 总阅读量:{total_reads}(环比 {change_percent}%)
- 🔄 总分享数:{total_shares}
- 👥 新关注:{new_followers} 人
- 📝 发布文章:{article_count} 篇
## 文章表现 Top 3
| 排名 | 标题 | 阅读 | 分享 | 转化率 |
|------|------|------|------|--------|
| 🥇 | {title_1} | {reads_1} | {shares_1} | {conv_1}% |
| 🥈 | {title_2} | {reads_2} | {shares_2} | {conv_2}% |
| 🥉 | {title_3} | {reads_3} | {shares_3} | {conv_3}% |
## 关键发现
{3-5条基于数据的洞察}
## 下周建议
{3条可操作的优化建议}
---
#公众号数据 #周报 #AI运营
Step 4:添加质量检查
在 Skill 末尾添加输出前检查清单,确保生成的报告质量:
## 输出前检查清单
生成报告后,必须逐项检查:
- [ ] 所有百分比已计算并标注环比方向(↑/↓)
- [ ] Top 3 文章标题完整,不含省略号
- [ ] 关键发现至少引用 2 个具体数字
- [ ] 优化建议具体可执行(不是"提升质量"这种空话)
- [ ] 文件名格式:weekly-report-YYYYMMDD.md
Step 5:完整 Skill 组合
把以上 4 步组合起来,你的完整 Skill 文件就是:
---
name: weekly-report-generator
description: 公众号数据周报生成器
triggers: [生成周报, weekly report, 数据周报]
version: 1.0.0
metadata:
hermes:
tags: [wechat, analytics, automation]
related_skills: [wechat-public-account-draft]
---
# 公众号数据周报生成器
## 执行流程
1. 确认当前日期,计算本周起止时间(周一到周日)
2. 调用微信 API 获取 7 天文章数据
3. 按模板生成 Markdown 报告
4. 执行输出前检查清单
5. 将报告保存到 content/reports/ 目录
## 数据采集代码
[上方的 fetch_weekly_stats() 代码]
## 报告模板
[上方的 Markdown 模板]
## 输出前检查清单
[上方的检查清单]
进阶技巧:让 Skill 更智能
技巧 1:引用其他 Skill
你的 Skill 可以依赖系统中已有的 Skill:
metadata:
hermes:
related_skills: [wechat-public-account-draft, gpt-image-2-designer]
当用户说"生成周报并提交草稿",Agent 会自动加载 wechat-public-account-draft Skill 来处理提交步骤。
技巧 2:条件触发 + 动态上下文
更灵活的触发方式:
triggers:
- 生成周报
- 数据分析报告
- 公众号复盘
Agent 会在用户消息匹配任一关键词时加载 Skill。你可以把相关场景都列进来。
技巧 3:模板变量
在 Skill 正文中使用 {placeholder} 标记,执行时 Agent 会替换为实际值:
总阅读量:{total_reads}(环比 {change_percent}%)
Agent 的推理能力会自动把 {total_reads} 替换为 API 返回的实际数字。
常见踩坑与解决
| 问题 | 原因 | 解决方案 |
|---|---|---|
| Skill 不触发 | triggers 关键词不匹配用户输入 | 加更多同义触发词;检查是否含特殊字符 |
| Agent 忽略某些步骤 | 步骤描述太模糊 | 用"必须""逐一"等强调词,加检查清单 |
| 输出格式不对 | 模板没有被正确解析 | 用代码块包裹模板(```markdown ... ```) |
| 重复执行 | 多个 Skill 都有相似 trigger | 用更精确的关键词区分,或合并为一个 Skill |
| 变量不替换 | Agent 没识别到 {var} 是变量 |
在 Skill 开头加:"以下模板中的 {xxx} 是变量占位符,执行时替换为实际值" |
你的第一个 Skill:15 分钟实操
现在动手创建一个最简单的 Skill——"问候 Skill",验证整个流程:
1. 创建 Skill 文件
保存为 greeting.md:
---
name: greeting
description: 个性化问候 Skill,根据时间自动选择问候语
triggers: [你好, 嗨, hello, hi, 早上好, 下午好, 晚上好]
version: 1.0.0
---
# 个性化问候 Skill
## 执行逻辑
1. 获取当前时间
2. 按规则选择问候语:
- 05:00-11:59 → "早上好!新的一天,加油 💪"
- 12:00-17:59 → "下午好!今天的效率怎么样?"
- 18:00-22:00 → "晚上好!今天辛苦了 🌙"
- 其他时间 → "夜深了,注意休息 🌟"
3. 附加一句随机的正能量短句
4. 以用户的名字称呼(如果已知)
2. 加载 Skill
在 Hermes Agent 对话中:
/skill load greeting
或者让 Agent 自动识别——当你说"早上好"时,Agent 匹配到 triggers 就会加载。
3. 测试
用户:早上好
Agent:[加载greeting Skill] 早上好!新的一天,加油 💪 今天的小目标:比昨天进步1%。
你的第一个 Skill 已经生效了!
总结:Skill 让 Agent 从"工具"变成"团队"
回到开头那个对比:
- 没有 Skill:每次反复描述需求,费 token 费时间
- 有 Skill:Agent 记住你的规范和偏好,一句话触达
这就是 Agent 创业的核心竞争力——不是买更多模型,而是把你自己的经验固化成可复用的 Skill。
当你的 Skill 库积累到 20+ 个,你就不再是一个人在战斗——你有一整个 AI 团队,每个 Skill 都是你的"数字员工"。
行动建议:
1. 今天就把你最重复的 1 个操作写成一个 Skill
2. 测试 3 次确保它能稳定触发
3. 下周再写第二个——积累速度远超你想象
