ByteNoteByteNote

字节笔记本

2026年5月16日

Hermes Agent Skills 系统:扩展 Agent 能力的技能框架

API中转
¥120

Hermes Agent 的 Skills 系统提供了一种按需加载知识文档的机制,让 Agent 能够学会处理从生成 ASCII 艺术到管理 GitHub PR 等各种特定任务。本文将带你完整了解 Skills 的查找、使用、安装、配置以及如何创建自定义技能。

查找 Skills

每个 Hermes 安装都内置了捆绑技能。查看可用的 Skills:

bash
# 在任意聊天会话中:
/skills

# 或从 CLI 中:
hermes skills list

这会显示一个包含名称和描述的紧凑列表:

text
ascii-art         Generate ASCII art using pyfiglet, cowsay, boxes...
arxiv             Search and retrieve academic papers from arXiv...
github-pr-workflow Full PR lifecycle — create branches, commit...
plan              Plan mode — inspect context, write a markdown...
excalidraw        Create hand-drawn style diagrams using Excalidraw...

搜索 Skill

bash
# 按关键词搜索
/skills search docker
/skills search music

Skills Hub

官方可选技能(较重或较冷门的技能,默认不激活)可以通过 Hub 获取:

bash
# 浏览官方可选技能
/skills browse

# 在 Hub 中搜索
/skills search blockchain

使用 Skill

每个已安装的 Skill 都自动成为一个斜杠命令,直接输入名称即可:

bash
# 加载 Skill 并给它一个任务
/ascii-art Make a banner that says "HELLO WORLD"
/plan Design a REST API for a todo app
/github-pr-workflow Create a PR for the auth refactor

# 只输入 Skill 名称(不带任务)会加载它,然后你可以描述需要什么
/excalidraw

你也可以通过自然对话触发 Skills —— 告诉 Hermes 使用特定的 Skill,它就会通过 skill_view 工具加载。

渐进式加载

Skills 采用一种 token 高效的加载模式,Agent 不会一次性加载所有内容:

  1. skills_list() — 所有 Skills 的紧凑列表(约 3k tokens)。在会话开始时加载。
  2. skill_view(name) — 单个 Skill 的完整 SKILL.md 内容。在 Agent 判断需要该 Skill 时加载。
  3. skill_view(name, file_path) — Skill 中的特定参考文件。仅在需要时加载。

这意味着 Skills 在实际使用前不会消耗任何 token。

从 Hub 安装

官方可选技能随 Hermes 一起发布,但默认不激活。需要显式安装:

bash
# 安装官方可选技能
hermes skills install official/research/arxiv

# 在聊天会话中从 Hub 安装
/skills install official/creative/songwriting-and-ai-music

# 从任意 HTTP(S) URL 直接安装单个 SKILL.md 文件
hermes skills install https://sharethis.chat/SKILL.md
/skills install https://example.com/SKILL.md --name my-skill

安装过程中会发生以下事情:

  1. Skill 目录被复制到 ~/.hermes/skills/
  2. 它出现在 skills_list 输出中
  3. 它成为可用的斜杠命令

已安装的 Skills 在新会话中生效。如果想在当前会话中可用,使用 /reset 重新开始,或添加 --now 立即使 prompt 缓存失效(会在下一轮消耗更多 token)。

验证安装

bash
# 检查是否存在
hermes skills list | grep arxiv

# 或在聊天中
/skills search arxiv

插件提供的 Skills

插件可以使用命名空间名称(plugin:skill)捆绑自己的 Skills,这可以防止与内置 Skills 产生名称冲突。

bash
# 通过限定名加载插件 Skill
skill_view("superpowers:writing-plans")

# 同名内置 Skill 不受影响
skill_view("writing-plans")

插件 Skills 不会列在系统提示中,也不出现在 skills_list 里。它们是可选加载的 —— 当你知道某个插件提供了某个 Skill 时,显式加载它即可。加载时,Agent 会看到一个横幅,列出同一插件的其他 Skills。

配置 Skill 设置

某些 Skills 会在其 frontmatter 中声明所需的配置:

