如果说记忆系统让 Hermes 记住了 你是谁 ,那么技能(Skills)系统让 Hermes 记住了 怎么做事 。
Skills(技能)是 Hermes Agent 的程序化记忆。
Skills 允许智能体从经验中创建可重用的工作流程,并在未来的会话中复用。
Skills 系统是 Hermes Agent 的核心差异化特性——它是唯一内置学习循环的智能体,能够创建技能、在使用中改进技能,并在会话之间保持知识。
技能是什么
Skills 是一组定义智能体行为的指令和工具,它们可以:
更多内容参考 Skills 教程: https://www.runoob.com/ai-agent/skills-agent.html 。
技能 vs 记忆
经验法则:如果你会把它写进参考文档,它就是技能;如果你会把它贴在便利贴上,它就是记忆。
技能目录结构
所有技能都存放在 ~/.hermes/skills/ 目录——这是唯一的数据源。
初次安装时,内置技能会从仓库复制到此目录。通过 Hub 安装的技能和 Agent 自动创建的技能也保存在这里。
~/.hermes/skills/ ├── mlops/ # 分类目录 │ ├── axolotl/ │ │ ├── SKILL.md # 主指令文件(必须) │ │ ├── references/ # 补充文档(按需加载) │ │ ├── templates/ # 输出模板 │ │ ├── scripts/ # 辅助脚本 │ │ └── assets/ # 附属资源 │ └── vllm/ │ └── SKILL.md ├── devops/ │ └── deploy-k8s/ # Agent 自动创建的技能 │ ├── SKILL.md │ └── references/ ├── .hub/ # Skills Hub 状态 │ ├── lock.json │ ├── quarantine/ # 安全隔离区 │ └── audit.log └── .bundled_manifest # 记录内置技能版本
每个技能目录的必须文件只有 SKILL.md ,其余子目录都是可选的。
Agent 可以修改或删除任何技能——无论是内置的、从 Hub 安装的,还是自己创建的。
渐进式披露:Token 高效加载机制
技能系统最聪明的设计之一是 渐进式披露 ——Agent 不会一次性把所有技能内容塞进上下文,而是分三层按需加载。
Level 0: skills_list() → [{name, description, category}, ...] 会话启动时加载,约 3,000 tokens ↓ 只有需要用某个技能时,才继续 Level 1: skill_view(name) → 完整 SKILL.md 内容 + 元数据 ↓ 只有需要参考文档时,才继续 Level 2: skill_view(name, path) → 技能内的特定 references/ 文件
这个设计的实际意义非常直接:
渐进式披露是技能系统区别于 把所有文档塞进系统提示词 的关键设计。它保证了技能数量可以无限增长,而每次会话的 Token 成本基本恒定。
内置技能一览
Hermes 安装时自带大量内置技能,可以直接使用。
命令行中启动 hermes:
hermes
使用 以下命令查看技能相关命令:
/skills
以下命令可以在会话中查看所有技能:
/skills browse
hermes 直接在命令行中查看:
hermes skills list
桌面版直接点击左侧的技能与工具菜单查看:
技能分类
内置技能按功能分类存放在子目录中:
可选技能(不默认安装)
可选技能随 hermes-agent 一起发布,存放在 optional-skills/ 下,但默认不激活,需要显式安装。
这类技能通常需要额外依赖或是小众用途:
实例
使用技能
技能有两种触发方式:斜杠命令直接调用和自然语言自动触发。
斜杠命令直接调用
每个已安装的技能都自动成为一个斜杠命令。
在任何平台(CLI、Telegram、Discord 等)中直接使用:
内置的 plan 技能是个好例子:运行 /plan [请求] 后,技能指令会告诉 Hermes 先检查上下文,再生成 Markdown 格式的实现计划并保存到 .hermes/plans/ ,而不是直接执行任务。
自然语言触发
也可以通过自然对话触发技能,Hermes 会通过 skill_view 工具自动加载:
Agent 会识别出需要 arxiv 技能,自动加载后执行。
关键字搜索技能
从 Hub 安装技能
除了内置技能,你还可以从 agentskills.io 社区 Hub 安装第三方技能。
命令行安装
安装后发生了什么:
已安装的技能在 新会话 中生效。如果想在当前会话立即使用,用 /reset 开启新会话,或加 --now 参数立即刷新提示缓存(会多消耗一些 Token)。
验证安装
从 GitHub 仓库添加技能源
/learn 命令:一键从源生成技能
/learn 是将你已知的东西——或一堆参考资料——快速转化为可复用技能的捷径,无需手写 SKILL.md。
它是开放式的:指向任何你能描述的内容,Agent 用它已有的工具收集材料,然后按照标准创作规范生成技能。
/learn 的工作原理
整个过程分为三步:
/learn 在 CLI、消息网关、TUI 和 Dashboard 中均可使用,行为完全一致。Dashboard 的 Skills 页面还提供了图形化的 Learn a skill 面板,包含目录、URL 和自由文本三个输入框。
Agent 自动创建技能
这是 Hermes 技能系统最独特的部分:Hermes 通过将可复用的流程保存为技能来从经验中学习。
当它解决了一个复杂问题、发现了一个工作流程或被纠正后,它可以将这些知识持久化为技能文档,在未来的会话中加载。
技能随时间积累,让 Agent 越来越擅长处理你的特定任务和环境。
触发时机
完成一个复杂任务(通常涉及 5 步以上工具调用)后,Hermes 可能主动提议:
我注意到我们刚才走完了一个完整的 Docker 多阶段构建流程。 要不要我把这个工作流程保存为技能,下次可以直接复用?
手动要求 Agent 创建技能
你也可以在任何时候主动要求:
控制技能写入权限
默认情况下 Agent 可以自由创建和修改技能。
开启审批模式后,Agent 每次要创建或修改技能时会先请求你的确认:
开启 write_approval 后,你可以预览 Agent 要写入的技能内容再决定是否批准。这是一个重要的安全边界——技能文件无签名溯源信息,无法区分 Agent 自己写的 和 手动放入目录的 。
SKILL.md 格式详解
技能就是带有 YAML 前置元数据的 Markdown 文件。
以下是完整格式规范,包含所有可选和必填字段:
字段限制
条件激活:智能显隐机制
技能可以根据当前会话中可用的工具 自动显示或隐藏 ,无需手动管理。
这在多环境部署中非常实用——同一个技能列表在不同环境中自动适配。
实际案例 :内置的 duckduckgo-search 技能使用了 fallback_for_toolsets: [web] 。
当你配置了 Firecrawl API Key(web 工具集可用)时,这个技能自动隐藏,Agent 直接使用 web_search 。
当 API Key 缺失(web 工具集不可用)时,DuckDuckGo 技能自动浮现作为备用方案。
技能包(Skill Bundle):组合加载
技能包是将多个技能组合在一个斜杠命令下的 YAML 文件。
运行 /<bundle-name> 时,包中列出的所有技能同时加载——适用于某项任务总是需要同一套技能的场景。
创建技能包
使用时:
Agent 会同时加载三个技能,并将 重构认证中间件 作为用户指令附加进来。
技能包文件格式
技能包存放在 ~/.hermes/skill-bundles/<slug>.yaml :
平台级技能管理
不同平台可以启用不同的技能子集。
例如,开发相关的技能没必要在 Telegram 上出现:
这会打开一个交互式 TUI,让你在每个平台(CLI、Telegram、Discord 等)上分别启用或禁用技能。
手动创建技能:五分钟上手
技能只是带有 YAML 前置元数据的 Markdown 文件。
创建一个技能只需不到五分钟,无需注册,放入 ~/.hermes/skills/ 即可使用。
步骤一:创建目录
步骤二:写 SKILL.md
步骤三(可选):添加参考文件
步骤四:测试
技能的安全注意事项
写入审批门控
技能文件无签名溯源信息——无法区分 Agent 自己写的 和 手动放入目录的 。
写入审批机制与 pending/ 目录管理是关键的安全边界。
开启审批后, write_approval: true 会让所有技能写入操作(包括 Agent 发起的自动创建)暂存为待审批状态,你审核后再决定是否允许写入。
安全扫描
技能内容在加载前会经过威胁扫描,检测提示词注入、后门安装指令等恶意模式。
匹配到威胁模式的内容会被替换为 [BLOCKED: ...] 占位符,阻止其到达模型——文件本身不会被删除,只有威胁内容被屏蔽。
从 Hub 安装时的注意事项
技能更新与维护
检查与更新
重置内置技能
如果你修改了内置技能想恢复原版:
卸载 Hub 技能
卸载只能移除通过 Hub 安装的技能,内置技能无法卸载(但可以通过 hermes skills opt-out 停止接收更新)。
发布技能到 Skills Hub
如果你创建了一个有价值的技能,可以发布到 agentskills.io 与社区共享:
Blueprint:技能 + 定时任务
技能可以声明调度计划,变成一个可共享的自动化蓝图:
安装了这个技能后,运行 /suggestions 可以看到 Hermes 自动提议创建对应的定时任务:
外部技能目录
如果你在 Hermes 之外维护技能——例如多个 AI 工具共享的 ~/.agents/skills/ 目录——可以让 Hermes 同时扫描这些目录。
路径支持 ~ 展开和 ${VAR} 环境变量替换。
重要规则 :
常用命令速查
创建自定义技能
技能存储在 ~/.hermes/skills/ 目录中。每个技能是一个包含 skill.md 的目录:
~/.hermes/skills/ └── my-custom-skill/ └── skill.md
技能格式
--- name: my-custom-skill description: 一个有用的技能描述 version: 1.0.0 author: your-username tags: [utility, example] --- # 技能指令 您是一个专业的[角色],擅长[领域]... ## 核心能力 1. 能力 A 2. 能力 B 3. 能力 C ## 使用示例 ### 示例 1 [描述] ### 示例 2 [描述]
技能元数据
技能命令参考