Hermes Agent 内部拆解:自我进化的 AI 是如何工作的
1. 学习循环
大多数 Agent 能记住发生了什么。Hermes 更进一步:它提取出什么方法有效,写成可复用的技能,下次遇到类似问题时直接加载。
这个学习循环是架构的核心,包含四个环节,每个在循环的不同点触发。
Agent 策展式记忆(Periodic Nudges)
在会话的固定间隔,Agent 收到一个系统级提示,要求它回顾刚发生的事情,评估是否有值得持久化到记忆的内容。这个机制不是一次性扫描,而是渐进式的:Agent 只对高价值信息做写入操作,避免记忆变成所有交互的垃圾堆。结果:记忆始终保持策展状态。
自主技能创建
当 Agent 完成一个任务时,它检查是否值得记录执行路径。触发条件:
- 5 次以上工具调用
- 从错误中恢复
- 用户纠正
- 非确定性的执行路径
符合条件则在 ~/.hermes/skills/ 下创建技能文件——不是日志条目,而是可复用的指令集,包含名称、简短描述、步骤说明、工具调用和文件引用。遵循 agentskills.io 开放标准格式,技能在兼容 Agent 之间可移植,无需转换步骤。
会话搜索
每个会话写入 SQLite 归档,通过 FTS5 全文搜索索引。Agent 按需检索过去上下文,不把整个旧会话加载到窗口里。检索结果经过 LLM 摘要后才注入。
外部记忆(Honcho)
可选的第四层,使用 dialectic modeling 方法,跨 12 个身份维度建模你和 Agent 的关系。对于大多数任务型或自动化设置,前三层就足够了。
2. 技能创建的六种操作
通过 skill_manage 工具有六个动作:
| 操作 | 用途 |
|---|---|
| create | 创建新技能 |
| patch | 局部更新(默认首选) |
| edit | 全量重写 |
| delete | 删除技能 |
| write_file | 写入辅助文件 |
| remove_file | 删除辅助文件 |
Agent 默认使用 patch 做大多数更新——只传入旧字符串和替换内容,不重写整个文件。这是一个正确性和效率的双重决策:全量重写可能破坏已经正常工作的部分,patch 只改该改的地方,而且更省 token。
3. 四层记忆系统
把一切混入同一个记忆存储是大多数 Agent 记忆系统随时间变得不可靠的原因。Hermes 把它们分离成四个不同的层,每层有特定的工作和存储位置。
Layer 1:Prompt Memory(始终加载)
MEMORY.md + USER.md 在 ~/.hermes/memories/,每次会话启动时直接注入系统提示。总字符上限 3,575——特意设定得紧凑,强制策展而非堆积。
MEMORY.md 存储环境事实、项目约定、操作经验。USER.md 维护 Agent 对你的认知——技术水平、时区、沟通风格。
Agent 通过 memory 工具管理它们,三个操作:add、replace、remove。一个重要细节:修改仅在下次会话生效,不在对话中途改变 Agent 行为。
Layer 2:Session Search(按需检索)
SQLite FTS5 全文搜索。处理情节记忆(发生了什么、什么时候)。与技能层(程序性记忆——怎么做事情)刻意分离。
区分 Prompt Memory 和 Session Search 的边界: 如果某个信息足够重要,应该在每个未来对话中都存在,它属于 MEMORY.md 或 USER.md。如果只在特定话题出现时才需要,它属于 Session Search。
Layer 3:Skills(程序性记忆)
所有技能在 ~/.hermes/skills/ 作为独立 Markdown 文件。技能加载使用渐进式披露:只有名称和摘要默认加载到索引,完整指令只在 Agent 决定使用该技能时才读取。
这意味着 200 个技能和 40 个技能的上下文成本几乎一样。新安装时,仓库中的捆绑技能被复制到这个目录,Agent 创建的技能也在同一个位置。
Layer 4:Honcho(外部记忆)
可选的 dialectic modeling,12 个身份维度。不是等待显式写入,而是被动地构建你的画像。当把 Hermes 当作日常个人助理、需要跨会话的个性化响应时,这个额外开销是值得的。对于大多数任务型或自动化设置,其他三层已经足够。
4. 网关
学习循环和记忆系统只在 Agent 在你需要时能够被触达时才有用。网关是一个持久后台服务,让 Hermes 保持运行,连接到:
CLI、Telegram、Discord、Slack、WhatsApp、Signal、Email
每个平台有自己的适配器,但都流入共享的会话路由层。一个在 Telegram 上开始的对话可以在 Discord 上继续,上下文不丢失。
Telegram 更进一步支持 Project Conversations,同一个聊天内可以运行隔离的工作流,每个话题携带自己的技能绑定和会话上下文。
网关处理五件事:消息收发、会话路由、投递、配对、定时任务(Cron ticking)。以系统服务运行,hermes gateway 启动后即使关闭终端也在后台持续运行。
5. Agent 循环内部
每条消息经过相同的同步编排引擎(run_agent.py):
- Agent 生成任务 ID
- 加载缓存的系统提示或从记忆层构建新的
- 加载技能索引和上下文文件
- 调用 LLM
- 如果返回工具调用,执行工具、追加结果、循环回去
- 返回最终文本后,持久化到 SQLite
- 结果通过网关投递
系统提示优化
系统提示由稳定来源构建,前缀跨回合保持一致,多数 API 提供商会缓存它——降低后续回合的延迟和成本。三个东西进入提示前缀:Agent 的个人笔记、用户档案、技能索引。它们在会话中稳定,不会逐轮改变。
上下文压缩
当预检(pre-flight check)标记对话过长时,一个 sentinel 在达到硬限制之前触发。辅助模型扫描完整对话,提取值得保留的内容,写入新的简要记录。Lineage(引用链连接摘要回合回到原始对话)保存在 SQLite 中,即使经过压缩事件,Agent 仍然可以追溯到早期上下文。
多提供商故障切换
如果当前提供商宕机,Agent 不会卡住。在 config.yaml 中配置有序的推理提供商列表,Hermes 自动 fallthrough 到下一个。
6. 六个终端后端
| 后端 | 适用场景 |
|---|---|
| Local | 个人使用,隔离不是问题 |
| Docker | 希望 Agent 与宿主机隔离 |
| SSH | Agent 跑在远程机器上 |
| Kubernetes | 需要扩展和编排 |
| ECS(AWS) | 已有 AWS 基础设施的团队 |
| Nomad(HashiCorp) | 多数据中心部署 |
Docker 模式默认应用:只读根文件系统、丢弃 Linux 能力(capabilities)、命名空间隔离——这是架构性默认设置,不是可选项。零遥测同样是架构性设计:按设计数据不离开你的机器,不是隐私开关。
7. 40+ 内置工具和技能
工具分五大类:
- 执行:终端命令、代码运行
- Web:搜索、浏览器自动化
- 媒体:视觉分析、图片生成、语音
- 编程:调试、测试
- 生产力:笔记、文件操作
模型端通过 Nous Portal 单端点连接 400+ 模型,Hugging Face 是一级提供商(完整 HF Inference API 集成)。支持 MCP 和四个插件钩子:pre_llm_call、post_llm_call、on_session_start、on_session_end。
定时任务
Hermes 把定时任务作为一等 Agent 任务处理,不是 shell 脚本或调用 AI 的 cron 作业。当调度时间到达时,Agent 循环以完整的记忆和技能访问权限运行任务,然后通过网关将输出路由到指定位置。
8. Nebius 集成
Hermes-4–405B(128K 上下文窗口)可以通过 Nebius Token Factory 作为托管端点使用,无需管理 GPU 配置、负载均衡或冷启动。内置可观测性:监控请求量、延迟、跨会话的 token 用量。
配置简单:
export NEBIUS_API_KEY="your-key"
hermes model
# 选择 custom OpenAI-compatible endpoint
# 设置 base URL 和 model ID
9. 全局总结
这不是一个轻量级的即用即弃设置。它是你运行和维护的基础设施。但如果每天都在用、跨平台、处理重复且演进的任务——值得。
- OpenClaw:模块化和多 Agent 编排,适合需要多个专业化 Agent 协作的场景
- Hermes:随时间变得更智能,学习循环会复合增长
相关资源:
- Hermes Agent 四层记忆系统揭秘
- 95% 的人用错了 AI Agent:一份 Hermes 高阶功能指南
- Hermes vs OpenClaw:自主 AI Agent 赛道双雄
- Hermes Agent 文档:hermes-agent.nousresearch.com/docs
- GitHub:github.com/nousresearch/hermes-agent
- Nebius:nebius.com
- agentskills.io 开放标准