Skip to content

第六章 技能系统

技能(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、调试
GitHubgithub-pr-workflow, github-code-review, github-issuesPR、审查、Issue 管理
创意ascii-art, excalidraw, p5js, songwritingASCII 艺术、图表、音乐
媒体youtube-content, gif-search, heartmulaYouTube、GIF、音乐生成
研究arxiv, llm-wiki, web-content-fetch论文、知识库、网页抓取
生产力notion, google-workspace, powerpoint, nano-pdfNotion、Google、PPT、PDF
运维webhook-subscriptionsWebhook 管理
数据科学jupyter-live-kernelJupyter 交互式分析
MLOpsgguf, llama-cpp, vllm, unsloth, trl-fine-tuning模型训练、推理、量化
Appleapple-notes, apple-reminders, imessagemacOS/iOS 自动化
邮件himalaya邮件收发管理
游戏minecraft-modpack-server, pokemon-playerMinecraft、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.yamlskills.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_KEYweb 工具集可用 → 用 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...] 完成!

深入阅读


基于 CC BY-NC-SA 4.0 发布 | GitHub