Hermes Agent 的灵魂功能:自动技能生成系统详解

目录

  1. 用一个类比开场
  2. 技能文件长什么样
  3. 触发条件:什么时候生成技能
    1. 条件一:工具调用次数 >= 5
    2. 条件二:出现自我纠错
    3. 条件三:多步骤环境配置
    4. 条件四:用户正面反馈
  4. 技能匹配:怎么找到合适的技能
  5. 效率提升:数字说话
  6. 技能文件管理
    1. 查看已有技能
    2. 手动编辑技能
    3. 分享技能
    4. 删除技能
  7. 技能生成的内部流程
    1. 第一步:执行轨迹收集
    2. 第二步:触发评估
    3. 第三步:轨迹分析
    4. 第四步:技能文件生成
    5. 第五步:去重检查
    6. 第六步:存储
  8. 技能质量的影响因素
  9. 技能系统与记忆系统的关系
  10. 实际使用建议
  11. 延伸阅读:OpenClaw 社区资源

用一个类比开场

想象你新入职一家公司,第一天什么都不熟悉,完成一个部署任务要查各种文档、问同事、反复试错,可能折腾大半天。但你是个有心人——做完之后,你写了一篇详细的操作笔记存在自己的知识库里。

三个月后,新来一个同事问你怎么做同样的部署。你翻出笔记,十分钟就搞定了。

Hermes Agent 的技能系统干的就是这件事,只不过是自动的。它每次成功完成一个有难度的任务后,会自动把执行过程提炼成一份可复用的「技能文件」。下次遇到类似需求,直接按技能文件走。

这个机制让 Hermes Agent 成了为数不多具备真正「越用越好用」特性的 Agent 框架。

技能文件长什么样

先看个真实例子。假设你让 Hermes Agent 帮你在 Ubuntu 上部署一个 PostgreSQL 数据库,它成功完成后,可能会在 ~/.hermes/skills/ 目录下生成这样一个文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
---
title: Ubuntu 部署 PostgreSQL
description: 在 Ubuntu 系统上安装和配置 PostgreSQL 数据库
trigger: 当用户需要在 Ubuntu 上安装 PostgreSQL 或配置数据库时
tools_required:
- shell_exec
- file_write
- file_read
estimated_calls: 8
created: 2026-04-10T14:23:00Z
success_rate: 1.0
---

## 前置检查

1. 确认系统为 Ubuntu/Debian 系列
2. 确认用户有 sudo 权限
3. 检查是否已安装 PostgreSQL

## 安装步骤

1. 更新包索引: `sudo apt update`
2. 安装 PostgreSQL 和扩展: `sudo apt install -y postgresql postgresql-contrib`
3. 启动服务: `sudo systemctl start postgresql`
4. 设置开机自启: `sudo systemctl enable postgresql`

## 配置步骤

1. 切换到 postgres 用户: `sudo -u postgres psql`
2. 创建新用户(按需求调整用户名和密码)
3. 创建数据库并授权
4. 修改 pg_hba.conf 允许远程连接(如需要)
5. 修改 postgresql.conf 的 listen_addresses(如需要)
6. 重启服务使配置生效

## 验证

1. 测试本地连接
2. 测试远程连接(如配置了远程访问)

## 常见问题

- 端口 5432 被占用:检查是否有旧版 PostgreSQL 运行
- 认证失败:检查 pg_hba.conf 的认证方式

注意几个关键字段:

  • trigger:告诉 Agent 什么情况下应该调用这个技能
  • tools_required:需要用到的工具列表
  • estimated_calls:预估工具调用次数
  • success_rate:历史成功率

整个文件是标准 Markdown,人类可读可编辑。这是个非常重要的设计选择——你可以手动修改优化这些技能,不需要通过什么特殊的 API 或 UI。

触发条件:什么时候生成技能

不是每次对话都会生成技能。Hermes Agent 有一套判断逻辑,只在「值得记录」的时候才生成:

条件一:工具调用次数 >= 5

如果一次任务调用了 5 个以上工具,说明这个任务有一定复杂度,值得沉淀。简单的问答或者一两条命令就搞定的事情,没必要生成技能。

条件二:出现自我纠错

这是一个很聪明的判断标准。如果 Agent 在执行过程中遇到了错误,并且自己找到了替代方案解决了问题——这种经验最有价值。

举个例子:Agent 试图用 apt install nodejs 安装 Node.js,发现版本太旧,然后主动改用 NodeSource 的仓库安装了新版本。这个「从失败到成功」的路径会被完整记录在技能文件中,下次直接走正确路线。

条件三:多步骤环境配置

涉及环境搭建、系统配置、服务部署这类任务,通常步骤多且容易出错,适合技能化。

条件四:用户正面反馈

如果你在任务完成后说「完美」「没问题」之类的正面评价,会增加技能生成的概率。反之,如果你说「不对,这不是我要的」,Agent 会跳过技能生成。

这四个条件不是「必须全部满足」,满足任何一个就可能触发。但满足越多,触发概率越高。

技能匹配:怎么找到合适的技能

有了技能库,下一个问题是:新任务来了,怎么匹配到最相关的技能?

Hermes Agent 的匹配流程:

  1. 关键词提取:从用户输入中提取关键意图。比如「帮我装个 MySQL」→ 提取出「安装」「MySQL」
  2. 语义搜索:在技能库中做语义匹配,不是简单的关键词匹配。「部署 MariaDB」也能匹配到「安装 MySQL」的技能,因为它们语义相近
  3. 相关性排序:按匹配度排序,取最相关的 1-3 个技能
  4. 注入上下文:把匹配到的技能文件内容注入到当前对话的 prompt 中

匹配成功后,Agent 不是盲目照搬技能文件的步骤。它会把技能作为「参考方案」,结合当前具体情况做调整。比如技能文件写的是 Ubuntu 的命令,但当前系统是 CentOS,Agent 会自动把 apt 换成 yum

效率提升:数字说话

技能系统的效果到底有多大?从 cocoloop 社区收集到的使用数据来看:

首次执行 vs 技能匹配后执行

任务类型 首次工具调用 技能后调用 减少比例
Nginx 反向代理配置 18 次 7 次 61%
Python 虚拟环境+部署 12 次 5 次 58%
Docker Compose 搭建 22 次 9 次 59%
SSL 证书配置 15 次 6 次 60%
数据库备份脚本 10 次 4 次 60%

平均下来,工具调用次数减少约 60%。这直接意味着:

  • 速度更快:少了一半以上的推理轮次
  • 成本更低:每轮推理都消耗 token,轮次少了 token 消耗也少
  • 错误更少:走已验证的路径,避开已知的坑

如果你想了解怎么进一步优化执行效率,可以研究一下 ReAct 循环的架构设计

技能文件管理

查看已有技能

1
hermes skills list

这会列出所有已生成的技能文件,包括标题、创建时间和使用次数。

手动编辑技能

直接用编辑器打开 ~/.hermes/skills/ 下的文件就行。常见的优化场景:

  • 精简步骤:去掉不必要的检查步骤
  • 添加边界条件:比如加上「如果系统是 ARM 架构则用不同的安装包」
  • 更新命令:某个软件的安装方式变了,更新技能文件中的命令

分享技能

技能文件是纯文本 Markdown,分享极其方便。你可以:

  • 直接把文件拷给别人,放到他们的 ~/.hermes/skills/ 目录
  • 在 GitHub 上维护一个技能仓库
  • 在 cocoloop 社区分享你的技能集合

社区里已经有人开始做「技能市场」了——把各种场景的高质量技能打包分享。对于新用户来说,导入一批经过验证的技能文件,相当于直接继承了别人的使用经验。

删除技能

如果某个技能过时了或者有问题:

1
hermes skills remove "Ubuntu 部署 PostgreSQL"

或者直接删除对应的 Markdown 文件。

技能生成的内部流程

对技术细节感兴趣的读者,这里展开讲讲技能生成的具体过程:

第一步:执行轨迹收集

