Hermes Agent Masterclass
你需要了解和自定义 Hermes Agent 的一切
自进化技能、三层记忆、GEPA 优化,以及从 1 个到 10 个全天候为你工作的 AI 代理。
Hermes Agent 在两个月内就获得了超过 9 万个 GitHub Star。开发者们正在悄悄构建属于自己的个人 AI 代理——它们能学习你的工作流程、记住上下文,并且 24/7 不间断运行。
你用过的每一个 AI 代理都有同一个问题:会话一结束,它就忘掉一切。
你纠正过三次的编码偏好、项目规范、昨天花了 10 分钟才找到的修复方案……全都没了。下次会话,你又得从零开始。
Nous Research 推出的 Hermes Agent 采用了完全不同的方法。它内置了一个学习循环,能够:
- 跨会话记忆
- 自主编写可复用的技能
- 在后台自动修剪技能
- 通过名为 GEPA 的进化引擎进行离线验证 目前还没有任何开源代理同时具备这三项能力,就连 OpenClaw 也没有。
这篇指南将详细讲解这个学习循环的工作原理、每一层记忆的作用,以及如何从零开始完整配置。
读完之后,你就能在自己的机器上运行三个完全隔离的代理:
- 一个程序员(使用你的 Claude 代码)
- 一个深度研究员
- 一个设计师 每个代理都有独立的人格、记忆、技能和 Telegram 机器人。
整个搭建过程只需几分钟,而且所有步骤都可以在你自己的硬件上完美复现。
注意:本文中的所有插图都是由 Pixel(你最后会学会构建的 Hermes 代理之一)设计的。阅读时留意它们!
开始阅读吧!
如何阅读这篇文章
分为两大部分:先理论,后动手。
时间不够?直接跳到“快速上手”部分,命令可以独立运行。
但理论部分值得阅读——理解技能如何自进化、记忆如何组合、GEPA 在何时发挥作用,能让你把 Hermes 从“带笔记的聊天机器人”变成真正能持续积累价值的智能体。
本文内容一览:
- Hermes Agent 究竟是什么?(附与 OpenClaw 的对比)
- 架构总览(一张图看懂)
- 记忆之前:代理的“灵魂”——SOUL.md
- 三层记忆系统
- 自进化技能:代理自己写操作手册 + Curator
- GEPA:离线技能优化
- 快速上手:安装、Telegram、第一个代理
- 运行多个代理:多配置、三种人格、定时摘要
- 按需自定义代理 Hermes Agent 到底是什么?它在架构上有什么不同?
一句话总结:一个越用越聪明的代理。
真正让它实现这一点的,是把三种通常相互独立的特性整合到一个框架中:
- 运行时技能学习
- 持久的多层记忆
- 可选的权重训练流水线 目前开源生态中还没有其他代理同时具备这三点。
最接近的对比是 OpenClaw。两者都支持持久化和消息交互,但架构选择完全相反。Kilo 博客的一句话总结得很好:
“Hermes 把学习代理包装成一个网关;OpenClaw 把消息网关包装成一个代理。”
架构总览
在理解学习循环之前,先看一下 Hermes 的整体结构。
一切都通过 run_agent.py 中的单个 AIAgent 类来调度。CLI、消息网关、批量运行、IDE 集成……所有入口最终都指向同一个核心代理。这也是它真正实现平台无关的关键。
核心循环采用 ReAct 风格且同步运行:构建系统提示 → 检查是否需要压缩 → 可中断的 API 调用 → 执行工具调用 → 循环继续。
几个重要细节会在后面发挥作用:
- 代理可以在 6 个不同位置执行命令:本地终端、Docker、SSH、Modal、Daytona 或 Singularity。只需改一下配置,就能把执行环境从笔记本迁移到云端 GPU 服务器。
- 几乎兼容所有模型。通过翻译层,任意提供商都能统一成三种 API 格式。因此你可以一条命令就把 Claude 换成 GPT、Gemini 或本地 Ollama,一切照常运行。
- 每个任务硬性限制 90 个回合。否则陷入死循环的代理会悄悄烧光你的额度。子代理也共享预算,不会让失控的委托链逃过限制。 基础架构讲完了,接下来才是真正有趣的部分。
记忆之前:代理到底是谁?
在讨论记忆和自进化技能之前,还有一个更高层的“身份”层。
记忆是代理“知道什么”,技能是代理“怎么做”。但这两者都无法回答“你是谁”。没有身份层,每个代理都像同一个家伙戴着不同帽子。
Hermes 用一个单独的文件解决这个问题:SOUL.md。
它位于 ~/.hermes/SOUL.md,在系统提示中占据第 1 号槽位,先于其他任何内容加载。它定义了代理的人格、语气、沟通风格和硬性限制。
SOUL.md 是人工编写且静态的。你写一次,慢慢微调,它就会在所有项目、所有会话中保持一致。如果文件缺失,Hermes 会回退到内置的默认身份。
为什么这对“自我提升”故事如此重要?因为后续所有的记忆写入、技能创建、知识整合,都是通过这个身份的镜头来完成的。SOUL.md 是固定框架,记忆和技能是里面的可变部分。
三层记忆系统:三种速度
Hermes 没有单一的“记忆”,而是三层,每层用途不同。
第 1 层:两个极小的 Markdown 文件
核心是磁盘上的两个文件:
- MEMORY.md(最多 2200 字符):记录环境、项目规范、工具 quirks、已吸取的教训。
- USER.md(最多 1375 字符):记录你的个人资料(姓名、沟通偏好、技能水平、避免事项)。 会话开始时,这两个文件以冻结快照的形式注入系统提示。如果代理在会话中写入新记忆,会立即保存到磁盘,但要到下一次会话才会出现在提示中。
当记忆快满(约 80% 容量,系统提示头部会显示百分比)时,代理会自动合并,把相关条目浓缩成信息密度更高的版本,只保留真正有用的内容。
第 2 层:全文会话搜索
所有对话(CLI 和消息)都保存在 SQLite 中,支持全文搜索。代理可以搜索过去几周的任何对话。
权衡很明显:第 1 层始终在上下文内,但容量极小;第 2 层容量无限,但需要主动搜索 + LLM 总结。
关键事实放第 1 层,其余全部按需搜索。
第 3 层:外部记忆提供商(8 个插件)
更深的持久化记忆可通过 8 个可插拔提供商实现(与内置记忆并行,从不替换)。同一时间只能激活一个。
激活后,Hermes 会在每次对话前自动预取相关记忆、每次回复后同步对话、在会话结束时提取记忆。
自进化技能:代理自己写操作手册
记忆管“事实”,技能管“流程”。
技能是带 YAML 前置信息的 Markdown 文件,相当于代理的“程序性记忆”——不是它知道什么,而是它怎么做事。
技能的结构(此处省略原文插图描述)
为了节省 token,技能采用渐进式披露:
- Level 0:只显示名称 + 描述(完整目录约 3k token)
- Level 1:真正需要时才加载完整内容
- Level 2:可进一步钻取技能内的参考文件 自进化循环(核心差异点)
代理通过 skill_manage 工具自主创建技能。触发时机包括:
- 完成复杂任务(5+ 个工具调用)
- 遇到错误或死胡同后找到正确路径
- 用户纠正它的做法
- 发现非平凡的工作流 循环流程:
遇到问题 → 试错解决 → 把成功方案保存为 SKILL.md → 下次遇到类似问题,直接加载技能按成熟流程执行,而非重新探索。
工具支持 6 种操作:create、patch(推荐,节省 token)、edit、delete、write_file、remove_file。
Curator:技能的垃圾回收
如果不维护,代理创建的技能会堆积成山,出现大量狭窄、重叠的手册,既浪费 token 又污染目录。
Curator 是后台维护系统,仅在“闲置 2 小时且 7 天未运行”时触发。它会启动一个独立的代理 fork(不影响当前对话),进行两阶段处理:
- 自动过渡(确定性,无需 LLM):30 天未用 → 标记为 stale;90 天未用 → 归档。
- LLM 审查(最多 8 轮):fork 代理逐个评估所有自创技能,决定保留、修补、合并或归档。 重要限制:
- 绝不碰官方或 Hub 安装的技能,只处理代理自创的。
- 绝不自动删除,最坏结果是归档到 ~/.hermes/skills/.archive/,一条命令即可恢复。
- 每次运行前会自动备份整个 skills 目录为 tar.gz,随时可回滚。 你也可以用 hermes curator pin 固定关键技能,保护它们不被归档(但仍可被修补)。
GEPA:用执行轨迹离线进化技能
这是最精彩的部分。
代理内学习循环(技能创建 + Curator)有一个已知弱点:代理容易“自我表扬”,即使表现不佳也觉得自己做得很好。社区反馈已多次证实这一点。同一个系统既能自动生成技能,也可能把人工自定义覆盖成更差的版本。
GEPA(Genetic-Pareto Prompt Evolution)正是为此而生。它不在 Hermes 运行时中,而是放在伴侣仓库 NousResearch/hermes-agent-self-evolution 中,作为离线优化流水线运行(ICLR 2026 Oral 论文,MIT 许可)。
核心思路:不再问代理“你做得好吗?”,而是让 GEPA 阅读执行轨迹,理解失败原因,再通过进化搜索提出针对性改进。
流水线步骤:
- 读取当前技能
- 生成评估数据集(Claude Opus 合成测试用例、SQLite 真实会话历史或人工金标集)
- 运行 GEPA 优化器:分析轨迹 → 找出失败点 → 生成候选变体
- 用 LLM-as-judge + 评分规则评估(非简单通过/失败)
- 施加约束门:完整测试套件 100% 通过、技能大小 <15KB、缓存兼容性、语义目的不漂移
- 最优变体以 PR 形式提交到 Hermes 仓库(绝不直接提交) 无需 GPU,全程 API 调用,单次优化成本约 2-10 美元。
这套方案在你遇到瓶颈又不想花钱做微调(RL/GRPO)时特别有效。
总结:
SOUL.md 设定身份 → 运行时循环捕捉经验 → Curator 保持库干净 → GEPA 确保库里的东西真正有效。
理论部分结束,下面开始在你的机器上实际运行!
快速上手
支持 Linux、macOS 或 WSL2,Python 3.11+,8GB 内存即可(API 使用模式)。
一条命令安装:
(原文命令此处省略,实际操作请按原帖复制)
运行设置向导,依次配置提供商、API Key、模型和工具。
在终端开始聊天:
(命令略)
连接 Telegram
想在手机上和代理聊天?指向一个 Telegram Bot 即可。
从 @BotFather 获取 Bot Token,再从 @userinfobot 获取你的用户 ID,配置完成。
~/.hermes 目录里有什么?
安装后会在家目录新建一个文件夹,了解布局会让后续操作更清晰。
重点文件:
- config.yaml:所有非敏感配置的真相源头(模型、终端后端、工具开关等)。
- .env:存放所有密钥(API Key、Bot Token 等)。
- SOUL.md:身份层。
- skills/:整个学习循环的核心。
- state.db:SQLite 数据库,支持全文搜索。 添加新技能
Hermes 官方 Skills Hub 已有 687 个技能,分 18 类。你也可以把任意 GitHub 仓库添加为自定义源,方便团队共享或维护私有集合。
从 1 个代理扩展到 10 个
单个代理就很好,但多个专业化代理才是 Hermes 的真正威力所在。
Hermes 内置“profiles”功能,每个 profile 都是完全隔离的 Hermes 实例,拥有独立的配置、记忆、技能、会话和 SOUL.md。
我们来搭建三个:设计师、程序员、研究员。
为每个 profile 创建专属 Telegram Bot
每个 profile 需要独立的 Bot Token。
通过 SOUL.md 赋予每个人格
这是让代理真正不同的关键。
(原文给出了设计师、程序员、研究员的 SOUL.md 示例)
自定义程序员:让它通过 Claude Code 执行
激活提示(单条消息发送即可):
“I already have a Claude Max subscription. You are my staff engineer who helps me with my day-to-day coding tasks, and under the hood you use Claude Code for all the executions. Set yourself up accordingly.”
自定义设计师:教它你的视觉风格
把参考设计图拖进 CLI 或 Telegram,然后发送提示,设计师会自主学习并创建专属技能。
定时任务:用自然语言写 Cron
研究员的 SOUL.md 提到每天发送 Telegram 摘要,这就需要定时任务。
Hermes 内置调度器,你只需用英语描述任务,它会自动转换成 cron。
其他实用模式
- 单次延时:/cron add 30m “提醒我检查构建”
- 周期任务:/cron add “every 2h” “检查服务器状态”
- 精确 cron 表达式
- 技能挂载、任务链等高级用法