🧩 Hermes 自定义技能入门:创建你的第一个 Skill
高阶第 1 篇 — 让 Hermes 学会你教的任何事
🎯 这篇讲什么
Hermes 最独特的能力:用 Skill 文件教会它新技能。写一个 Markdown 文件,Hermes 就能自动加载、按你规定的流程执行。
🧠 什么是 Skill?
Skill 就是一个 Markdown 说明书,告诉 Hermes:
你写一份 Skill → Hermes 加载 → 遇到匹配场景 → 自动按流程执行
📝 第一个 Skill:5 分钟入门
场景
你经常需要 Hermes 帮你检查服务器状态。每次都描述一遍"ssh 上去、查 CPU、查内存、查磁盘"很烦。
创建文件
mkdir -p ~/.hermes/skills/my-skills
# ~/.hermes/skills/my-skills/server-health-check/SKILL.md
---
name: server-health-check
description: 当用户要求检查服务器健康状态时使用。SSH 连接服务器,
检查 CPU、内存、磁盘和关键服务状态。
version: 1.0.0
---
# 服务器健康检查
## 触发条件
当用户说以下任一内容时使用此技能:
- "检查服务器"
- "服务器状态"
- "health check"
- "看看服务器还活着吗"
## 步骤
1. SSH 连接到目标服务器
2. 检查 CPU 使用率:`top -bn1 | head -5`
3. 检查内存:`free -h`
4. 检查磁盘:`df -h`
5. 检查关键服务:`systemctl status nginx docker`
6. 汇总结果,用中文告诉用户
## 注意事项
- 如果 SSH 连接失败,告知用户并询问是否重试
- CPU > 80% 或磁盘 > 90% 时用 ⚠️ 标记警告
- 不要在输出中包含敏感路径信息
## 验证
确认所有检查项都有结果输出,且有明确的正常/异常标识。
安装技能
# Hermes 会自动发现 ~/.hermes/skills/ 下的新技能
# 对话中手动加载确认
/skill server-health-check
使用
用户: 检查一下我的服务器
Hermes: [加载 server-health-check 技能]
→ SSH 连接...
→ CPU: 23% ✅
→ 内存: 4.2G/8G ✅
→ 磁盘: 45% ✅
→ nginx: running ✅ docker: running ✅
服务器一切正常!
📐 Skill 文件结构
---
name: skill-name # 必填,唯一标识
description: 做什么用 # 必填,越具体越好
version: 1.0.0 # 语义化版本
metadata: # 可选元数据
tags: [标签1, 标签2]
related_skills: [关联技能]
---
# 技能标题
## 触发条件
明确列出什么情况下加载此技能
## 步骤
1. 第一步做什么
2. 第二步做什么
3. ...
## 注意事项 / Pitfalls
常见错误和注意事项
## 验证
怎么确认执行正确
🏷️ Skill 命名规范
| 规则 | 示例 |
|---|---|
| 全小写 | ✅ server-check |
| 用连字符不用下划线 | ✅ health-monitor ❌ health_monitor |
| 简短但有意义 | ✅ git-pr-review ❌ gpr |
| 描述功能而非场景 | ✅ docker-deploy ❌ when-i-want-to-deploy |
📂 Skill 可以带文件
除了 SKILL.md,Skill 目录下还可以放:
my-skills/my-skill/
├── SKILL.md # 主文件(必须)
├── references/ # 参考文档
│ └── api-docs.md
├── templates/ # 模板文件
│ └── config.yaml
├── scripts/ # 可执行脚本
│ └── check.sh
└── assets/ # 静态资源
└── diagram.png
🔄 技能生命周期
创建 → 安装 → Hermes 自动发现 → 对话中触发 → 执行 → 积累改进
│ │
└────────── 发现问题 → patch 更新 ←──────────────┘
📊 Skill vs Claude Code Skill
| Hermes Skill | Claude Code Skill | |
|---|---|---|
| 文件格式 | SKILL.md + frontmatter | 纯 .md |
| 自动发现 | ✅ 目录 + 技能市场 | ❌ 需手动指定目录 |
| 脚本支持 | ✅ scripts/ 目录 | ❌ |
| 模板支持 | ✅ templates/ 目录 | ❌ |
| 版本管理 | ✅ version 字段 | ❌ |
| 触发机制 | 描述匹配 + 手动加载 | 内容匹配 |
❓ 常见问题 (FAQ)
Q1: 我写的 Skill 没被加载?
检查:① 放在 ~/.hermes/skills/ 下;② 文件名是 SKILL.md;③ 有 frontmatter(--- 包裹的部分);④ name 和 description 必填。
Q2: Skill 怎么触发?
两种方式:① 用户说的话匹配了 description 中的场景;② 手动 /skill 名字。
Q3: Skill 能调用其他 Skill 吗?
可以。在 related_skills 中列出关联技能名。
Q4: 写错了怎么改?
直接编辑 SKILL.md,下次加载时自动生效。或者用 skill_manage(action='patch') 让 Hermes 帮你改。
Q5: 能分享给朋友吗?
能。把 Skill 目录打包发过去,放到对应位置即可。或者发布到技能市场。
Q6: Skill 一定要手写吗?
不用。你可以在对话中纠正 Hermes,如果某个流程重复 2-3 次,Hermes 会自动建议创建 Skill。
⚠️ 实操避坑
| 坑 | 正确做法 |
|---|---|
| description 写太泛("处理文件") | 写具体场景:"当用户要求批量重命名图片文件时" |
| 忘了写 frontmatter | --- 包裹的 name 和 description 是必填的 |
| 步骤写成散文 | 用有序列表,每步一句话,有明确命令的附上命令 |
| Skill 目录名和 name 不一致 | 保持一致,避免混淆 |
| 脚本路径写死 | 用相对路径,脚本放 scripts/ 目录下 |
标签:#AI #HermesAgent #高阶 #Skill #自定义