Hermes
Harness Engineering是什么
2026年初,AI编程圈出现了一个共识:瓶颈不是模型,是环境。LangChain团队做了一个实验,用同一个模型(GPT-5.2- Codex),只调整周围的「缰绳」配置,成绩从52.8%涨到66.5%,排名从Top 30跳到Top 5。模型一行没改。
Mitchell Hashimoto(Terraform的创造者)第一个给这件事命名:Harness Engineering。他的做法很朴素,每次AI犯 错,就加一条规则,让它永远不再犯同一个错。文件是活的,一直在长。
五组件映射
Harness Engineering讲的是方法论,是「你应该给AI造什么样的缰绳」。但方法论有一个问题:执行全靠人。你得自己写 CLAUDE.md,自己配hooks,自己搭记忆系统,自己设计工作流。
Hermes做的事情是:把这五个组件全部内建了。
| Harness五组件 | 手动实现方式 | Hermes内建系统 |
|---|---|---|
| 指令层 | 手写CLAUDE.md / AGENTS.md | Skill系统(markdown skill文件,自动创建+自改进) |
| 约束层 | 配置hooks / linter / CI | Tool permissions + sandbox + toolset按需启用 |
| 反馈层 | 人工审查 / 评估者Agent | 自改进学习循环(完成任务后自动复盘优化) |
| 记忆层 | 手动维护knowledge base | 三层记忆(会话/持久/Skill)+ Honcho用户建模 |
| 编排层 | 自己搭多Agent pipeline | 子Agent委派 + cron调度 |
看左列和右列的对比。左边全是手动操作,你得是一个有经验的工程师才能搭出来。右边是开箱即用,装完就有
这就是Hermes和OpenClaw的本质区别。OpenClaw给你一套配置即行为的系统,你写SOUL.md,它变成你想要的样子。它的记忆系统功能完善(Daily Logs + MEMORY.md + 语义搜索),Skill生态庞大,但主要靠人工编写和维护。Hermes把这五个维度全部内建了,而且让它们自动运转。
架构一张图
Hermes Agent的架构可以用一条线串起来:
- 学习循环是Hermes的心脏。每次完成一个任务,它会自动复盘:该记住什么、该提炼什么Skill、现有Skill需不需要优化。这个循环是持续运转的,不需要你手动触发。
- 三层记忆是Hermes的大脑。会话记忆记住「刚才发生了什么」,持久记忆记住「你是谁、你喜欢什么」,Skill记忆记住「怎么做事」。三层各司其职,用SQLite + FTS5索引存储,按需检索而不是全量加载。
- Skill系统是Hermes的技能库。每个Skill是一个独立的markdown文件,存在 ~/.hermes/skills/ 目录下。来源有三种:仓库自带的、Agent自己创建的、从社区Hub安装的。关键特性:Skill不是静态的,会在使用中自我改进。
- 40+内置工具是Hermes的手脚。分五大类:执行(跑代码、操作文件)、信息(搜索、抓取)、媒体(图片、视频)、记忆(读写存储)、协调(子Agent委派)。再加上MCP集成,可以连接6000+外部应用。
- 多平台Gateway是Hermes的入口。Telegram、Discord、Slack、WhatsApp、Signal、CLI,12+平台支持。你可以在Telegram上给它发消息,它在VPS后台处理,跨平台对话连续。
和OpenClaw的关键区别
| 维度 | Hermes Agent | OpenClaw |
|---|---|---|
| 核心理念 | 自改进学习循环 | 配置即行为(SOUL.md) |
| 记忆 | 三层自改进(会话/持久/Skill) | 多层记忆(Daily Logs/MEMORY.md/语义搜索),人工维护为主 |
| Skill维护 | Agent自动创建+自改进 | 人工编写和维护 |
| 用户建模 | Honcho辩证建模(多维身份推断) | 基于SOUL.md配置 |
| 多平台接入 | 12+平台Gateway | 50+消息平台(Telegram/Discord/WhatsApp/Slack/Signal等) |
| 生态规模 | 40+内置工具 + MCP | 6000+ ClawHub 44000+ 社区Skill |
| 部署方式 | 自托管($5 VPS起) | 官方托管/自托管 |
| Skill互通 | 均采用agentskills.io标准 |
差距最大的两个维度是学习能力和用户建模。OpenClaw的Skill主要靠人工编写和调整,它的进化依赖社区和用户的主动维护。Hermes用的越久,Skill越精准,记忆越深,做事越顺手
但OpenClaw也有Hermes比不了的地方:生态成熟度。ClawHub上44000+社区Skill,各种场景都有现成方案。Hermes的社区还在早期阶段。2600万用户的龙虾热给OpenClaw带来了巨大的网络效应,这不是技术能弥补的。
学习循环:Agent自己给自己造缰绳
五个环节,一个闭环
Hermes的学习循环有五个环节,单看都不复杂,但串起来形成了一个持续改进的飞轮。
记忆提供了Skill创建的素材,Skill在使用中积累反馈触发自改进,FTS5让历史经验被精准召回,用户建模把这些碎片拼成一幅完整的画。
环节一:策划记忆
每轮对话结束后,Hermes会主动决定哪些信息值得记住。是主动决定,不是被动存储。
传统的对话记忆很粗暴:把整个聊天历史塞进上下文。聊得越多,上下文越长,直到撑不下为止。
Hermes的做法更像人类写日记。每次对话结束,它会回头看一遍:这次聊了什么?有新发现吗?用户表达了什么偏好?然后把值得记住的内容写入SQLite数据库,建好FTS5全文索引。
系统还有一个周期性的nudge机制,定时提醒Agent回顾最近的交互。有点像手机上的日记App弹通知:今天有什么值得记录的?
环节二:自主创建Skill
当Hermes完成了一个相对复杂的任务,它会问自己一个问题:这个解决方案以后还会用到吗?
如果答案是yes,它就把解决方案提炼成一个Skill文件,存到 ~/.hermes/skills/ 目录下。这个Skill是一个markdown文件,包含了任务描述、执行步骤、注意事项。
环节三:Skill自改进
Skill创建出来不是终点。每次使用的过程中,如果你给了反馈,Hermes会拿这些反馈修改Skill本身。
比如你说「这个导入脚本应该先检查表是否存在」,Hermes不只是这次加上这个检查,它会回去修改那个Skill文件,把这条规则写进去。下次再用这个Skill,检查步骤就是默认包含的。
环节四:FTS5跨会话召回
记住了这么多东西,关键是能在对的时候找出来。
Hermes用SQLite的FTS5扩展做全文索引。每次新对话开始前,它会根据当前话题搜索历史记忆,把相关内容加载到上下文中。不是加载全部历史,是按需检索。
环节五:用户建模
最后一个环节是Honcho用户建模,这是可选的外部集成。它做的事情比记住你说过什么更进一步:它在推理你是什么样的人。
每次对话结束后,Honcho会分析这次交流,推导出你的偏好、习惯、目标。这些推导不只是记录你说了什么,而是从你的行为模式中归纳出更深层的特征。
比如你从来没有明确说过「我喜欢简洁的代码风格」,但Honcho通过分析你多次修改代码的模式,推断出这个结论。下次生成代码时,它会默认走简洁路线。
三层记忆
为什么记忆是最难的问题
你可能觉得AI的记忆不就是存聊天记录吗?存下来,下次加载进去就行了。
没那么简单。一个活跃用户每天跟AI聊几千字,一个月就是几万字。全塞进上下文窗口,要么装不下,要么模型因为信息太多反而变迟钝。而且聊天记录里大部分是废话和重复,真正有价值的信息可能只占10%。
好的记忆系统不是存得多,是找得准。
Hermes用三层架构解决这个问题,每一层处理不同类型的记忆
第一层:会话记忆
会话记忆回答的问题是:发生了什么?
每轮对话的内容、工具调用和返回结果,全部写入SQLite数据库,同时建FTS5全文搜索索引。这是情景记忆,类似人类大脑中的海马体。
关键设计决策是按需检索而不是全量加载。新对话开始时,Hermes不会把过去所有对话历史都塞进来。它根据当前话题,用FTS5搜索相关的历史片段,只加载需要的部分。
这个方案的好处:
| 方式 | 全量加载 | 按需检索(Hermes) |
|---|---|---|
| 上下文占用 | 随对话增长线性膨胀 | 基本恒定 |
| 检索精度 | 什么都在,什么都找不到 | 按关键词精准匹配 |
| 长期可用性 | 几天后就撑不下了 | 可以用几个月甚至几年 |
| 响应速度 | 越来越慢 | 基本不变 |
FTS5是SQLite的全文搜索扩展,不需要额外装数据库。所有数据存在本地SQLite文件里,没有网络依赖,没有隐私顾虑。你的对话记忆不会离开你的机器。
第二层:持久记忆
持久记忆回答的问题是:你是谁?
这一层存的不是对话内容,而是从对话中提炼出的持久状态。比如你的编码偏好、项目结构习惯、常用工具链、工作时间规律。这些跨会话保持,不会因为开了新对话就丢失。
技术实现上,持久记忆也存在SQLite里,由memory工具管理。整个方案纯文件级:没有外部服务器,没有云端同步,数据就在 ~/.hermes/ 目录下。
第三层:Skill记忆
Skill记忆回答的问题是:怎么做事?
前两层记住了发生过什么、你是什么样的人。第三层记住的是方法论和操作规范。每个Skill是 ~/.hermes/skills/ 下的
一个markdown文件,可读可编辑。
这三层对应了认知科学里的三种记忆类型:
Skill系统:会自我进化的能力
在Hermes里,每个Skill是一个独立的markdown文件,存在 ~/.hermes/skills/ 目录下。它记录的是Agent怎么做某件事的程序性记忆。
Skill有三种来源:
| 来源 | 说明 | 数量级 |
|---|---|---|
| Bundled Skills | 安装时自带的预置能力,覆盖MLOps、GitHub工作流、研究等常见场景 | 40+ |
| Agent自主创建 | 完成复杂任务后,Agent自动将解决方案提炼为Skill | 按使用积累 |
| Skills Hub | 社区贡献的技能包,可一键安装 | 持续增长 |
三种来源不是并列关系。Bundled Skills是起点,Skills Hub是加速器,Agent自主创建才是Hermes真正的杀手锏。
自改进:Skill会越用越好
这是Hermes和所有其他Agent Skill系统最大的区别。
传统的Skill需要人工维护。你写了一个代码审查Skill,它会按你写的步骤执行。实际使用中发现某个步骤效果不好?你得手动去改。OpenClaw的44000+社区Skill主要以这种方式运作。
Hermes的Skill是活的。它跑在学习循环里,根据实际反馈自动优化。
40+工具与MCP:连接一切
五大类工具速览
| 类别 | 核心工具 | 干什么用 |
|---|---|---|
| 执行类 | terminal、code_execution、file | 跑命令、执行代码(沙箱隔离)、读写文件 |
| 信息类 | web、browser、session_search | 搜索网页、浏览器自动化、检索历史对话 |
| 媒体类 | vision、image_gen、tts | 理解图片、生成图片、文字转语音 |
| 记忆类 | memory、skills、todo、cronjob | 操作记忆层、管理Skill、任务规划、定时调度 |
| 协调类 | delegation、moa、clarify | 委派子Agent、多模型推理、向用户请求澄清 |
Toolset:不是全开,是按需启用
Hermes用Toolset机制解决这个问题。工具按功能分组,在config.yaml里按需启用或禁用:
# config.yaml 示例
toolsets:
- web # 网页搜索
- terminal # 终端命令
- file # 文件操作
- skills # Skill管理
- delegation # 子Agent委派
# - homeassistant # 不需要就注释掉
# - rl # 强化学习相关,大多数人用不到
这不只是功能开关。启用的工具越少,Agent注意力越集中,响应越快,token消耗也越少。如果你只需要一个帮你整理文件的助手,开file和memory两个Toolset就够了。
子Agent委派:让三匹马同时跑
delegation是Hermes最强大的协调工具。它能生成子Agent实例,把任务分发出去并行执行。
独立上下文。每个子Agent有自己的对话上下文,互不干扰。主Agent分配任务时传入必要的背景信息,子Agent在独立空间里工作。
受限工具集。你可以指定每个子Agent能用哪些工具。负责调研的只需要web和browser,写代码的只需要terminal和file。既是效率优化,也是安全措施。
最多3个并发。这个限制是刻意的。3个并发子Agent已经覆盖大多数并行场景(同时调研、写代码、跑测试),再多就难以有效协调了。