跳到正文

Hermes:怎样把一次经验变成下次可用的知识 ​

返回系统目录 · 关键代码导读 · 上下文与记忆

假设你和助手一起排查过测试失败。以后遇到同类问题,你希望它记住项目要求,也能沿用那套排查方法。Hermes 把这些经验分开处理:短事实写进记忆,较长的方法写成 Skill,需要时再读;任务结束后,还可以安排一次后台复查,挑出值得保存的经验。更新发生在宿主管理的文件与模型输入中,模型权重训练属于另一件事。

先把两种知识分开 ​

以一个虚构任务说明:你让助手分析测试失败,同时明确“本项目只在隔离的测试环境验证,不操作生产数据”。

  • 项目要求适合短记忆。MEMORY.md 保存环境事实,USER.md 保存用户资料,加载后放进系统提示。默认容量分别是 2,200 和 1,375 个字符,按字符而非 token 计算;外部手工写入超限内容时,加载会提醒。内置存储与加载
  • 排查步骤适合 Skill(可复用的工作方法)。启动提示通常先列名称和描述;需要时,skill_view 读取 SKILL.md 或相关文件。这样,长流程可以按需取用。索引生成、按需读取

两种知识都能保存,取用方式各有安排:短记忆随提示带上,Skill 正文在需要时读取。真正执行其中的命令,仍要通过宿主工具和权限检查;加载 Skill 也可能涉及预处理和依赖激活,使用前应审查内容与配置。

正常路径:读、做、筛选,再保存 ​

  1. 开始工作时,启用内置记忆的宿主建立 MemoryStore,从磁盘读入短记忆,并为提示准备一份副本,代码称它为 snapshot(快照)。
  2. 系统提示组合该快照与 Skill 索引;模型先看到短记忆和可用流程的名称、描述,流程正文留到需要时读取。
  3. 遇到测试失败时,模型可以调用 skill_view 读取排查流程;宿主找到 Skill、检查状态并返回内容,相关参考文件再按需读取。
  4. 排查中发现新的稳定事实,或需要改进流程时,模型提出 memory 或 skill_manage 调用,宿主检查操作与审批后处理写入。
  5. 一轮结束后,条件满足时,宿主启动 review fork(独立的后台复查任务)。它拿着会话材料和受限工具,检查哪些经验值得整理。启动还要求已有最终答复、任务未中断且未禁用后台复查。
  6. 提议可以正式保存,也可以先进入待批准列表。随后重建提示或读取 Skill 时,再查看新知识怎样进入输入。

这条路径的具体入口、状态和分支见代码导读。下面只画“已保存、待批准、当前可见”的关系,不是完整系统架构。

Hermes 中持久知识、系统提示快照、当前输入和待批准写入的区别

查看原尺寸 SVG(可缩放)

不看图的说明与箭头证据

新笔记在什么时候用上 ​

开始工作时,程序为系统提示准备一份记忆副本。随后,MemoryStore 维护的 live entries(当前条目)会随写入更新并保存到磁盘,而 format_for_system_prompt() 仍读取准备提示时留下的那份快照。

中途写入新记忆后,要到允许的重建位置重新读取,系统提示中的记忆块才换成新内容。当前任务也能从用户消息和工具结果得到新信息,所以要分别观察提示快照和本轮新增消息。写入与快照的分离、快照读取

固定版本的正常会话在上下文压缩提交时,会清除旧提示缓存、重读存储并重建提示。另有一条 detached(分离回合)路径,可以携带预先准备的 seeded prompt(预置提示),沿用这份内容。读代码时按所走路径判断刷新时机。压缩边界、失效时重载

保存经验时,留意几种结果 ​

短记忆容量用完。 add / replace 超过字符容量会返回失败,要求缩短、合并或移除,而不是悄悄丢弃旧条目。替换是整条 entry 替换,old_text 只用于定位;它不是在条目中局部替换一个短语。多条匹配也会拒绝猜测。重复整合失败后有终止提示,避免保存辅助知识拖住用户的答复。容量与整条替换、连续失败限制

提议进入待批准列表。 开启 write_approval 时,Skill 写入会先暂存;记忆写入则按前台交互、后台等来源决定询问或暂存。暂存结果可以包含 success: true 与 staged: true,表示提议处理成功,而非正式存储已更新。审批还可能被拒绝。应检查 staged、待办记录和实际读回,不只检查一个布尔值。审批决策、Skill 暂存结果

写入报错后,先读回核对。 记忆存储先更新当前条目,再写文件;文件写入采用临时文件加原子替换,避免读到半截内容。它处理的是单次文件替换,当前条目、正式文件和工具回包仍可能落在不同进度。Skill 的一条路径则先写文件,再扫描,扫描拒绝时尝试恢复原文;恢复也可能报错。所以,审批前拒绝可停止提交,写入过程报错则需核对文件和状态后再决定重试。记忆修改顺序 · 原子文件写入 · Skill 写后扫描与恢复

后台复查使用更小的操作范围。 无人值守 review 要替换或删除旧记忆时,replace / remove 会先尝试暂存为待批准提议;暂存失败则拒绝操作,即使通用审批开关关闭也一样。默认 review 工具白名单排除了普通 terminal / 写文件工具;配置中的 extra_tools 则可以扩充可用工具。无人值守删除门禁、review 白名单

加载 Skill 可能顺带做准备工作。 skill_view 默认路径可预处理正文、尝试激活依赖。因此使用陌生 Skill 前,要一起审查内容、依赖和允许执行的操作。本文只看代码,没有执行激活。预处理与依赖分支

与 Pi 对照时,比较什么 ​

Pi 的既有剖面区分核心循环与 coding 会话外壳,Skill 篇解释按需指令与可执行 Extension。Hermes 这一篇多讲一步:宿主如何把短事实和长流程作为可写的跨任务资产,并为任务后的审视建立独立触发与工具门禁。

对照这两篇,可以看到知识维护逻辑放在哪里:Pi 可以通过扩展增加工作流,Hermes 则在宿主中安排了保存、审批和任务后复查。Hermes 的做法让这些步骤更集中,也增加了缓存刷新、错误知识持久化、审批、并发写入与维护的成本。这是基于本文路径的工程判断;使用效果和性能仍要另外测量。

把保存和使用接起来 ​

选一条短事实和一份排查流程,沿四个位置观察:工具处理结果、正式文件、后续输入、任务结果。staged: true 表示提议正在等批准;正式文件改变后,还要看刷新或读取是否发生;最后用一个同类任务检查这份知识是否真的帮到了助手。

这个小路线能把“助手说记住了”变成可观察的保存和取用过程。测试时使用虚构材料和隔离配置,避免触及个人记忆与生产数据。

本篇未覆盖 ​

固定研究版本:NousResearch/hermes-agent@a9109b07f42685f88397008d0d5a6c3d481b3b28,核对日期 2026-09-27;上游提交时间为 2026-09-27 03:21:39 UTC。仓库 LICENSE 为 MIT。本稿是静态源码剖面,不是运行评测。

未运行 Hermes、未调用模型、未验证写入审批界面、未做多进程竞争实验;未评估记忆有效性或 Skill 生成质量。外部记忆 provider、压缩算法本体、Skill Hub 安全扫描、完整插件框架、terminal 后端及 Computer Use 留给单独专题。官方滚动文档用于发现线索,遇到与固定源码不一致时,以本文链接的版本限定结论。

图的文字说明 · hermes-session-memory ​

假设助手刚完成一次排查,希望以后记住项目要求,也能沿用排查方法。Hermes 把短事实存进记忆文件,把较长的方法存成 Skill(可复用的工作方法)。这张图说明它们怎样保存,又怎样被模型取用。

  1. 开工前读短记忆。 宿主从 MEMORY.md 和 USER.md 读取内容,准备一份供系统提示使用的副本。图中的“系统提示快照”,就是准备提示时留下的这份内容。
  2. 把本轮材料交给模型。 宿主将快照与当前用户、助手和工具消息组合成输入。模型据此回答或建议调用工具。图中的“本轮模型输入”表示这次请求实际收到的材料。
  3. 需要长流程时再读取。 模型可以调用 skill_view,由宿主返回 SKILL.md 或相关参考文件,作为工具结果交回模型。长流程因此可以按需使用。
  4. 发现值得保存的经验,先提出修改。 前台工具调用,或条件满足时启动的后台 review(复查),可以提出更新。宿主通过内置 memory / skill_manage 检查操作、处理审批,再保存短事实或流程文件。
  5. 需要批准的提议先等一等。 图中的“待批准 pending”指待批准列表。提议先暂存,获批后再提交,并检查实际保存结果。图中的“检查知识写入”对应这一段操作与审批检查。

浅绿是正式保存的知识,紫色是提示快照,蓝色是本轮输入及模型提出的修改,橙色是写入检查与待批准提议。节点名称也说明了各自用途,不需要只靠颜色辨认。

普通的中途写入先改变存储,提示中的那份快照仍保留原内容。图中的“加载 / live 压缩”表示加载提示,以及仍在运行的助手(live agent)提交上下文压缩结果时的读取分支。另有 detached(分离回合)的压缩路径,可能沿用提前准备好的 seeded prompt(预置提示);这条分支可能继续使用已有内容,不能一律按图中的重读箭头理解。

当前消息和工具结果也能带来新信息。因此,检查模型看到了什么时,要一起看系统提示快照和本轮消息。图中的消息框用于说明这些组成部分,实际发送哪些消息由宿主安排。

  • 执行前被审批拒绝,停止提交。 图上的“写前审批拒绝:不提交”指处理动作之前就被审批拒绝。
  • 执行报错,读回核对。 记忆工具先修改内存条目,再写文件;Skill 的一条路径先落盘再扫描,扫描拒绝时尝试恢复原文,恢复也可能报错。此时要核对当前条目、正式文件和保存结果,再决定后续动作。
  • 读取 Skill 可能带着准备步骤。 默认加载可预处理内容或激活依赖,使用前应检查 Skill 内容、依赖和允许的操作。
  • 后台复查按条件启动。 无人值守时,替换或删除旧记忆还有额外暂存要求。默认工具白名单限制其操作范围,显式 extra_tools 配置则可以扩充这份名单。

固定源码版本:NousResearch/hermes-agent@a9109b07f42685f88397008d0d5a6c3d481b3b28,核对日期 2026-09-27;MIT。图根据源码简化了知识读取、修改与保存过程,尚未追踪实际运行。

全部会话恢复、外部记忆服务、审批界面、沙箱、Skill 批量操作和插件分支需另看各自实现。这里保存和取用的是资料,图中没有模型权重训练过程。


在线预览稿:书稿仍在校稿,系统篇以文内固定源码版本为准;静态阅读不等于运行验收。发现错误或有改进建议?按本章填写邮件,或查看反馈说明。

书稿提交:33f7dcdf7ac3。