Hermes Agent 学习笔记 06:Skills 系统,Agent 如何把经验沉淀为可复用能力?

1. 从 Memory 到 Skills:记住事实还不够

上一期学习 Hermes Agent 的 Memory 系统时,我重点理解了一个问题:长期 Agent 不能每次都从零开始。它需要记住用户偏好、项目背景、任务进度和一些长期稳定的信息。

但是,只有 Memory 还不够。

Memory 更像是"事实记忆"。它告诉 Agent:

复制代码
用户是谁;
用户偏好什么风格;
当前项目是什么;
之前写到第几期;
哪些事实已经确认过。

可是,一个真正有用的长期 Agent,不仅要记住事实,还要沉淀做事方法。

例如,我连续多次让 Hermes 帮我写学习笔记博客。它不只是要记住"用户正在写 Hermes Agent 学习笔记",还应该逐渐学会这类文章应该怎么写:

复制代码
先承接上一期;
再提出本期核心问题;
然后解释概念;
接着分析机制;
中间加入示例;
最后小结并引出下一期。

这类内容就不是简单事实,而是一套可复用流程。

Hermes Agent 的 Skills 系统解决的正是这个问题:把一次任务中的经验,沉淀成以后可以重复调用的能力。

2. 什么是 Skill?

在 Hermes Agent 中,Skill 可以理解为一种"按需加载的能力说明文档"。

它不是模型参数,也不是一个独立程序,而是一组可以被 Agent 读取和遵循的任务说明、流程、命令、模板、注意事项和验证方法。

简单来说:

复制代码
Skill = 可复用的任务知识 + 操作流程 + 必要资源

例如,一个"论文写作 skill"可以告诉 Agent:

复制代码
什么时候使用这个 skill;
论文结构应该如何组织;
摘要怎么写;
相关工作怎么写;
实验部分怎么检查;
常见问题有哪些;
最后如何验证输出是否符合学术风格。

一个"代码审查 skill"可以告诉 Agent:

复制代码
先查看 git diff;
再检查安全问题;
再检查代码风格;
再运行测试;
最后输出问题列表和修改建议。

一个"技术博客 skill"可以告诉 Agent:

复制代码
先讲问题背景;
再解释核心概念;
然后用例子说明;
最后总结学习收获;
避免写成官方文档翻译。

这些都是可以复用的做事方法。

因此,Skill 的本质不是"记住一句话",而是"保存一套做事流程"。

3. Skill 和 Tool 的区别

在前面第四期中,我学习了 Hermes Agent 的工具调用系统。工具调用让 Agent 可以读取文件、执行命令、搜索网页、操作浏览器。那 Skill 和 Tool 有什么区别?

可以这样理解:

复制代码
Tool 是具体动作能力。
Skill 是任务执行方法。

例如:

复制代码
读取文件是 Tool;
知道应该先读 README、再读配置文件、最后总结项目结构,是 Skill。

执行 pytest 是 Tool;
知道如何先判断测试命令、再运行测试、再分析失败原因,是 Skill。

搜索 arXiv 是 Tool;
知道如何围绕一个研究主题检索论文、筛选论文、总结研究脉络,是 Skill。

Tool 更像"手",负责执行具体操作。

Skill 更像"经验",负责告诉 Agent 什么时候做、按什么顺序做、做到什么程度算完成。

所以,Skill 并不是 Tool 的替代品。很多 Skill 反而会调用已有 Tool。比如一个论文调研 Skill 可能会调用 Web 工具,一个代码审查 Skill 可能会调用 Terminal 和 File 工具,一个 GitHub 工作流 Skill 可能会调用 GitHub 或终端命令。

4. Skill 和 Memory 的区别

Skill 也容易和 Memory 混淆。上一期已经初步区分过,这里再结合 Hermes 的使用场景讲清楚。

Memory 保存的是事实和偏好。

Skill 保存的是流程和方法。

例如:

复制代码
用户喜欢中文技术学习笔记风格。

这是 Memory。

而下面这种内容是 Skill:

复制代码
写中文技术学习笔记时:
1. 先说明上一期讲了什么;
2. 再提出本期要解决的问题;
3. 用简单例子解释概念;
4. 再讲系统机制;
5. 最后总结并引出下一期。

这是 Skill。

再比如:

复制代码
用户正在学习 Hermes Agent。

这是 Memory。

而下面这种内容是 Skill:

复制代码
分析开源 Agent 项目时:
1. 先读 README;
2. 再跑 Quickstart;
3. 再分析 CLI;
4. 再拆工具系统;
5. 再看 memory、skills、MCP、cron;
6. 最后进入源码结构。

