Hermes:把学习写进文件,把知识变成技能

Hermes 把 Agent 的状态拆成三类并全部外置成文件:记忆存个人与任务上下文,技能存可复用的方法,wiki 存领域知识;问题不同,但都可被人检查、修改、版本管理。

引子

你有没有算过,自己每天要跟 AI 重复多少遍背景?

项目是做什么的、文档放在哪、上次那个报错最后怎么解的、写作时不喜欢哪种句式......每换一个会话,就要重新讲一遍。

有一种 AI 不这样。你用它的时间越长,它越懂你的习惯,越少犯重复的错误,甚至会把上次踩过的坑写成一份「操作手册」,下次直接照着做。

这不是因为它偷偷训练了一个新模型。

恰恰相反。它没有为了变强去训练一个新模型。

它做的事情,是把「学习」从模型权重里拿出来,写进了几个 Markdown 文件。

所以这里说的「越用越强」,是 Agent 系统层面的事。底座模型不会因为你的使用而变聪明,权重一点没动。变的是它周围那几份文件,记忆里多了你的偏好,技能库里多了几条避坑指南。模型还是那个模型,用它的方式变了。

这个 Agent 叫 Hermes。这篇聊它的技术设计,也聊它自带的一种用法,让 Agent 自己养一座知识库。


一、Hermes 如何把学习写进文件

1. 它是什么

Hermes Agent 是 Nous Research 开源的自我进化 agent,MIT 协议,Python 实现,口号是「The agent that grows with you」。

它不是聊天窗口的套壳,是一个完整的个人 Agent,能读写文件、执行命令、调用工具,还能维护自己的记忆和技能。终端是它最常用的入口,但不是唯一入口。

2. 四张牌

第一张,全功能终端。多行编辑、命令补全、对话历史、流式输出、随时打断,是个能干活的工作台。

第二张,闭环学习。它自己维护 MEMORY.md 和 USER.md,任务完成后可以自动创建技能,并在使用中继续改进;历史会话还能全文检索。

第三张,技能即文档。每个技能就是 ~/.hermes/skills/ 下的一份 SKILL.md,用自然语言写成,遵循开放的 agentskills.io 标准,按需加载。

第四张,多平台 + 模型自由。macOS、Windows、Linux/WSL2 都有官方安装方式,Docker、Nix、Android Termux 也在支持列表里;模型可以走 Nous Portal、OpenRouter,也支持 OpenAI 及兼容接口。

四张牌里,最重要的是第三张。技能在这里不是编译好的插件,主体就是一份份人能读、能手改的自然语言文件。

3. 核心动作是改「怎么用模型」

Hermes 的自我进化由三块拼起来,官方文档的说法很清楚。

第一,持久记忆。

MEMORY.md 存 Agent 自己的笔记,环境事实、约定、踩过的坑,官方给的上限约 2200 字符。USER.md 存用户画像,偏好、沟通风格、期望,上限约 1375 字符。

每次会话开始,这两份文件会渲染成系统提示里的一段冻结文本。会话中途写进去的内容,要到下一次会话才生效,这样一次会话里,AI 看到的世界是一致的。更早的对话不靠这两份文件,靠 session_search 做全文检索,用的时候才查。

除内置记忆外,它还能再激活一个外部记忆提供者一起用,比如 Honcho、Mem0、Hindsight、ByteRover。Hermes 不自己造记忆后端,只留一个可插拔的插件位。

第二,技能自动创造。

Agent 可以 create、patch、delete 自己的技能。每个技能的主体是 ~/.hermes/skills/ 下的一份 SKILL.md,自然语言写成,遵循 agentskills.io 标准,按需加载。它可以带参考文档或脚本,但入口是文本,不是编译好的插件。

举个例子。你让它处理一份格式很怪的 PDF,它试了三种解析方案才成功。下一次遇到同类文件,它不用再从零试错,那条经验已经写成了一份技能,直接调用就行。

第三,后台审查。

