Hermes Agent 是 Nous Research 推出的开源 AI Agent 框架。它的定位不是再做一个只能聊天的大语言模型客户端,而是把 AI Agent 接到终端、消息平台、文件、网页和各种工具上,让它能真正执行任务。
AI Agent 指的是能够理解目标、调用工具、拆解步骤并执行任务的智能体。大多数 Agent 工具已经能做到“帮我跑命令”“帮我整理文件”“帮我调用浏览器”“帮我发消息”,但还有一个更麻烦的问题:一次任务结束以后,执行过程中学到的东西通常不会自动沉淀下来。
Hermes Agent 的重点正是这个问题。它想让 Agent 不只是完成一次任务,而是在使用过程中记住哪些路径有效、哪些错误修复过、哪些流程可以复用。官方给它的描述是 “the agent that grows with you”,也就是一个会和用户一起成长的 Agent。
Hermes Agent 解决的核心问题
OpenClaw 这类工具的优势是把 AI 从聊天框里拉出来,让它接入真实工作环境。比如连接 Telegram、飞书、Slack、Discord,执行终端命令,控制浏览器,处理文件,完成邮件和日程相关操作。
这类 Agent 的常见工作方式是:
flowchart LR
A[用户提出任务] --> B[Agent 读取配置和提示词]
B --> C[调用模型推理]
C --> D[调用工具执行]
D --> E[返回结果]
E --> F[会话结束]
问题出在最后一步。会话结束以后,Agent 很可能不会自动把“这次任务为什么成功”“中间踩了什么坑”“下次该走哪条路径”保存成可复用经验。
很多工具可以通过配置文件、提示词、Skill 或手动总结来增强能力,但这些信息通常需要用户主动维护。Hermes Agent 的设计目标是让这件事进入 Agent 的底层循环:任务结束后自动判断是否值得学习,值得就沉淀为 Skill 或记忆,下次遇到类似任务再调出来。
可以把 Hermes Agent 理解成一套长期运行的个人 Agent 基础设施,而不只是一次性任务执行器。
flowchart TD
U[用户 / 消息平台 / 命令行] --> G[网关层]
G --> E[同步执行引擎]
E --> M[记忆构建]
M --> P[系统提示与上下文]
P --> R[模型路由]
R --> L[主 LLM 推理]
L --> T[工具调用]
T --> E
E --> O[返回结果]
E --> C[任务复盘]
C --> S[Skill 生成或更新]
C --> A[会话归档 / 用户画像]
S --> M
A --> M
R --> X[辅助模型]
X --> M
X --> S
这张结构图里有几个关键模块:
| 模块 | 作用 |
|---|---|
| 网关层 | 接收来自命令行、Telegram、Discord、Slack、飞书等入口的消息 |
| 同步执行引擎 | 给任务分配 ID,组织上下文,调用模型和工具 |
| 记忆构建 | 从常驻记忆、历史会话、Skill、用户画像中提取当前任务需要的内容 |
| 模型路由 | 决定哪些任务交给主模型,哪些交给辅助模型 |
| 工具调用 | 执行终端命令、处理网页、分析文件、连接外部服务等 |
| 学习循环 | 在任务完成后复盘,把有效路径写成 Skill 或更新记忆 |
Learning Loop:把一次成功经验变成可复用 Skill
Hermes Agent 最有辨识度的设计是 Learning Loop,也就是学习循环。
它不会把所有对话都保存成流程,而是在每次任务完成后做一次判断:这次执行过程是否值得沉淀?如果满足条件,就在本地生成或更新一个 Skill 文件。
触发条件很具体:
| 触发条件 | 为什么值得学习 |
|---|---|
| 工具调用超过 5 次 | 说明任务流程较长,可能存在可复用步骤 |
| 中途出错并完成自我修复 | 修复路径本身就是经验,下次可以减少试错 |
| 用户纠正过 Agent | 用户反馈代表原策略不够好,需要更新行为 |
| 找到一条不明显但有效的路径 | 这种路径容易被遗忘,适合沉淀为操作流程 |
学习循环大致是这样的:
flowchart TD
A[任务完成] --> B{是否满足学习条件}
B -- 否 --> C[只保存普通会话记录]
B -- 是 --> D[提取目标、步骤、工具调用和修复经验]
D --> E{已有相关 Skill?}
E -- 否 --> F[创建新的 Skill 文件]
E -- 是 --> G[用 patch 更新旧 Skill]
F --> H[保存到 ~/.hermes/skills]
G --> H
H --> I[后续任务按需加载]
Skill 文件保存在:
~/.hermes/skills
一个 Skill 至少要表达几类信息:
---
name: fix-node-build-error
description: 修复 Node.js 项目中常见的构建失败问题
tools:
- shell
- file_edit
---
# 适用场景
当 Node.js 项目执行构建命令失败,并且错误与依赖版本、锁文件或构建缓存有关时使用。
# 操作步骤
1. 读取 package.json,确认脚本命令和依赖版本。
2. 查看 npm、pnpm 或 yarn 的锁文件。
3. 清理构建缓存。
4. 重新安装依赖。
5. 再次执行构建命令。
6. 如果仍失败,提取错误日志中的第一个根因,而不是盲目重复安装。
# 注意事项
- 不要在没有确认的情况下删除用户源码文件。
- 删除 lock 文件前需要征得用户确认。
这个例子只是用来说明 Skill 的信息结构:名称、描述、适用场景、步骤、工具和注意事项。Hermes Agent 生成的 Skill 遵循 agentskills.io 开放标准,理论上可以被其他兼容 Agent 使用,比如 OpenClaw、Claude Code、Cursor 等。
更关键的是,Hermes Agent 不把 Skill 当成一次性生成的静态文件。后续任务中如果发现旧流程有问题,或者有更短、更安全的路径,它会修改已有 Skill。
修改时优先使用 patch,而不是整体重写。
| 更新方式 | 特点 | 风险 |
|---|---|---|
| 整体重写 | 把整个 Skill 文件重新生成 | 容易破坏原来已经可用的部分,token 消耗更高 |
| patch 更新 | 只传入旧字符串和替换内容 | 改动范围小,更容易保留已有经验 |
这个选择很符合 Agent 的实际使用场景。自动生成内容最怕“为了修一个小问题,把原来正常的部分改坏”。patch 的粒度更小,错误面也更小。
四层记忆系统:不同信息放在不同位置
Agent 的记忆不能简单理解成“把所有内容都存起来”。如果什么都塞进上下文,模型很快就会被无关信息干扰;如果什么都不存,Agent 又无法长期学习用户习惯。
Hermes Agent 把记忆分成四层,每层负责一种信息。
| 层级 | 名称 | 存什么 | 什么时候用 |
|---|---|---|---|
| 第一层 | 常驻提示记忆 | 每次会话都必须知道的信息 | 会话开始时自动加载 |
| 第二层 | 会话归档 | 历史对话和任务记录 | 需要历史上下文时检索 |
| 第三层 | Skill 文件 | 可复用操作流程 | 遇到相似任务时按需加载 |
| 第四层 | Honcho 用户建模 | 长期偏好、沟通风格、领域知识 | 长期个人助理场景中使用 |
常驻提示记忆:只放每次都需要的信息
第一层由两个文件组成:
MEMORY.md
USER.md
它们会在每次会话开始时加载。Hermes Agent 给这一层设置了 3575 个字符的上限,这个限制很重要:常驻记忆必须克制,只保存每次都需要的内容。
适合放在这一层的信息包括:
| 适合放入 | 不适合放入 |
|---|---|
| 用户固定称呼 | 某次临时任务细节 |
| 常用工作目录 | 长篇项目背景 |
| 明确的安全偏好 | 大量聊天记录 |
| 长期不变的工具偏好 | 可通过检索找到的历史信息 |
常驻记忆越短,Agent 每次启动时受到的干扰越少。真正只在特定任务中有用的信息,应该放到后面的检索层。
会话归档:用 SQLite 和全文索引保存历史
第二层是会话归档。Hermes Agent 会把每次对话写入 SQLite 数据库,并通过全文索引支持检索。
当 Agent 需要历史上下文时,它不会把整个数据库都塞进提示词,而是:
sequenceDiagram
participant E as 执行引擎
participant DB as SQLite 会话归档
participant L as LLM 摘要
participant P as 当前提示词
E->>DB: 根据当前任务检索历史记录
DB-->>E: 返回相关片段
E->>L: 请求压缩和摘要
L-->>E: 返回与当前任务相关的上下文
E->>P: 注入精简后的历史信息
这套流程的重点是“检索后再摘要”。历史会话通常很长,直接注入会浪费上下文窗口,还会把无关内容带进来。先检索,再让 LLM(大语言模型)压缩,可以降低噪声。
Skill 文件:只加载描述,全文按需调入
第三层就是 Learning Loop 生成的 Skill 文件。
Hermes Agent 默认不会把所有 Skill 全文塞进系统提示里,而是只加载 Skill 的名称和简短描述。只有当前任务匹配到某个 Skill 时,才把完整内容调入上下文。
这个设计解决了一个很现实的问题:Skill 数量会增长。
如果有 40 个 Skill,每个全文都塞进上下文,成本还勉强能接受;如果增长到 200 个,全部加载就会拖慢速度、增加费用,还会干扰模型判断。只加载元信息,相当于先建立目录,真正用到时再翻开对应章节。
Honcho:长期用户画像
第四层叫 Honcho,是可选的用户建模层。它会在跨会话之间被动积累用户偏好、沟通风格和领域知识。
这一层适合长期个人助理场景,比如:
| 场景 | Honcho 能记住什么 |
|---|---|
| 日常助理 | 用户喜欢简短回复还是详细解释 |
| 内容工作流 | 常用写作风格、发布渠道、审核习惯 |
| 软件工程 | 常用技术栈、项目结构、代码风格 |
| 企业助理 | 团队术语、客户分类、内部知识库习惯 |
如果只是偶尔让 Agent 跑一次命令,Honcho 的价值不明显;如果把 Hermes Agent 当作长期助手,这一层会逐渐变得重要。
一条消息进入 Hermes Agent 后会发生什么
Hermes Agent 支持多种入口:命令行、Telegram、Discord、Slack、飞书等。无论消息来自哪里,最终都会进入同一套执行引擎。
完整链路可以拆成几步:
sequenceDiagram
participant U as 用户
participant G as 网关 / CLI
participant E as 执行引擎
participant M as 记忆层
participant R as 模型路由
participant L as 主模型
participant T as 工具系统
participant S as Skill / 归档
U->>G: 发送任务
G->>E: 转成统一消息格式
E->>E: 生成任务 ID
E->>M: 构建系统提示和上下文
M-->>E: 返回常驻记忆、检索摘要、Skill 元信息
E->>E: 复用缓存提示,检查上下文长度
E->>R: 选择主模型和辅助模型
R->>L: 发起推理
L->>T: 调用工具
T-->>L: 返回执行结果
L-->>E: 生成回复
E->>S: 写入会话归档,必要时更新 Skill
E-->>G: 返回结果
G-->>U: 展示回复
这里有两个细节很重要。
一个是系统提示缓存。构建上下文并不便宜,尤其当常驻记忆、Skill 元信息、历史摘要都要参与时,重复构建会浪费时间。Hermes Agent 会优先复用缓存版本。
另一个是上下文长度检查。发送给模型前,执行引擎会判断上下文是否接近上限,避免任务执行到一半才因为上下文过长失败。
Periodic Nudge:没有用户输入时也会复盘
Hermes Agent 不只在任务结束时学习。它还有一个 Periodic Nudge 机制,可以理解成周期性内部提醒。
在没有用户输入的情况下,系统会定期给 Agent 发一条内部提示,让它回顾最近操作,判断哪些内容值得写入记忆。
flowchart LR
A[一段时间没有用户输入] --> B[系统触发内部提示]
B --> C[Agent 回顾近期任务]
C --> D{是否有可沉淀信息}
D -- 否 --> E[不写入]
D -- 是 --> F[更新记忆或 Skill]
这让 Hermes Agent 更像一个持续运行的系统,而不是只在用户提问时才工作的聊天窗口。它会在后台整理经验,但这也带来新的管理问题:自动记忆必须可审计,否则敏感信息可能被错误保存。
Auxiliary Models:主模型负责主任务,轻量模型处理侧任务
Hermes Agent 还有一个 Auxiliary Models 模块,用来处理“高频、重要、但不一定值得调用主模型”的侧任务。
这些任务包括:
| 侧任务 | 为什么适合交给辅助模型 |
|---|---|
| 图像分析 | 不一定需要最强主模型,专用多模态模型更合适 |
| 网页提取 | 主要是结构化抽取,可以用便宜模型 |
| Skill 匹配 | 判断任务和哪个 Skill 相关,频率高但难度有限 |
| 记忆处理 | 摘要、分类、压缩可以用轻量模型完成 |
默认情况下,辅助任务会自动检测并优先使用 Gemini Flash。用户也可以根据自己的模型供应商做配置。
这种设计的价值在于成本控制。主模型通常更贵、更慢,适合处理复杂推理和最终决策;辅助模型更便宜,适合处理大量边角任务。
flowchart TD
A[用户任务] --> B{任务类型判断}
B -- 复杂规划 / 最终决策 --> C[主模型]
B -- 网页提取 --> D[辅助模型]
B -- 图像分析 --> E[辅助模型]
B -- Skill 匹配 --> F[辅助模型]
B -- 记忆摘要 --> G[辅助模型]
D --> H[结构化结果]
E --> H
F --> H
G --> H
H --> C
C --> I[工具调用与回复]
Hermes Agent 支持的推理服务商范围比较广:
| 服务商 / 接口 | 说明 |
|---|---|
| Nous Portal | 订阅制,配置成本低 |
| Anthropic | 可使用 Claude,支持 API key 或 Claude Code 授权 |
| OpenRouter | 聚合多家模型服务 |
| DeepSeek | 可接入 DeepSeek 模型 |
| Hugging Face | 可接入 Hugging Face 模型资源 |
| 阿里云 DashScope | 可使用 Qwen 系列模型 |
| GitHub Copilot | 可作为模型来源之一 |
| OpenAI 兼容接口 | 包括 Ollama 本地模型等 |
| Xiaomi MiMo | 已接入 Hermes Agent,可通过 Nous Portal 调用特定系列模型 |
模型选择会影响 Agent 的稳定性、成本和速度。如果任务涉及企业数据或本地代码,是否允许把上下文发给第三方模型服务商,需要提前定好边界。
Hermes Agent 和 OpenClaw 的差异
Hermes Agent 经常被拿来和 OpenClaw 对比,因为两者都在做“把 AI 接入真实工具和消息平台”的事情。但它们的侧重点并不一样。
| 维度 | OpenClaw | Hermes Agent |
|---|---|---|
| 核心定位 | 让 AI 接入真实工具和消息平台,快速执行任务 | 长期运行的自学习 Agent 框架 |
| 配置方式 | 依赖配置文件、提示词和手动组织的 Skill | 内置 Learning Loop,自动生成和更新 Skill |
| 记忆方式 | 更偏静态配置,需要用户主动维护 | 常驻记忆、会话归档、Skill、用户画像四层组合 |
| Agent 形态 | 可通过多 Agent 配合处理复杂任务 | 更强调单一 Agent 在长期使用中成长 |
| 上手难度 | 想快速搭一个消息控制的 AI 助理时更直接 | 更像基础设施,需要配置、运行和维护 |
| 适合场景 | 简单个人助理、消息平台控制、明确工作流 | 重复且会演化的任务、长期个人助理、复杂自动化 |
| 主要代价 | 自学习能力不在底层闭环里 | 系统复杂度更高,需要管理记忆、安全和模型成本 |
如果目标只是“在手机上给 AI 发消息,让它帮我跑几个命令”,OpenClaw 这类方案更轻。配置一个 SOUL.md,接上 Telegram 或其他网关,就可以完成很多任务。
如果目标是“让 Agent 在三个月后比第一天更懂我的工作流”,Hermes Agent 的学习循环和分层记忆更合适。它不是单纯减少配置,而是把长期积累能力做进系统结构里。
上手 Hermes Agent 需要准备什么
Hermes Agent 支持 Linux、macOS、WSL2 和 Android Termux。
Windows 需要通过 WSL2 运行。WSL2 是 Windows Subsystem for Linux,也就是 Windows 上的 Linux 兼容环境。Hermes Agent 不支持原生 Windows 环境,直接在 Windows 终端里安装通常不是推荐路径。
安装过程会处理多种依赖,包括:
| 依赖 | 用途 |
|---|---|
| Python 3.11 | 运行 Python 相关组件 |
| Node.js v22 | 支持 Node.js 生态工具 |
| ripgrep | 快速搜索文件内容 |
| ffmpeg | 处理音视频相关任务 |
| 虚拟环境 | 隔离运行依赖 |
| 全局命令 | 在终端中直接调用 Hermes Agent |
| LLM 配置 | 连接主模型和辅助模型 |
正式安装命令应以官网为准:
# 官网
https://hermes-agent.nousresearch.com
安装前可以先检查基础环境:
python3 --version
node --version
rg --version
ffmpeg -version
安装完成后,需要完成几件事:
flowchart TD
A[安装 Hermes Agent] --> B[选择模型服务商]
B --> C[配置主模型]
C --> D[配置辅助模型或使用默认策略]
D --> E[选择入口:CLI / Telegram / Discord / Slack / 飞书]
E --> F[执行真实任务]
F --> G[检查 ~/.hermes/skills]
G --> H[审查自动生成的 Skill 和记忆]
比较稳妥的使用方式是从低风险任务开始,例如整理文件、总结公开网页、生成脚本草稿、检索项目文档。等确认工具权限、记忆写入和模型路由都符合预期,再接入更关键的生产环境流程。
什么场景适合 Hermes Agent
Hermes Agent 更适合“重复、复杂、会变化”的任务,而不是一次性的问答。
| 场景 | 是否适合 | 原因 |
|---|---|---|
| 长期个人助理 | 适合 | 能积累沟通偏好和常用流程 |
| 软件工程自动化 | 适合 | 构建、测试、修复、代码检索都存在可复用经验 |
| 企业知识库助手 | 适合 | 会话归档和检索能帮助复用历史上下文 |
| 营销内容工作流 | 适合 | 选题、生成、审核、发布流程可以沉淀为 Skill |
| 客户关系管理 CRM 自动化 | 适合 | 可连接客户资料、知识库和消息渠道 |
| 偶尔问一个问题 | 不太适合 | 复杂架构带来的收益不明显 |
| 不希望任何内容被自动保存 | 不太适合 | Hermes 的核心价值正是记忆和学习 |
| 完全不想维护本地环境 | 不太适合 | 它更像一套需要运行和管理的基础设施 |
使用 Hermes Agent 时要注意的坑
自动记忆需要审计
Hermes Agent 会自动沉淀记忆和 Skill,这带来便利,也带来风险。API key、客户数据、内部地址、访问令牌、未公开代码路径都不应该被随意写入长期记忆。
建议定期检查:
ls ~/.hermes/skills
同时关注常驻记忆文件和会话归档,避免敏感信息长期留存。
Skill 不是生成出来就永远正确
自动生成的 Skill 可能只适合当时的项目结构、依赖版本或工具环境。环境变化后,旧 Skill 可能会误导 Agent。
对高风险流程,最好把自动生成的 Skill 当成草稿,人工检查后再让它长期使用。
工具权限要分级
Agent 一旦能操作终端、浏览器、文件系统和消息平台,就不能只按“聊天机器人”的安全标准看待它。
更安全的做法是:
| 权限 | 建议 |
|---|---|
| 读取文件 | 可以从低风险目录开始 |
| 修改文件 | 对关键目录加确认 |
| 删除文件 | 默认要求用户确认 |
| 执行命令 | 对破坏性命令加白名单或二次确认 |
| 访问外部平台 | 明确账号边界和授权范围 |
多模型编排会带来一致性问题
主模型和辅助模型分工可以降低成本,但不同模型对同一内容的理解可能不完全一致。对于强一致性要求高的任务,比如法律、财务、合规审查,不应完全依赖自动路由,需要固定模型和审计链路。
Windows 用户需要接受 WSL2 成本
Hermes Agent 不支持原生 Windows。使用 Windows 的开发者需要先配置 WSL2,再在 Linux 环境里安装和运行。这比普通桌面软件复杂,排错时也要同时考虑 Windows、WSL2 和 Linux 依赖。
Hermes Agent 的价值边界
Hermes Agent 的真正价值,不在于“又多了一个能聊天的 AI 工具”,而在于它把任务执行、经验沉淀、记忆检索和技能更新连成了闭环。
它适合长期运行,也适合那些会不断重复但又不断变化的工作流。每一次纠错、每一次绕路成功、每一次复杂工具调用,都可能成为下次任务的起点。
代价也很清楚:系统更复杂,安装和维护成本更高,自动记忆需要审计,工具权限需要安全边界,多模型路由也要考虑成本和一致性。
如果只需要一个轻量 AI 助手,简单 Agent 工具已经够用;如果需要一个能从日常任务中积累经验的开源 Agent 基础设施,Hermes Agent 的 Learning Loop、四层记忆和辅助模型编排,提供了一条很有代表性的路线。