这是 Skill。

可以用一句话概括:

复制代码
Memory 让 Agent 知道"背景是什么"。
Skill 让 Agent 知道"应该怎么做"。

两者结合起来,才是一个长期 Agent 真正有用的地方。

5. Hermes Agent 的 Skills 存放在哪里?

Hermes Agent 的 Skills 默认存放在:

复制代码
~/.hermes/skills/

这个目录可以理解为 Hermes Agent 的本地技能库。官方内置的 skills、用户从 hub 安装的 skills,以及 Agent 自己创建的 skills,都可以放在这里。

一个典型 skill 目录可能长这样:

复制代码
my-skill/
├── SKILL.md
├── scripts/
│   └── helper.py
├── references/
│   └── examples.md
├── templates/
│   └── report-template.md
└── assets/
    └── sample.png

其中,最核心的是:

复制代码
SKILL.md

这个文件是 skill 的主说明文档。它告诉 Agent 这个 skill 是什么、什么时候用、怎么用、有哪些步骤、有哪些坑、如何验证结果。

其他目录是可选的。

复制代码
scripts/:辅助脚本;
references/:参考资料;
templates/:模板文件;
assets/:图片、样例、资源文件。

这说明 Skill 不只是一个 prompt,它可以是一个包含说明文档、脚本、模板和参考资料的小型能力包。

6. SKILL.md 的基本结构

一个最简单的 SKILL.md 可以这样写:

复制代码
---
name: technical-blog-writing
description: Write Chinese technical learning-note blogs with clear problem, mechanism, example, and summary structure.
version: 1.0.0
author: User
license: MIT
platforms: [linux, macos, windows]
metadata:
  hermes:
    tags: [writing, blog, learning-note]
---

# Technical Blog Writing

## When to Use

Use this skill when the user asks to write a Chinese technical learning-note blog, especially for open-source AI Agent projects.

## Procedure

1. Start by connecting to the previous article.
2. Explain the core problem of this article.
3. Introduce the key concept in plain language.
4. Explain the mechanism step by step.
5. Add examples or command snippets when useful.
6. Summarize what has been learned.
7. End by introducing the next article.

## Pitfalls

- Do not simply translate official documentation.
- Do not only list commands without explaining why they matter.
- Do not overuse abstract terms without examples.
- Avoid making the article look like a marketing introduction.

## Verification

Check whether the final article:
1. Has a clear learning-note style.
2. Explains both the concept and the mechanism.
3. Can be published as a standalone blog post.
4. Connects naturally with the previous and next article.

从这个例子可以看出,Skill 的重点不是"写几句提示词",而是把一类任务的执行经验结构化。

一个好的 Skill 至少应该包含:

复制代码
什么时候用;
具体怎么做;
容易出什么问题;
如何检查结果。

这四部分非常关键。

如果没有"When to Use",Agent 可能不知道什么时候加载这个 skill。

如果没有"Procedure",Agent 就不知道具体步骤。

如果没有"Pitfalls",Agent 容易重复过去的错误。

如果没有"Verification",Agent 就不知道怎样判断任务是否完成得好。

7. Skills 的使用方式

Hermes Agent 中,已经安装的 skill 通常可以作为 slash command 使用。

例如:

复制代码
/plan 设计一个 REST API 的实现计划

或者:

复制代码
/github-pr-workflow 为认证模块重构创建一个 PR

也可以只输入 skill 名称,让它先加载 skill,再继续描述任务:

复制代码
/excalidraw

除了 slash command,也可以通过自然语言触发:

复制代码
请使用 plan skill,帮我为这个项目写一个实现计划。

也就是说,Skill 的入口有两种:

复制代码
显式调用:/skill-name 任务描述
自然语言调用:请使用某个 skill 完成任务

对于初学者来说,显式调用更直观。因为你能明确知道当前加载了哪个 skill,减少 Agent 自己判断错误的可能。

8. 如何查看和搜索 Skills?

查看当前安装的 skills,可以在会话中输入:

复制代码
/skills

也可以在终端中执行:

复制代码
hermes skills list

如果想搜索某类 skill,可以使用:

复制代码
/skills search docker

或者:

复制代码
/skills search writing

如果想浏览官方可选 skill,可以使用:

复制代码
/skills browse

这些命令的意义在于:Hermes 的能力不是固定的,而是可以随着 skill 库扩展。

当你不知道 Hermes 能不能完成某类任务时,可以先搜索是否已经有对应 skill。

比如:

复制代码
/skills search arxiv
/skills search github
/skills search docker
/skills search diagram
/skills search paper

如果找到合适的 skill,就可以先尝试调用;如果没有找到,则可以考虑自己创建一个。

9. 安装新的 Skill

Hermes Agent 支持从 Hub 安装官方可选 skills,也可以从一个 SKILL.md 文件安装。

例如:

复制代码
hermes skills install official/research/arxiv

也可以在会话中输入:

复制代码
/skills install official/research/arxiv

安装后,skill 会被复制到本地 skills 目录,并在新的会话中出现在可用 skills 列表中。之后它也会成为一个 slash command。

如果想确认是否安装成功,可以用:

复制代码
hermes skills list | grep arxiv

或者在会话中搜索:

复制代码
/skills search arxiv

这里需要注意一点:新安装的 skill 通常更适合在新会话中使用。如果想在当前会话立即可用,可以重置会话或刷新相关上下文,但这可能会增加 token 消耗。

10. Progressive Disclosure:为什么 Skills 不会一开始全部塞进上下文?

如果 Hermes 有很多 skills,一个问题就出现了:难道每次启动 Agent,都要把所有 skill 的完整内容全部放进上下文吗?

显然不能。

因为这样会浪费大量 token,也会让模型被无关信息干扰。比如你只是让 Hermes 分析代码,不需要把绘图、音乐、图像生成、邮件处理等 skill 的完整说明都加载进来。

所以 Hermes Skills 使用了 progressive disclosure,也就是"逐步披露"机制。

可以简单理解为三层:

复制代码
第一层:只加载 skill 名称和简短描述;
第二层:需要时加载某个 skill 的完整 SKILL.md;
第三层:必要时再加载该 skill 的参考文件、脚本说明或模板。

这样做的好处是:

复制代码
平时只占用很少上下文;
需要时再加载完整 skill;
一个系统可以同时拥有很多 skill;
不会因为 skill 太多而严重污染当前任务。

这也是 Skills 能够作为长期能力库存在的原因。

如果所有能力都必须每次全部加载,那么 skill 越多,Agent 反而越混乱。Progressive disclosure 让 Hermes 可以"知道有哪些能力",但只在相关任务中真正展开使用。

11. Hermes Agent 的自我改进:Agent 可以创建和更新 Skills

Hermes Agent 的一个重要特点是,它不是只能使用已有 skills,也可以在解决复杂任务后,把过程保存为新的 skill,或者改进已有 skill。

这就是所谓的 self-improvement loop。

比如,用户多次让 Hermes 做同一种任务:

复制代码
分析开源项目;
写学习笔记;
总结论文;
生成代码审查报告;
整理实验流程;
部署某个工具。

如果每次都从头开始,就浪费了大量经验。更好的方式是把成熟流程保存成 skill:

复制代码
以后遇到类似任务,就加载这个 skill,按照之前验证过的步骤执行。

这不是在训练底层大模型参数,而是在 Agent 外部建立一个可复用的能力层。

从这个角度看,Hermes 的"自我改进"更接近:

复制代码
通过长期使用,沉淀流程、模板、脚本和注意事项。

而不是:

复制代码
每次对话后重新训练模型。

这个区别很重要。因为普通用户很难持续训练大模型,但完全可以让 Agent 维护自己的 skills 库。

12. 什么任务适合做成 Skill?

不是所有任务都适合做成 skill。

适合做成 skill 的任务通常有几个特点:

复制代码
重复出现;
有固定流程;
需要多个步骤;
容易出错;
需要调用工具;
有明确验证标准。

例如:

复制代码
开源项目学习笔记写作;
论文阅读总结;
代码审查;
GitHub PR 工作流;
Docker 部署检查;
实验结果整理;
安全日志分析;
周报生成;
技术调研报告;
论文 rebuttal 检查。

这些任务都有流程,且很可能多次重复,因此适合做成 skill。

不适合做成 skill 的任务包括:

复制代码
一次性闲聊;
临时改一句话;
没有复用价值的单次问题;
过于模糊、无法定义流程的任务;
涉及敏感权限但缺少安全边界的任务。

判断是否应该创建 skill,可以用一个简单标准:

复制代码
如果这个任务以后还会重复,并且每次都希望按类似步骤做,就值得做成 skill。

13. 什么情况下应该做成 Tool,而不是 Skill?

虽然 Skill 很方便,但它不是万能的。有些能力更适合做成 Tool。

如果一个能力只是由说明、命令、已有工具组合而成,适合做成 Skill。

例如:

复制代码
论文检索流程;
代码审查流程;
Docker 排错流程;
博客写作流程;
实验报告整理流程。