任务结束后,Hermes 可以起一个后台审查,在独立线程里回顾这段对话,判断有没有试错、方案是否可复用。值得就写回技能或记忆,不值得就回一句 Nothing to save.。这个审查可以换更便宜的模型跑,也可以直接关掉。

这套机制常被类比为「对提示做反向传播」。前向是「用户意图 → 模型 + 工具 → 结果」,反向是「回顾执行过程 → 检测失败点 → 更新技能文件」。

更新对象不是模型权重,而是如何使用模型的策略。这条自我进化路径不依赖模型训练。至于知识检索要不要向量数据库,是另一个问题,得看知识规模、查询方式和检索需求。

4. 一个容易被忽略的工程细节

大多数 CLI Agent 是一次性进程。投一段 prompt,流式吐结果,干完活自己退出。

Hermes 不只有终端这一个入口。官方架构里,CLI、Gateway、API Server、ACP、Python Library 都是入口。ACP 通过 stdio 上的 JSON-RPC 对接编辑器,Gateway 才是那个长驻进程,负责消息路由、会话和多平台接入。

所以更准确的说法是:Hermes 的 ACP 入口是一个长驻的 JSON-RPC server,不是整个 Hermes 只有这一种形态。 外部客户端接进去,进程起来后不退出,多轮对话靠 RPC 调用完成,输出通过 notification 推回来。这和一次性 CLI 是两套进程模型。

这个细节挺能说明它的取向。所谓「自进化」不是云端训练出来的,是本地的 Agent 进程在维护自己的文件。架构和哲学对得上。

5. 但别神化它

Hermes 的进化上限,不在写入频率,而在审查 Prompt 的判断力。

它会保存噪声,会漏判重要经验,也会写出质量参差的技能。技能库污染、过拟合、隐私泄露,都是结构性风险。

官方留了写入审批这类开关,可以在落盘前拦一道。但这些开关管的是「要不要写」,不管「写得对不对」。定期清理、平衡通用性、数据隔离,都是原则。真正能验证一条经验是否更好的门禁,还是没有。

自动,不等于准确。


二、Hermes + 知识库,当「知道什么」也变成文件

前面说的都是「怎么做」和「记得你」,也就是技能和记忆。但一个 Agent 要干活,还缺第三样东西,关于这个世界的知识。

你让它做行业分析、写技术方案、审一份合同,模型肚子里的通用知识不够用,你得让它读你的资料。

1. 大家的第一反应都是检索

提到「让 AI 用你的资料」,多半会想到 RAG。

复制代码
文档入库 → 切块 → 生成 Embedding → 写入向量库 → 提问时召回

它能用,但它解决的核心问题是检索已有资料 ,而不是把每次检索后的理解沉淀成一层可持续维护的知识结构。

这个区别容易忽略,因为工程上可以打不少补丁。加缓存、加摘要、加会话记忆,回答确实会变快。但这些优化的都是「这次答得快」,不是「知识本身多长出了一层」。

第 10 个问题不会比第 1 个问题更聪明,不是因为资料没被读到,而是因为每次都在重新召回、重新理解、重新综合。交叉引用不会积累,矛盾不会被标记,综合完也没留下什么产物。就像每次把书从头翻一遍,而不是读一本已经写好、还在持续修订的综述。

两种方式也不冲突。大规模资料召回可以交给检索,值得长期复用的整理结果放进 wiki,具体怎么配,看数据规模和查询需求。

2. Hermes 把知识库维护写成了一份技能

到这儿,第一部分那个设计的价值就出来了。

Hermes 的知识库能力不是独立模块,而是一份内置技能。

它叫 llm-wiki,官方文档里的版本是 2.1.0,随 Hermes 默认安装。打开看,主体是操作规程,夹着几段示例命令:目录怎么分、什么该建页、建页时怎么连、冲突了怎么办、多久检查一次。

