📚 系列导航:上一篇 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。我把源码逐行读了一遍,发现那套理念已经被工程化成了实打实的基础设施。最干净的拆法是三个动词:造、修、续。

造,是每轮对话后悄悄 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 的「最后活动时间」机械地推进生命周期:

陈旧的 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 为分析基线,平台、工具、命令参数和默认配置可能继续变化;实际操作前请核对当前官方文档和本地命令帮助。