技能开发:用 Skill 扩展 Hermes Agent 能力边界
为什么要开发技能
当 Hermes Agent 帮你完成了三次”下载数据→回测→生成报告”的工作流后,你会发现每次的指令都差不多。为什么不把它保存下来,下次直接复用?
这就是 Skill(技能)的作用——把你的工作方法固化为 Agent 可读的知识文档。
Skill 解决了什么问题
| 问题 | 没有 Skill | 有 Skill |
|---|---|---|
| 每次重复描述 | ”先下载数据,然后回测,再生成报告……” | 一句话:“执行量化日报” |
| 遗漏步骤 | 忘了检查数据完整性 | Skill 里写好了所有步骤 |
| 知识失传 | 换环境从头学 | Skill 随身携带 |
| 效率提升 | 靠记忆和复制粘贴 | 靠结构化知识 |
SKILL.md 结构
每个 Skill 都是一个目录下的 SKILL.md 文件:
~/.hermes/skills/
├── quant-morning-check/ ← 技能目录
│ └── SKILL.md ← 技能文档
├── wind-report-generator/
│ └── SKILL.md
└── data-analysis-pro/
├── SKILL.md
├── references/ ← 可选:参考文档
└── scripts/ ← 可选:脚本
SKILL.md 格式
---
name: my-skill
description: 一句话描述这个技能在什么场景下用
version: 1.0.0
author: 你的名字
license: MIT
metadata:
hermes:
tags: [标签1, 标签2]
related_skills: [相关的-其他-技能]
---
# 技能标题
## 概述
这个技能做什么、为什么有用。
## 使用场景
什么时候触发这个技能。
## 步骤
1. 第一步:做什么
2. 第二步:做什么
3. ...
## 常见坑
- 可能遇到的问题
- 如何解决
## 验证
怎么确认技能执行成功
第一个技能:量化数据检查器
我们来创建一个检查量化数据完整性的技能。
---
name: quant-data-checker
description: 检查 DuckDB 量化数据的完整性,包括缺失日期、数据行数、最新更新日期
version: 1.0.0
author: Hermes
license: MIT
metadata:
hermes:
tags: [量化, 数据, 检查]
related_skills: [quant-morning-check]
---
# 量化数据检查
## 概述
检查 DuckDB 中存储的 A 股、ETF、可转债日线数据的完整性,
确保没有缺失日期、数据行数在合理范围、最新数据及时更新。
## 步骤
1. 连接 DuckDB 数据库(路径:data/quant.duckdb)
2. 检查股票数据:查询 stock_daily 表,统计总行数和最新日期
3. 检查 ETF 数据:查询 etf_daily 表
4. 检查可转债数据:查询 bond_daily 表
5. 检查缺失日期:按 code 分组,检查日期是否连续
6. 汇总结果
## SQL 模板
```sql
-- 检查数据量
SELECT 'stock' as type, count(*) as rows, max(date) as latest
FROM stock_daily
UNION ALL
SELECT 'etf', count(*), max(date) FROM etf_daily
UNION ALL
SELECT 'bond', count(*), max(date) FROM bond_daily;
正常范围
- 股票:> 1500 万行
- ETF:> 6 万行
- 可转债:> 70 万行
- 最新日期:应为最近 5 个交易日内
验证
输出应包含每个数据类型的行数和最新日期,无 SQL 错误。
## 创建技能的方式
### 方式一:对话中让 Agent 创建
把这个流程保存成技能”quant-data-checker”:
- 连接 DuckDB
- 检查三张表的数据量
- 报告结果
Agent 会自动创建 SKILL.md。
### 方式二:手动用工具创建
```python
# 在 execute_code 或对话中
skill_manage(
action='create',
name='quant-data-checker',
content='''---\nname: quant-data-checker\n...\n---\n\n...'''
)
方式三:直接写文件
mkdir -p ~/.hermes/skills/quant-data-checker
# 然后编辑 SKILL.md
加载和使用技能
在会话中加载
hermes -s quant-data-checker # 启动时加载
或在会话中:
/skill quant-data-checker
在 cron 任务中使用
hermes cron create "0 6 * * *" \
--name "数据检查" \
--skills quant-data-checker \
--prompt "执行数据完整性检查并报告"
自动加载
Agent 在收到任务时会自动扫描技能库,找到匹配的技能并加载。所以你不需要每次都手动指定。
高级技能技巧
引用文件
技能可以附带参考文档和模板脚本:
my-skill/
├── SKILL.md
├── references/
│ └── api-docs.md ← API 参考文档
├── templates/
│ └── report-template.md ← 报告模板
└── scripts/
└── validate.py ← 验证脚本
在 SKILL.md 中引用它们:
## 参考
见 `references/api-docs.md` 了解 API 详情。
分类组织
把同类技能放在一个分类下:
~/.hermes/skills/
├── quant/ ← 量化分类
│ ├── data-checker/
│ └── backtest-runner/
├── devops/ ← 运维分类
│ ├── disk-YOUR_API_KEY/
│ └── system-monitor/
└── writing/ ← 写作分类
├── report-generator/
└── article-writer/
创建时指定分类:
skill_manage(action='create', name='my-skill', category='quant')
技能模板变量
在 SKILL.md 中可以用 {{变量}} 做模板,Agent 执行时替换为实际值:
## 步骤
1. 使用 Python 计算 {{stock_code}} 的 20 日均线
2. 判断收盘价是否在均线 {{threshold}}% 以内
技能维护
查看已安装技能
hermes skills list
更新技能
发现技能过时了,随时更新:
把这个技能的步骤 3 更新成新的 API 调用方式
Agent 会自动用 skill_manage(action='patch') 更新。
技能自动维护
Hermes 有一个 Curator(策展人)系统,会自动检查技能质量:
hermes curator status # 查看技能库健康状态
hermes curator run # 手动触发检查
它会标记过时的技能、建议合并重复的技能。
常见问题
技能加载了但没有效果?
检查技能是否有完整的 frontmatter(--- 包裹的 YAML 头),description 不能超过 1024 字符。
技能太多会不会影响性能?
Agent 会根据任务描述自动匹配相关技能,不是全部加载。所以技能多不意味着响应慢。
怎么分享技能给别人?
技能就是纯文本的 SKILL.md 文件。可以:
- 分享文件本身
- 推送到 GitHub 仓库
- 发布到 Hermes Skills Hub:
hermes skills publish
小结
Skill 是 Hermes Agent 最强大的特性之一。它让你把经验结构化、知识可复用、工作自动化。
从创建第一个简单的检查技能开始,逐步建立起自己的技能库——你的 Agent 会越来越懂你,效率越来越高。
本文是 Agent 学习路径的第 4 步,也是最后一步。Agent 路径学完了,接下来建议切换到「量化学习路径」开始策略实战。