yaml
metadata:
  hermes:
    config:
      - key: tenor.api_key
        description: "Tenor API key for GIF search"
        prompt: "Enter your Tenor API key"
        url: "https://developers.google.com/tenor/guides/quickstart"

当带有配置的 Skill 首次加载时,Hermes 会提示你输入值。它们存储在 config.yamlskills.config.* 下。

通过 CLI 管理 Skill 配置:

bash
# 对特定 Skill 进行交互式配置
hermes skills config gif-search

# 查看所有 Skill 配置
hermes config get skills.config

创建自定义 Skill

Skills 只是带有 YAML frontmatter 的 Markdown 文件,创建一个不到五分钟。

1. 创建目录

bash
mkdir -p ~/.hermes/skills/my-category/my-skill

2. 编写 SKILL.md

markdown
---
name: my-skill
description: Brief description of what this skill does
version: 1.0.0
metadata:
  hermes:
    tags: [my-tag, automation]
    category: my-category
---

# My Skill

## When to Use
Use this skill when the user asks about [specific topic] or needs to [specific task].

## Procedure
1. First, check if [prerequisite] is available
2. Run `command --with-flags`
3. Parse the output and present results

## Pitfalls
- Common failure: [description]. Fix: [solution]
- Watch out for [edge case]

## Verification
Run `check-command` to confirm the result is correct.

3. 添加参考文件(可选)

Skills 可以包含 Agent 按需加载的辅助文件:

text
my-skill/
├── SKILL.md                    # Main skill document
├── references/
│   ├── api-docs.md             # API reference the agent can consult
│   └── examples.md             # Example inputs/outputs
├── templates/
│   └── config.yaml             # Template files the agent can use
└── scripts/
    └── setup.sh                # Scripts the agent can execute

在 SKILL.md 中引用它们:

markdown
For API details, load the reference: `skill_view("my-skill", "references/api-docs.md")`

4. 测试

启动新会话并试用你的 Skill:

bash
hermes chat -q "/my-skill help me with the thing"

Skill 会自动出现 —— 无需注册。放入 ~/.hermes/skills/ 即可生效。

Agent 也可以使用 skill_manage 自行创建和更新 Skills。解决复杂问题后,Hermes 可能会主动提出将该方法保存为 Skill 以备下次使用。

按平台管理 Skills

控制哪些 Skills 在哪些平台上可用:

bash
hermes skills

这会打开一个交互式 TUI,你可以在其中按平台(CLI、Telegram、Discord 等)启用或禁用 Skills。当你希望某些 Skills 仅在特定上下文中可用时非常有用 —— 例如,将开发类 Skills 从 Telegram 中排除。

Skills 与 Memory 的区别

两者都在会话间持久存在,但用途不同:

SkillsMemory
内容程序性知识 —— 如何做事事实性知识 —— 事物是什么
加载时机按需加载,仅在相关时自动注入每个会话
大小可以很大(数百行)应保持精简(仅关键事实)
成本加载前零 token 消耗较小但持续的 token 消耗
示例"如何部署到 Kubernetes""用户偏好暗色模式,居住在 PST 时区"
创建者你、Agent 或从 Hub 安装Agent,基于对话内容

经验法则: 如果你把它放在参考文档中,它是 Skill。如果你把它写在便利贴上,它是 Memory。

使用技巧

保持 Skill 聚焦。 一个试图覆盖"所有 DevOps"的 Skill 会太长太模糊。一个覆盖"将 Python 应用部署到 Fly.io"的 Skill 则足够具体,真正有用。

让 Agent 创建 Skills。 完成复杂的多步骤任务后,Hermes 通常会主动提出将该方法保存为 Skill。接受吧 —— 这些由 Agent 编写的 Skills 能够捕获精确的工作流程,包括过程中发现的陷阱。

使用分类。 将 Skills 组织到子目录中(~/.hermes/skills/devops/~/.hermes/skills/research/ 等),这可以保持列表可管理,并帮助 Agent 更快找到相关 Skills。

及时更新过时的 Skills。 如果你使用某个 Skill 时遇到了它未涵盖的问题,告诉 Hermes 用你学到的经验更新该 Skill。不被维护的 Skills 会变成负担。

分享: