用一个类比开场
想象你新入职一家公司,第一天什么都不熟悉,完成一个部署任务要查各种文档、问同事、反复试错,可能折腾大半天。但你是个有心人——做完之后,你写了一篇详细的操作笔记存在自己的知识库里。
三个月后,新来一个同事问你怎么做同样的部署。你翻出笔记,十分钟就搞定了。
Hermes Agent 的技能系统干的就是这件事,只不过是自动的。它每次成功完成一个有难度的任务后,会自动把执行过程提炼成一份可复用的「技能文件」。下次遇到类似需求,直接按技能文件走。
这个机制让 Hermes Agent 成了为数不多具备真正「越用越好用」特性的 Agent 框架。
技能文件长什么样
先看个真实例子。假设你让 Hermes Agent 帮你在 Ubuntu 上部署一个 PostgreSQL 数据库,它成功完成后,可能会在 ~/.hermes/skills/ 目录下生成这样一个文件:
1 | --- |
注意几个关键字段:
- 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 的匹配流程:
- 关键词提取:从用户输入中提取关键意图。比如「帮我装个 MySQL」→ 提取出「安装」「MySQL」
- 语义搜索:在技能库中做语义匹配,不是简单的关键词匹配。「部署 MariaDB」也能匹配到「安装 MySQL」的技能,因为它们语义相近
- 相关性排序:按匹配度排序,取最相关的 1-3 个技能
- 注入上下文:把匹配到的技能文件内容注入到当前对话的 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 步骤的那个。这就是各层记忆协同工作的效果。
实际使用建议
不要急于删除技能。即使某个技能生成得不太好,给它几次被调用和优化的机会。Agent 在使用技能的过程中可能会触发技能更新。
高频任务值得手动优化技能。你每周都要做的部署任务,花十分钟把对应的技能文件调到完美,绝对回本。
团队共享技能库。如果你的团队都在用 Hermes Agent,维护一个共享的技能仓库能大幅提升整体效率。新成员入职直接导入技能库,免去重复积累。
定期清理过时技能。软件版本更新、环境变化都可能让旧技能失效。建议每个月过一遍技能库。
从社区获取技能。cocoloop 社区和 GitHub 上已经有不少高质量的技能集合分享出来了,直接拿来用或者基于它们修改,省时省力。
技能系统是 Hermes Agent 区别于其他框架最核心的东西。用好了它,你的 Agent 会从一个什么都不会的新手,逐渐长成一个经验丰富的老手。这个过程是自动的,但你的引导和优化能让它更快。
延伸阅读:OpenClaw 社区资源
本文由 CocoLoop 中文社区出品。如果你在研究 AI Agent 与主流模型的工程化落地,姊妹站 OpenClaw 中文社区 也许会有帮助: