Hermes Agent 的记忆与技能:工作原理详解
深入浅出地讲解 Hermes Agent 的持久化记忆系统与技能框架——它们存储什么、如何在重启后保留,以及哪些情况会导致数据丢失。
简而言之:Hermes Agent 通过写入纯 Markdown 文件来管理记忆——全局上下文存储在 MEMORY.md,每个用户有独立的 USER.md,这些文件都位于智能体的数据目录中。智能体在每次会话开始时读取这些文件,并随着对话的推进自动更新。记忆可直接查看、手动编辑,也可随时迁移——无需数据库,无需向量存储。
为什么记忆与技能是核心差异化优势
大多数 AI 工具在会话之间会完全重置,每次都从零开始。Hermes Agent 的设计基于一种截然不同的理念:智能体应该随着使用时间的增长,不断积累知识与能力。
这不只是功能描述,而是 Hermes 与普通聊天界面之间的根本架构差异。Hermes 官方文档将其定位为"与你一同成长的智能体",而记忆系统和技能系统正是这一愿景的实现机制。
理解这两套系统的工作原理,能帮助你更高效地使用 Hermes,也能解释为什么部署方式(在哪里、以何种方式运行 Hermes)对这个智能体的影响,远比其他大多数智能体更为关键。
Hermes 记忆的工作方式
Hermes 将持久化记忆存储在智能体数据目录下的一组文件中。核心文件是 MEMORY.md——一个结构化的 Markdown 文件,智能体在每次会话开始时读取它,并随着对话进展持续更新。
这不是数据库,也不是向量存储,而是一个普通的纯文本文件,智能体可以像读写任何文档一样操作它。这种设计的简洁性是刻意为之的:记忆可以直接查看、手动编辑,也可以随时迁移。你用文本编辑器打开它,就能一目了然地看到智能体知道些什么。
哪些内容会被写入记忆
智能体根据自身判断决定将什么写入 MEMORY.md,通常包括:
- 用户偏好与工作风格备注
- 进行中的项目摘要与上下文
- 用户明确要求智能体记住的信息
- 智能体在多次会话中观察到的规律
- 需要延续的决策(偏好的工具、偏好的模型等)
你也可以直接告诉 Hermes 记住某件事,例如:"记住我喜欢用 Python 而不是 JavaScript",或者"保存一份我们今天所做工作的摘要"。智能体会立即将这些内容写入 MEMORY.md。
用户档案
除了 MEMORY.md,Hermes 还为每位与智能体交互的用户维护一个 USER.md 文件。这是全局记忆文件的逐用户版本,存储特定用户的个人信息——在通过共享 Telegram 部署为多个用户提供服务时尤为有用。
上下文文件
Hermes 还会读取项目目录下的上下文文件,例如你在工作目录中主动放置的 CONTEXT.md,为智能体提供特定项目或领域的背景信息。智能体将这些文件视为参考文档,而非可修改的记忆。
这正是 Hermes 能够持续参与项目工作的机制所在:你给它一份描述项目背景的上下文文件,它就能在每次讨论该项目时自动带入这些上下文,无需你反复重述。
技能系统
记忆存储的是信息,技能存储的是行为。Hermes 技能是一套可复用的流程,智能体可以按名称调用它。
技能的形态
技能以结构化格式定义在 Markdown 文件中:
---
name: daily-summary
description: Compile a daily summary of recent conversations, tasks completed, and open items.
---
1. Read the last 24 hours of conversation context
2. Identify completed tasks and ongoing threads
3. Format as a structured summary
4. Send to the user
智能体读取这个文件后,可以在相关场景下自动调用该技能,也可以在你直接请求时执行它。
自动生成技能
Hermes 的一大独特之处在于:智能体可以自主生成技能。当 Hermes 发现自己在重复执行同一套多步骤流程时,它会主动提议将该流程固化为技能。下次遇到类似请求时,智能体就能直接复用这个技能,而无需再从头推理同样的步骤。
这就是"自我进化"的实际含义——智能体并非在重新训练模型,而是在根据你真实的使用习惯,逐步构建一个可复用流程的知识库。
自定义技能
你也可以手动编写技能并将其添加到技能目录。这对于需要智能体可靠处理的定期工作流非常有用,例如报告格式化、代码审查清单,或与外部 API 的集成。
Hermify 在控制台中提供了自定义技能编辑器,让你无需直接访问服务器文件系统即可创建和编辑技能。修改保存后,通过控制台触发重启即可生效。
哪些情况会破坏记忆与技能
这是大多数用户吃过亏才明白的部分。
不可忽视:记忆和技能都存储在文件系统上的文件中。 它们不会同步到云端数据库,而是存储在智能体数据目录下的文件里。如果运行环境被销毁、数据目录被删除,或者容器在未挂载持久化存储卷的情况下被替换,所有记忆和技能都将永久丢失。
不可忽视:大多数廉价托管方案会在重启时删除数据。 如果你在没有持久化存储卷的 Docker 容器中运行 Hermes,每次重启都会从零开始。你的 MEMORY.md 将被清空,技能也会消失,智能体将不再记得你花数周时间积累的上下文。
可以避免:进程重启但不删除数据是安全的。 如果进程重启但数据目录得以保留,记忆和技能就能安全延续。这是正常运行状态下的预期行为。
可以避免:更换凭据不会影响记忆。 更换 API 密钥或修改 Telegram token 不会影响记忆文件,数据目录与配置是完全独立的。
Hermify 如何处理记忆持久化
Hermify 在部署 Hermes Agent 运行时时,会在数据目录挂载一个持久化 Docker 存储卷。这意味着:
- 容器重启不会删除记忆或技能
- 套餐变更(例如从 Starter 升级到 Pro)会保留全部数据
- 你的智能体数周积累的记忆,在 Hermify 的日常运维操作中始终安全
这是一个经过深思熟虑的设计决策。自我进化型智能体的核心价值,就在于它会随时间不断成长。一套每次重启都清空记忆的托管方案,会从根本上抹杀这一价值。
Hermify 控制台还为你提供了自定义技能编辑器,让你可以通过界面查看、创建和编辑技能,无需通过 SSH 登录服务器或直接使用命令行。这是大多数 Hermify 用户在完成初始部署后管理技能层的常用方式。
实用使用模式
一旦理解了记忆系统的工作方式,一些最佳实践自然而然就会浮现:
在初始阶段主动植入记忆。 首次部署 Hermes 后,用一次完整的会话告诉它你希望它长期记住的事情:你的名字、你的角色、你使用的工具、你正在推进的项目。这样可以用有价值的基础信息快速启动记忆文件,而不必等待它被动地慢慢积累上下文。
为项目工作善用上下文文件。 在每个与 Hermes 协作的项目下创建一个 CONTEXT.md,描述项目概况、技术栈、关键决策和当前进展。当你在该目录下工作时,智能体会自动读取这份文件。
定期审阅记忆文件。 由于 MEMORY.md 是纯文本文件,你可以直接打开阅读。如果智能体写入了不准确或已过时的内容,直接编辑文件即可,修改会在下次会话时立即生效。把它想象成你与智能体共同维护的一份活文档。
为重复性工作流构建技能。 如果你发现自己反复让 Hermes 做同样的事情,那就很适合将其固化为技能。你可以让智能体自动生成(它发现规律时会主动建议),也可以手动编写以获得更精确的控制。
部署的深层含义
如果记忆和技能是 Hermes 的核心价值,那么部署问题本质上就是数据持久化的问题。智能体的价值,与其所积累的上下文和技能库的质量直接挂钩。
这正是托管方案的选择对 Hermes 的影响,远比对无状态 LLM API 调用更为深远的原因。你不仅仅是在运行一个进程,更是在维护一个持续增长的知识库——它就存活在文件系统上。任何不认真对待这份数据的部署方案,都会让 Hermes 与普通聊天界面无异,其独特价值将荡然无存。
如果你想了解 Hermify 在托管服务部署场景下的具体做法,部署 Hermes Agent 页面详细介绍了部署流程、数据持久化和运行时管理的协同工作方式。