这里要分清两样东西。SKILL.md 是操作规程,告诉 Agent 怎么整理、关联、更新知识;真正的知识是 raw/ 里的原始资料和 wiki 页面里的整理结果。技能不是知识库本身,是维护知识库的方法。

规矩写在文本里,出了分歧直接翻文件,不用猜实现。

反观一般 RAG 产品,切块大小、召回策略、去重规则常常写死在代码里,你看不见也改不了。在 Hermes 里,这套维护规则本身就是文本。

3. 三层结构

层 放什么 谁写 可变性
raw/ 文章、论文、网页、PDF 原文 外部输入 不可变,AI 只读
wiki 正文 摘要页、实体页、概念页、对比页 AI 写,人可改 持续更新
SCHEMA.md 领域边界、命名规范、标签体系、成页阈值 人定 AI 每次开工先读

raw/ 是证据柜,SCHEMA.md 是库的宪法,中间那层 wiki 是持续维护的成果。

这个分层解决了一个很实际的问题,证据和观点必须分开 。AI 写的摘要可以错,原始文档不能被动过。任何时候你对某个结论有疑问,都能顺着出处回到原文。具体做法是,综合 3 个以上来源的页面,每段末尾标 raw/ 文件名;单一来源的页面,frontmatter 里的 sources 就够了。

4. 四条写入纪律

一、成页阈值。 一个实体或概念要在 2 个以上来源出现,或在单一来源里处于核心地位,才建页。顺带一提的不建。这条是「生长的 wiki」和「一堆重复文件」的分水岭。没有阈值,AI 会把每个名词都建一页,三个月后你得到的是几千个一页纸的空壳。

二、双链义务。 新建页面至少要有 2 个出链,还要回查旧页面要不要链回来。单页本身不值钱,值钱的是连接。一次入库牵动 5 到 15 个页面是常态。这才是「生长」的意思,不是往上堆,是往里连。

三、原文哈希。 每个 raw 文件头记一个 sha256。同一个 URL 再次摄入,哈希没变就跳过,变了就报警。这条防的是网页被悄悄改写、知识库还停在旧版本。用 RAG 的时候,你基本不会注意到这种事。

四、矛盾登记。 新资料和老结论冲突时,先比日期;确认是矛盾,就双记录、注日期和来源、互相标记,等人工裁决。知识库不替人裁决,只保证两种说法都带证据地活着。 这比强行合并成一句「综合来看」要诚实得多。

5. 一次摄入会发生什么

1.原文进 raw/,记来源、日期、哈希,此后只读

2.提炼要点,看看这篇里什么值得记

3.查重,看这个实体或概念是不是已经有页面

4.写或改,达到阈值的新建,已有的增补,补双链,标置信度,冲突双记录

5.更新导航,index、页数、日期、变更日志

6.汇报变更,这次新建了什么、改了什么、哪些还有争议

动手前还有一道「定向三读」。先读 SCHEMA.md,再读索引,再扫最近 20--30 条变更日志。库超过 100 页时,新建任何东西前先全局搜一次。

这不是流程洁癖。AI 最容易犯四类错,重建已有页面、漏掉反向链接、违反库规范、重复已经做过的工作。三读防的就是这些。

一次摄入看起来慢。但它把「理解」这个动作做了一次并保存下来,而不是每次提问时重做一遍。

6. lint 是防腐层

知识库不会因为写得少而烂,只会因为没人管而烂。

所以 llm-wiki 里还有一套巡检机制,检查断链、孤儿页、raw 漂移、争议页、更新时间比提及同一实体的最新来源早 90 天以上的过期页、低置信度页、索引完整性、frontmatter 格式、超长页面、标签滥用、日志轮转。每条问题都给出文件路径和建议动作,不会笼统地说一句「库有问题」。

这套设计说明作者很清楚,自动生长的另一面就是自动腐烂。生长和防腐得长在同一个系统里。

7. 分水岭在分工,不在格式

很多人会把这件事理解成「Markdown 比向量数据库好」。不是。

Hermes 做对的是分工。