任务执行过程中,框架会记录完整的执行轨迹:每一轮的推理过程、工具调用、返回结果、耗时等。

第二步:触发评估

任务完成后,评估模块检查前面说的触发条件。如果判断「值得生成技能」,进入下一步。

第三步:轨迹分析

这一步用 LLM 做。把完整执行轨迹发给模型,让它分析:

  • 任务的核心步骤是什么?
  • 哪些步骤是通用的,哪些是特定于这次任务的?
  • 执行过程中遇到了什么问题?怎么解决的?
  • 有没有可以合并或简化的步骤?

第四步:技能文件生成

基于分析结果,生成结构化的技能文件。关键是要把具体的任务参数(比如具体的域名、IP 地址)抽象化,让技能能适用于同类但不完全相同的任务。

第五步:去重检查

检查新生成的技能是否和已有技能重复。如果有高度相似的已有技能,可能会选择更新已有技能而不是创建新的。

第六步:存储

把技能文件写入 ~/.hermes/skills/ 目录,并更新技能索引。

整个过程用户感知不到,发生在任务完成之后的后台处理中。

技能质量的影响因素

不是所有自动生成的技能都很好用。影响技能质量的主要因素:

底层模型能力:强模型生成的技能更准确、步骤更精炼。如果你用的模型推理能力一般,生成的技能可能会有冗余步骤甚至错误。

任务的规范性:标准化的任务(如「安装 XX 软件」「配置 XX 服务」)生成的技能质量高,因为步骤明确。开放式的探索任务(如「帮我优化这段代码的性能」)生成的技能就比较模糊。

执行是否顺利:一次顺利完成的任务生成的技能比反复出错的好。虽然纠错过程也会被记录,但多次错误会引入噪音。

我的建议是:定期翻看 ~/.hermes/skills/ 目录,把质量差的技能删掉或手动优化。你花十分钟调优一个高频技能,可能在之后的使用中省下几个小时。

技能系统与记忆系统的关系

技能文件是 Hermes Agent 四层记忆体系 中的第三层。它和其他三层的关系是:

  • **第一层(持久记忆)**告诉 Agent 你是谁、你喜欢什么
  • **第二层(会话存档)**记录历史对话的概要
  • **第三层(技能文件)**记录怎么做事
  • **第四层(用户建模)**建模你的行为模式

四层相互配合:持久记忆提供偏好上下文,技能文件提供执行方案,用户建模优化方案选择。

比如你的持久记忆里写了「偏好 Docker 部署」,当一个部署任务匹配到多个技能时,Agent 会优先选用包含 Docker 步骤的那个。这就是各层记忆协同工作的效果。

实际使用建议

  1. 不要急于删除技能。即使某个技能生成得不太好,给它几次被调用和优化的机会。Agent 在使用技能的过程中可能会触发技能更新。

  2. 高频任务值得手动优化技能。你每周都要做的部署任务,花十分钟把对应的技能文件调到完美,绝对回本。

  3. 团队共享技能库。如果你的团队都在用 Hermes Agent,维护一个共享的技能仓库能大幅提升整体效率。新成员入职直接导入技能库,免去重复积累。

  4. 定期清理过时技能。软件版本更新、环境变化都可能让旧技能失效。建议每个月过一遍技能库。

  5. 从社区获取技能。cocoloop 社区和 GitHub 上已经有不少高质量的技能集合分享出来了,直接拿来用或者基于它们修改,省时省力。

技能系统是 Hermes Agent 区别于其他框架最核心的东西。用好了它,你的 Agent 会从一个什么都不会的新手,逐渐长成一个经验丰富的老手。这个过程是自动的,但你的引导和优化能让它更快。

延伸阅读:OpenClaw 社区资源

本文由 CocoLoop 中文社区出品。如果你在研究 AI Agent 与主流模型的工程化落地,姊妹站 OpenClaw 中文社区 也许会有帮助:

参与讨论

对这篇文章有疑问或想法?cocoloop 社区有不少开发者在讨论 Hermes 相关话题,欢迎加入交流。

前往 cocoloop 社区 →