但如果一个能力需要精确的程序逻辑、复杂 API 鉴权、二进制数据处理、实时事件、流式处理或深度系统集成,就更适合做成 Tool。

例如:

复制代码
浏览器自动化;
TTS;
图像分析;
复杂 API 调用;
持续监听事件;
实时音视频处理。

可以这样理解:

复制代码
能用"说明文档 + 现有工具 + 命令流程"表达的,优先做成 Skill。
需要新增底层执行能力的,才做成 Tool。

这也是 Hermes 设计中很实用的一点。Skill 的创建门槛低,不需要改 Hermes 本体代码;Tool 的能力更底层,但开发成本也更高。

14. Skill 的安全问题

Skills 很强大,但也有安全问题。

因为一个 skill 可能包含:

复制代码
执行命令的步骤;
调用外部服务的说明;
处理用户文件的流程;
要求使用 API key 的配置;
引导 Agent 修改系统状态的指令。

如果随意安装不可信 skill,就相当于把一套未知工作流程交给 Agent 执行。尤其是第三方 skill,如果里面包含恶意命令、错误流程或诱导性指令,就可能带来风险。

因此,使用 skills 时要注意几个原则。

第一,只安装可信来源的 skill。

不要随便安装来源不明的 SKILL.md

第二,安装前先阅读内容。

尤其是看它是否会执行 shell 命令、访问敏感文件、上传数据或修改系统。

第三,涉及密钥时要谨慎。

如果 skill 需要 API key,应确认它如何存储和使用密钥,不要把密钥直接写进明文说明里。

第四,高风险任务要保留人工确认。

比如删除文件、提交代码、发布内容、发送邮件、调用付费 API,都不应该完全自动执行。

第五,及时清理不用的 skills。

长期不用、功能重复、来源不明的 skills 会污染 skill 库,也可能增加风险。

Skill 系统让 Agent 更有能力,但能力越强,越需要治理。

15. Curator:为什么 Skills 也需要维护?

如果 Hermes 在长期使用中不断创建 skills,就会出现一个新问题:skills 会越来越多。

有些 skill 可能很久不用。

有些 skill 可能和其他 skill 重复。

有些 skill 可能已经过时。

有些 skill 可能只解决了一个很窄的问题。

有些 skill 可能随着工具更新需要修补。

如果不维护,skill 库会变得混乱。Agent 每次启动时看到的 skill 列表也会越来越冗余,反而影响判断。

Hermes Agent 中的 Curator 就是为了解决这个问题。

Curator 可以理解为 skill 库的维护机制。它会观察 agent-created skills 的使用情况,把长期不用的 skills 标记为 stale,或者归档到 archive 中。它也可以对一些 skill 提出修补、合并或整理建议。

这说明 Hermes 的自我改进并不是无限堆积技能,而是包含了生命周期管理。

一个成熟的 Agent 不仅要会创建 skill,还要会维护 skill:

复制代码
有用的 skill 保留;
重复的 skill 合并;
过时的 skill 更新;
长期不用的 skill 归档;
重要的 skill 可以 pin 保护。

这和人的知识管理很像。笔记越写越多,如果不整理,最后也会失去价值。

16. 一个适合本系列的 Skill 示例:技术学习笔记写作

结合我当前写 Hermes Agent 学习笔记的场景,其实就很适合创建一个 skill。

例如:

复制代码
technical-learning-note-blog

这个 skill 可以这样定义:

复制代码
---
name: technical-learning-note-blog
description: Write Chinese technical learning-note blog posts for open-source AI Agent projects.
version: 1.0.0
metadata:
  hermes:
    tags: [writing, blog, ai-agent, learning-note]
---

# Technical Learning Note Blog

## When to Use

Use this skill when the user asks to write the next article in a Chinese technical learning-note blog series.

## Procedure

1. Start by briefly connecting to the previous article.
2. State the core question of the current article.
3. Explain the concept in plain language.
4. Explain the mechanism step by step.
5. Use examples, commands, or small tables when helpful.
6. Distinguish similar concepts that beginners may confuse.
7. Summarize the learning result.
8. End by introducing the next article.

## Pitfalls

- Do not write like a translated official document.
- Do not only list commands.
- Do not skip the motivation of each module.
- Do not overuse marketing language.
- Do not make unsupported claims.

## Verification

Before finalizing, check:
1. Can a beginner understand the article?
2. Is the problem clearly introduced?
3. Are related concepts distinguished?
4. Does the article connect naturally with the previous and next article?
5. Is the content complete enough to publish?

