第六章 技能系统
技能(Skills)是墨鱼的拿手绝活。Hermes Agent 内置 100+ 技能,涵盖编程、写作、运维、创作等方方面面。你还可以教墨鱼新技能——它会记住,下次直接用。
什么是 Skill?
Skill 是一个按需加载的知识文档。它不是插件,不是代码包,而是一组指令,告诉 Agent 在特定场景下应该怎么行动。
核心特点:
- 按需加载:只在相关场景下才读取,不浪费 Token
- 渐进式展开:先看摘要,需要时才加载完整内容
- 自动进化:Agent 完成复杂任务后,可以自动保存为 Skill
- 开放标准:兼容 agentskills.io 标准
所有 Skill 存放在 ~/.hermes/skills/ 目录下。
Skill 的三种用法
1. 斜杠命令
每个安装的 Skill 自动变成斜杠命令:
/plan 实现一个用户注册功能
/review 检查最近的代码变更2. 自然语言触发
直接对话,Agent 会自动匹配相关 Skill:
你:帮我写一个 Python 脚本处理 CSV 文件
Hermes:[自动加载 python 相关技能...] 好的,我来帮你...3. 手动加载
/skill-load skill-name内置 Skill 分类
Hermes Agent 内置 100+ 技能,按类别整理:
| 类别 | 代表技能 | 说明 |
|---|---|---|
| 软件开发 | plan, test-driven-development, systematic-debugging | 规划、TDD、调试 |
| GitHub | github-pr-workflow, github-code-review, github-issues | PR、审查、Issue 管理 |
| 创意 | ascii-art, excalidraw, p5js, songwriting | ASCII 艺术、图表、音乐 |
| 媒体 | youtube-content, gif-search, heartmula | YouTube、GIF、音乐生成 |
| 研究 | arxiv, llm-wiki, web-content-fetch | 论文、知识库、网页抓取 |
| 生产力 | notion, google-workspace, powerpoint, nano-pdf | Notion、Google、PPT、PDF |
| 运维 | webhook-subscriptions | Webhook 管理 |
| 数据科学 | jupyter-live-kernel | Jupyter 交互式分析 |
| MLOps | gguf, llama-cpp, vllm, unsloth, trl-fine-tuning | 模型训练、推理、量化 |
| Apple | apple-notes, apple-reminders, imessage | macOS/iOS 自动化 |
| 邮件 | himalaya | 邮件收发管理 |
| 游戏 | minecraft-modpack-server, pokemon-player | Minecraft、Pokemon |
平台限制
部分 Skill 有平台限制。比如 apple-* 系列只在 macOS 上可用。如果当前平台不兼容,Skill 会自动隐藏。
SKILL.md 格式
每个 Skill 是一个目录,核心是 SKILL.md 文件:
~/.hermes/skills/my-skill/
├── SKILL.md # 技能定义(必需)
├── references/ # 参考文档
├── templates/ # 模板文件
├── scripts/ # 脚本
└── assets/ # 资源文件SKILL.md 的基本结构:
markdown
---
name: my-skill
description: 一句话描述这个技能做什么
platforms: [macos, linux] # 可选:限制平台
fallback_for_toolsets: [web] # 可选:回退条件
env: # 可选:需要的环境变量
- MY_API_KEY
settings: # 可选:配置项
- key: output_dir
description: 输出目录
default: ~/output
---
# 技能标题
详细指令...关键字段说明
| 字段 | 必需 | 说明 |
|---|---|---|
name | ✅ | 技能标识,小写+连字符 |
description | ✅ | 一句话描述 |
platforms | ❌ | 限制运行的 OS |
fallback_for_toolsets | ❌ | 当指定工具集不可用时才显示 |
env | ❌ | 需要的环境变量(密钥等) |
settings | ❌ | 非密钥配置项,存在 config.yaml |
管理技能
查看已安装的技能
/skills或对话中问:
你:你有哪些技能?
Hermes:[列出所有可用技能...]安装技能
从 Skills Hub 安装:
bash
hermes skills install <skill-name>Agent 自建技能
当你完成一个复杂任务后,Agent 可以自动保存为 Skill:
你:把这个工作流保存为技能
Hermes:[自动调用 skill_manage 创建 SKILL.md]Agent 会在以下场景自动创建 Skill:
- 完成了 5+ 步工具调用的复杂任务
- 解决了一个棘手的错误
- 用户纠正了 Agent 的做法
外部技能目录
如果你有多个 AI 工具共享的技能目录(如 ~/.agents/skills/),可以让 Hermes 也扫描它:
yaml
# ~/.hermes/config.yaml
skills:
external_dirs:
- ~/.agents/skills
- ~/my-custom-skills路径支持 ~ 展开和 ${VAR} 环境变量替换。
TIP
如果本地和外部目录有同名 Skill,本地版本优先(shadow 机制)。
技能配置(Settings)
Skill 可以声明非密钥的配置项,存在 config.yaml 的 skills.config 下:
yaml
# ~/.hermes/config.yaml
skills:
config:
my-skill:
output_dir: ~/output
language: zh-CN配置值会在 Skill 加载时自动注入到 Agent 上下文中。
条件激活(回退机制)
Skill 可以设置为某个工具集的回退方案:
yaml
# 例如:内置的 duckduckgo-search 技能
fallback_for_toolsets: [web]这意味着:
- 如果你设置了
FIRECRAWL_API_KEY,web工具集可用 → 用 web_search,DuckDuckGo 技能隐藏 - 如果你没设置 API Key → DuckDuckGo 技能自动出现作为替代
实战:安装一个自定义 Skill
以安装 defuddle(网页内容提取)为例:
bash
# 方法一:通过 Skills Hub
hermes skills install defuddle
# 方法二:手动创建
mkdir -p ~/.hermes/skills/defuddle
# 编写 SKILL.md...安装后即可使用:
你:帮我提取这个网页的内容 https://example.com/article
Hermes:[自动加载 defuddle 技能] [执行 defuddle parse...] 完成!深入阅读
- 官方文档:Skills System
- Skills 开发指南:Working with Skills
- 技能标准:agentskills.io — Skill 开放标准与规范
- 技能市场:skills.sh · skillhub.cn — 浏览和分享社区技能