状态 存什么 回答的问题
MEMORY.md / USER.md 个人偏好、项目背景、任务上下文 你是谁、我们在做什么
SKILL.md 可复用的操作方法 这类事该怎么做
wiki 领域知识与它的证据链 这个世界是什么样的

三者解决的问题完全不同,谁也替代不了谁。记忆不是操作手册,技能不是知识库,知识库也不该塞满个人偏好。很多自进化系统最后变成一锅粥,就是因为把这三样混在同一个存储里。用检索去查「用户不喜欢什么」,用记忆去存「这个 API 该怎么调」,再拿一句「综合来看」糊过去。

它们还有一个共同点,都能被人检查、修改、版本管理。

  • 想知道它学了什么?打开 SKILL.md
  • 想知道它记错了什么?看 MEMORY.md
  • 想知道它对某个领域理解到什么程度?看 wiki 页面的置信度和来源
  • 想改?直接改,下一个会话生效

Hermes 和「把一切塞进向量库和系统提示」的分歧也在这儿。与其说是文件格式之争,不如说是Agent 的状态该不该能被外部审计。Markdown 只是这个选择的结果,自然语言、可读、可 diff、可回滚,眼下是最便宜的载体。

8. 边界

1.要花模型钱。 摄入、查询、巡检都消耗 Token。所谓「一次编译、永久复用」,省的是重复理解的时间,不是推理成本。

2.质量上限取决于 SCHEMA.md。 前期规矩定得敷衍,后期回修非常痛。

3.不是多人协同系统。 没有权限、审批、冲突合并界面。团队共享要靠 Git。

4.纪律靠巡检维持。 不跑检查、不守规矩,三个月后一样是垃圾场。

5.规模会改变维护方式。 库过 100 页,新建东西前要先全局搜一次;索引的某个分类超过 50 条,就拆子分类;总条目超过 200 条,再加一张主题地图。这些不是硬性容量上限,是让库长大以后还能导航的维护动作。

边界看清了,适合谁也就清楚了,愿意长期积累、自己当主编、把资料放在本地的人。


写在最后

我们习惯把 AI 的进步理解成「模型更强了」。

但 Hermes 给了另一个视角。对个人用户来说,拉开差距的往往不是模型多聪明,而是经验有没有留下来、知识有没有被组织好。

而且这三件事可以分开。记忆保存你和任务的上下文,技能保存可复用的方法,wiki 保存领域知识。 问题不同,答案不同,但都摊开在同一个文件系统里,能查、能改、能版本管理。

模型会换代,文件不会。

如果你想直接试试 Hermes 自带的这套知识库模式,Molio已经接入了 Hermes 运行时,可以在应用里直接选它。


相关推荐
天天代码码天天1 小时前
让视频里的声音“有个位置”:我用 C# 做了个离线热图工具
人工智能
smartpi_ai1 小时前
高端智能沙发如何接入大模型语音:JL-17T 离在线语音模块方案实录
人工智能·单片机·语音识别
虎鲸不是鱼1 小时前
AI 自动化逆向(三十五)假设空间枚举的完备性是假设出来的
人工智能·自动化·大模型·逆向·ai逆向
段一凡-华北理工大学1 小时前
高炉能源系统智能化:热风炉、煤气与极致能效~系列文章09:TRT 余压发电:把炉顶压力转变成电
人工智能·能源·工业智能化·高炉能源优化·高炉余压发电
归秋042 小时前
图文生成视频工具怎么选:从素材生成到成片发布全链路选型指南
人工智能
云-缩影2 小时前
我用阿里云 AI 动画方案跑通了剧本→视频流水线:ComfyUI + 百炼模型实测
人工智能·阿里云·云计算
hkNaruto2 小时前
【AI】深度学习、强化学习、深度强化学习基础概念笔记
人工智能·笔记·深度学习
Leo.yuan2 小时前
集团司库系统之外还需要什么?2026年资金分析与司库决策平台建设指南
大数据·人工智能·区块链