有了这个 skill,以后我只需要说:

复制代码
请使用 technical-learning-note-blog skill,继续写下一期。

Hermes 就可以按这个固定风格继续写,而不需要每次重新解释文章结构和要求。

这就是 skill 对长期写作任务的价值。

17. 一个推荐的 Skills 学习路线

对于 Hermes Agent 初学者,我建议按下面顺序学习 Skills:

第一步,查看已有 skills:

复制代码
/skills

或者:

复制代码
hermes skills list

第二步,搜索一个具体方向:

复制代码
/skills search writing

/skills search github

第三步,显式调用一个 skill:

复制代码
/plan 请帮我设计 Hermes Agent 源码学习计划

第四步,观察 skill 和普通对话的区别。

看看它是否按照更稳定的流程输出,而不是自由发挥。

第五步,安装一个官方可选 skill:

复制代码
hermes skills install official/research/arxiv

第六步,自己创建一个简单 skill。

比如写博客、读论文、分析开源项目。

第七步,长期使用后再学习 Curator。

理解 skill 不是创建完就结束,而是需要维护、更新和归档。

18. 对 Hermes Skills 系统的理解

学完 Skills 系统后,我对 Hermes Agent 的"自我改进"有了更具体的理解。

它不是神秘地让模型自己变聪明,也不是每次任务后训练模型参数,而是通过外部 skill 库,把已经验证过的任务流程保存下来。

这样做有几个好处:

第一,复用经验。

同类任务不用每次从零开始。

第二,降低随机性。

有了固定流程,Agent 的输出更稳定。

第三,减少上下文浪费。

Skill 只有需要时才加载,不必每次都塞进提示词。

第四,方便维护。

Skill 是文件,可以编辑、版本化、分享和归档。

第五,适合个人化。

每个用户都可以根据自己的工作方式创建专属 skill。

这也是 Hermes Agent 和普通聊天机器人的重要区别:普通聊天机器人更多依赖当前 prompt,而 Hermes 可以通过 memory 和 skills 把长期使用经验沉淀下来。

19. 小结

这一期主要学习了 Hermes Agent 的 Skills 系统。

我的理解是,Skills 是 Hermes Agent 自我改进能力的核心之一。Memory 让 Agent 记住事实,Tools 让 Agent 执行动作,而 Skills 让 Agent 沉淀做事方法。

Skill 本质上是一种按需加载的能力文档,通常由 SKILL.md 和可选的脚本、模板、参考资料组成。它可以告诉 Agent 什么时候使用、按什么流程执行、要注意哪些坑,以及如何验证结果。

相比 Tool,Skill 更偏流程和经验;相比 Memory,Skill 更偏方法和操作。一个长期 Agent 只有同时具备 Memory、Tools 和 Skills,才有可能真正从"会回答"走向"会持续做事"。

下一期,我将继续学习 Hermes Agent 的 Messaging Gateway,看看 Hermes 如何从终端走向 Telegram、Discord、Slack、Email 等多平台入口,以及这对长期 Agent 的实际使用有什么意义。

相关推荐
2601_961845422 小时前
考研公共课资料推荐|英语数学政治|电子版|资料已整理
搜索引擎·中文分词·solr·lucene·sphinx·高考
YangYang9YangYan2 小时前
学数据分析对应用统计学与大数据专业的价值
大数据·数据挖掘·数据分析
上海蓝色星球2 小时前
从 “算量工具“ 到 “造价智能 ERP“:蓝色星球造价机器人如何重构造价行业的核心逻辑
大数据·重构·机器人
木心术12 小时前
在NVIDIA DGX Spark上部署NemoClaw的实际操作方案以及实际应用便利性。
大数据·分布式·spark
EDA365电子论坛2 小时前
AI 赋能 BOM 编制全流程,彻底解决型号 / 封装 / 精度 / 尾缀写错问题
大数据·人工智能
代码讲故事2 小时前
在没有kibana的ES(elasticsearch)线上生产环境集群中,如何通过命令行修改或增加字段而不需要reindex?
大数据·elasticsearch·搜索引擎·命令行·es·索引·模版
云器科技2 小时前
美团 BI 在指标平台和分析引擎上的探索和实践
大数据
跨境猫小妹2 小时前
多国海关字段持续细化后跨境卖家如何搭建商品信息映射表
大数据·数据库·人工智能·跨境电商·跨境·营销策略
Aurora_Dawn_yy2 小时前
单机部署数据同步_jdk,mysql,kafka,flink,zookeeper,达梦,starrocks
大数据·linux·starrocks·zookeeper·达梦