Hermes Agent

Hermes Agent 自改进机制:Background Review、Curator 与 Goals

Hermes Agent 的自改进不是一句宣传语,而是由 Background Review、Curator 和 Goals 三套不同时间尺度的机制组成。页面拆解经验沉淀、Skill 维护和目标续跑的触发方式与职责边界,帮助你判断 Agent 在什么时候学习、整理能力或继续执行。适合在正式配置前检查。

自动化 进阶

📚 系列导航:上一篇 Hermes Agent 开源模式说明 已经讲清“与 Nous Research:开源模式和商业逻辑”;本篇聚焦 Hermes Agent 自改进机制;下一篇 Hermes Agent Curator 使用指南 继续学习“Curator 使用与 Skill 维护指南”。

先给结论:Hermes 的自改进不是一条神秘提示词,而是三套不同节奏的机制。 Background Review 负责“造”,Curator 负责“修”,Goals/Ralph Loop 负责“续”。把这三个动词记住,整套学习循环就有了骨架。

ℹ️ 版本说明: 原稿基于 Hermes Agent v0.16.0(2026 年 6 月)源码整理。本文保留其版本化机制分析;命令、数量和界面请以 Hermes Agent 官方文档 与本地输出为准。

Hermes Agent 自改进机制的版本变化

上一版 Hermes 橙皮书写学习循环的时候,对应版本是 v0.7.0。我当时的措辞挺虚的:一个「会写记忆、会建 skill 的 agent」。意思是它能自我进化,但你要问「具体哪个文件、哪个触发条件、跑在哪个线程」,我答不上来。那时候它本质上还是个理念,加一个被 prompt 鼓励着去存东西的主 agent。

这两个月它跳了八个版本,到 v0.16.0。我把源码逐行读了一遍,发现那套理念已经被工程化成了实打实的基础设施。最干净的拆法是三个动词:造、修、续。

Hermes Agent Background Review、Curator 与 Goals 三套自改进引擎

造,是每轮对话后悄悄 fork 一个子 agent 去复盘,决定这次学到了什么、写进哪个 skill。修,是一个每七天自己醒一次的维护者,给 agent 造出来的 skill 库做合并、归档、打包。续,是当一个目标没完成时,agent 给自己续命、连着多跑几轮,而不是答一句就停。

三台引擎跑在三种完全不同的时间尺度上。这一节先把三台机器各自的位置摆清楚,后面两节再单独深挖最有意思的两台。

自改进 Agent 为什么需要自动清理

在拆引擎之前,我想先给你一个看待这套机制的角度,不然容易把它当成一堆零散的后台任务。

会自己长 skill 的 agent,有个绕不开的副作用:它解决一个新问题就想存一条经验,跑上几个月,攒出几十上百个又窄又重复的 skill。每个都只对当时那一个 bug 有用,合在一起就是一团污染 catalog、白白烧 token 的垃圾。只会增不会减的系统,最后一定被自己撑死。

所以 Hermes 这套东西真正成立的地方,不在于它会造,而在于它造的同时配了一套清理。我读源码时脑子里冒出来的类比是生物的细胞,既要增殖,也要凋亡。增殖让组织生长,凋亡把老化、错误、用不上的细胞清掉。一个只增不亡的组织有个名字,叫肿瘤。Hermes 的 background review 负责增殖,Curator 负责凋亡,这俩是一组对仗,配套出现的。

带着这个角度,再看三台引擎就顺了。

Background Review:每轮对话后的后台复盘

这台引擎对应源码里的 agent/background_review.py 。它的工作方式,文件头注释写得很直白:每一轮对话结束后,主 agent 可能会 fork 一个守护线程,把刚才那段对话的快照拿去重放一遍,然后问自己一句:这次有没有什么 skill 或记忆值得存下来、改一改?

关键是它跑在主回复发出去 。源码注释专门解释了为什么:复盘绝不能和用户的任务抢模型的注意力。所以它是 best-efort 的,失败了就静默跳过,绝不拖垮主流程。你跟它对话时根本感觉不到背后有个分身在写笔记。

触发它的不是一个计数器,是两个,而且这俩错开了。这个细节我觉得特别能体现设计者想清楚了「知识有两种」。

计数器按什么算默认阈值管的是哪种知识
记忆 nudge对话轮数每 10 轮你是谁、当前在干什么
skill nudge本轮工具迭代次数每 10 次这类活该怎么干

为什么记忆按「轮」、skill 按「工具迭代次数」?我琢磨了一下,逻辑很微妙。一次复杂任务,对话上可能只来回一两句,但内部跑了几十次工具调用。这种活更可能沉淀出一条「怎么做这类事」的程序性知识,所以拿工具迭代数当尺子才合理。记忆是「你是谁」,skill 是「怎么做事」,两种知识用两把尺子量。这俩阈值都能在配置里改。

这台引擎里最值得引用的,是它复盘 skill 时用的那段 prompt。我把核心几条挑出来,这几乎就是一份「AI 该怎么给自己写规则」的工程方法论。

默认就该学:prompt 原话是「BeACTIVE,大多数 session 都该产出至少一次 skill 更新……一次什么都不做的复盘,是错过了学习机会,不是中性结果」。它把「不学」定义成失职,而不是默认安全选项。

更有意思的是它对学习信号的定义。MitchellHashimoto 用 Claude Code 时有个习惯:agent 每犯一个错,他就往 CLAUDE.md 里加一条规则。Hermes 把这件事自动化了,而且把「犯错」具体成了用户的不爽语气,「stop doing X」「这太啰嗦了」「别这么排版」「你怎么又解释」「直接给答案」,这些挫败信号被它列为一等学习信号,要求当场编码成 skill 里的坑位或步骤。

它改 skill 还有个优先级梯度,不是一遇到事就新建:先改本轮刚加载过的那个 skill,再改一个已有的大类,再往大类下面加子文件,实在没对应大类才新建。这条梯度就是为了防止 skill 无限膨胀,能在旧的上面补,就别造新的。新建的 skill 名字还必须是「类级」的,禁止用某个 PR 号、某串报错、某个今天才有的代号命名。源码原话很狠:如果这名字只对今天这个任务有意义,那它就是错的。

Curator:定期维护 Agent 生成的 Skills

第二台引擎是 Curator,源码在 agent/curator.py 。这玩意儿在旧书里压根不存在,它是 v0.12.0 才诞生的,那个版本官方直接命名为 The Curator release,发布说明第一句就是:Hermes 现在能自己维护自己了。

它干的事,正是上面说的「凋亡」那一半:给 agent 自创的 skill 库做合并、归档、打包,纯维护,不学新东西。background review 在复盘时如果发现两个 skill 重叠,它 自己去合并,只会「记一笔,交给 curator 大规模处理」。两台引擎的职责在源码里被划得很清。

Curator 的触发节奏跟第一台完全不同。它不靠 cron 守护进程,靠的是 idle 检测:默认每 7 天最多跑一次,而且要等 agent 闲置满 2 小时才动手。还有一道很贴心的闸门:全新安装或刚 update 完,第一次 tick 它不会立刻乱动你的 skill 库,而是把「上次运行时间」种成「现在」,等满一整个周期才真跑。设计者的考虑是:刚更新完就大改用户的库,太唐突了。

它干活分两段,第一段完全不用大模型。一个纯函数状态机,按每个 skill 的「最后活动时间」机械地推进生命周期:

Hermes Agent Curator 在自改进闭环中的维护位置

陈旧的 skill 一旦被重新用到,会自动复活回 active。被 pin 住的 skill 永远不参与自动转移。这一段不烧一分钱 token,纯靠时间戳推。第二段才是大模型复盘,fork 一个 agent 真正去判断哪些该合并、哪些该归档。

Curator 这台引擎细节最多、刹车做得最重,本书下一节专门拆它,包括它从「找重复」进化到「建伞」的哲学转向,以及那套永不删除、跑前打 tar.gz 快照、可以整轮回滚的安全设计。这里你先记住它在三台引擎里的位置:负责修剪的那一台。

Goals Ralph Loop:让目标跨轮次继续

前两台改的是 agent 跨会话的能力。第三台不一样,它改的是 agent 在一次会话里的坚持度。源码在 hermes_cli/goals.py ,注释里管它叫「Hermes 的 Ralph loop」。

机制不复杂:一个 goal 是用户给的、跨多轮一直生效的目标。每一轮结束后,一个很小的 judge 调用会问辅助模型一句:这个目标,被刚才这条回复满足了吗?没满足的话,Hermes 就把一段「继续干」的提示喂回同一个会话,接着跑,直到目标完成、轮次预算耗尽、用户喊停、或者用户发来一条新消息为止。

它有几个我挺欣赏的克制设计。续命用的提示就是一条普通的用户消息追加进去,不动 system prompt、不换工具集,这样 prefix cache 不会失效,省钱。judge 万一坏了,它选择 fail-open,也就是「继续」,因为一个坏掉的判官不能把进度卡死,反正有轮次预算兜底。你随时发一条真实消息,就能抢占掉续命提示。

💡 核心建议

前两台引擎让 agent「越用越懂你」,第三台让它「盯着一个目标不松手」。造能力、修能力、续动力,三件事合起来,才是完整的「agent 自己给自己造缰绳」。

Hermes Agent 三套自改进机制对比

把三台机器并在一起看,差异一目了然。它们跑在三种时间尺度上,各管一件事,谁也不抢谁的活。

引擎动词触发节奏干什么跑在哪
Background Review每对话 10 轮/10 次工具迭代决定这次学到什么→写记忆、建改 skill主回复后 fork 的后台线程
Curator默认每 7 天+idle 2 小时合并、归档、打包 skill 库独立 fork 的 agent,用辅助模型
Goals/Ralph Loop每轮结束后判一次目标没完成就续命,连跑多轮同一会话内,追加提示

这就是两个月里这条闭环最大的变化。旧书写的是一个「应该会自我进化」的 agent;v0.16.0 是一套有触发器、有状态机、有边界、有刹车的工程系统。它从一个含混的承诺,变成了你能在源码里指着每一行追问的基础设施。

三台引擎里,造和续相对好懂,最值得展开的是「修」这一台,它身上藏着这套自改进系统最克制、也最反直觉的两笔设计。下一节我们就钻进 Curator,看看一个会自我清理的 agent,刹车到底踩在哪里。

常见问题

Hermes Agent 怎么实现自改进?

它通过后台复盘沉淀记忆与 Skill,再由 Curator 维护 Agent 生成的 Skill,并通过 Goals 机制继续未完成目标。三者解决的问题和触发节奏不同。

Hermes Agent 会在每次对话后修改自己吗?

不一定。后台复盘有触发条件,而且属于不影响主回复的辅助流程;是否写入记忆或 Skill,还取决于当轮是否出现可复用经验。

这篇教程里的版本数字会变化吗?

会。原稿以 Hermes Agent v0.16.0 为分析基线,平台、工具、命令参数和默认配置可能继续变化;实际操作前请核对当前官方文档和本地命令帮助。