字节笔记本
2026年5月16日
Hermes Agent Skills 系统:扩展 Agent 能力的技能框架
Hermes Agent 的 Skills 系统提供了一种按需加载知识文档的机制,让 Agent 能够学会处理从生成 ASCII 艺术到管理 GitHub PR 等各种特定任务。本文将带你完整了解 Skills 的查找、使用、安装、配置以及如何创建自定义技能。
查找 Skills
每个 Hermes 安装都内置了捆绑技能。查看可用的 Skills:
# 在任意聊天会话中:
/skills
# 或从 CLI 中:
hermes skills list这会显示一个包含名称和描述的紧凑列表:
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
# 按关键词搜索
/skills search docker
/skills search musicSkills Hub
官方可选技能(较重或较冷门的技能,默认不激活)可以通过 Hub 获取:
# 浏览官方可选技能
/skills browse
# 在 Hub 中搜索
/skills search blockchain使用 Skill
每个已安装的 Skill 都自动成为一个斜杠命令,直接输入名称即可:
# 加载 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 不会一次性加载所有内容:
skills_list()— 所有 Skills 的紧凑列表(约 3k tokens)。在会话开始时加载。skill_view(name)— 单个 Skill 的完整 SKILL.md 内容。在 Agent 判断需要该 Skill 时加载。skill_view(name, file_path)— Skill 中的特定参考文件。仅在需要时加载。
这意味着 Skills 在实际使用前不会消耗任何 token。
从 Hub 安装
官方可选技能随 Hermes 一起发布,但默认不激活。需要显式安装:
# 安装官方可选技能
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安装过程中会发生以下事情:
- Skill 目录被复制到
~/.hermes/skills/ - 它出现在
skills_list输出中 - 它成为可用的斜杠命令
已安装的 Skills 在新会话中生效。如果想在当前会话中可用,使用
/reset重新开始,或添加--now立即使 prompt 缓存失效(会在下一轮消耗更多 token)。
验证安装
# 检查是否存在
hermes skills list | grep arxiv
# 或在聊天中
/skills search arxiv插件提供的 Skills
插件可以使用命名空间名称(plugin:skill)捆绑自己的 Skills,这可以防止与内置 Skills 产生名称冲突。
# 通过限定名加载插件 Skill
skill_view("superpowers:writing-plans")
# 同名内置 Skill 不受影响
skill_view("writing-plans")插件 Skills 不会列在系统提示中,也不出现在 skills_list 里。它们是可选加载的 —— 当你知道某个插件提供了某个 Skill 时,显式加载它即可。加载时,Agent 会看到一个横幅,列出同一插件的其他 Skills。
配置 Skill 设置
某些 Skills 会在其 frontmatter 中声明所需的配置:
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.yaml 的 skills.config.* 下。
通过 CLI 管理 Skill 配置:
# 对特定 Skill 进行交互式配置
hermes skills config gif-search
# 查看所有 Skill 配置
hermes config get skills.config创建自定义 Skill
Skills 只是带有 YAML frontmatter 的 Markdown 文件,创建一个不到五分钟。
1. 创建目录
mkdir -p ~/.hermes/skills/my-category/my-skill2. 编写 SKILL.md
---
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 按需加载的辅助文件:
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 中引用它们:
For API details, load the reference: `skill_view("my-skill", "references/api-docs.md")`4. 测试
启动新会话并试用你的 Skill:
hermes chat -q "/my-skill help me with the thing"Skill 会自动出现 —— 无需注册。放入 ~/.hermes/skills/ 即可生效。
Agent 也可以使用
skill_manage自行创建和更新 Skills。解决复杂问题后,Hermes 可能会主动提出将该方法保存为 Skill 以备下次使用。
按平台管理 Skills
控制哪些 Skills 在哪些平台上可用:
hermes skills这会打开一个交互式 TUI,你可以在其中按平台(CLI、Telegram、Discord 等)启用或禁用 Skills。当你希望某些 Skills 仅在特定上下文中可用时非常有用 —— 例如,将开发类 Skills 从 Telegram 中排除。
Skills 与 Memory 的区别
两者都在会话间持久存在,但用途不同:
| Skills | Memory | |
|---|---|---|
| 内容 | 程序性知识 —— 如何做事 | 事实性知识 —— 事物是什么 |
| 加载时机 | 按需加载,仅在相关时 | 自动注入每个会话 |
| 大小 | 可以很大(数百行) | 应保持精简(仅关键事实) |
| 成本 | 加载前零 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 会变成负担。