一句话
两个月 90k Stars。 Nous Research 的 Hermes Agent,一个会记住你、会写技能、会自我进化的开源 Agent 框架。
解决什么问题
你用的每个 AI Agent 都有同一个问题:会话结束就忘了一切。
你的编码偏好、你纠正过三次的项目规范、昨天花了 10 分钟才找到的修复方案。全部消失。下次会话,从零开始。
Hermes 的做法完全不同:
- 跨会话记忆
- 自写可重用技能
- 后台修剪
- GEPA 离线进化引擎验证
开源生态里,没有其他 Agent 把这三件事合在一起。连 OpenClaw 也没有。
架构
一切流经 AIAgent 类(run_agent.py)。CLI、消息网关、批处理运行器、IDE 集成——都是同一个核心 Agent 的入口。
核心循环是 ReAct 风格、同步的:构建系统提示 → 检查是否需要压缩 → 发起可中断的 API 调用 → 执行工具调用 → 循环。
关键设计:
- 六处执行:本地终端、Docker、SSH、Modal、Daytona、Singularity——同一套代码,改个配置就行
- 模型无关:翻译层把任何 provider 路由到三种 API 格式之一,Claude/GPT/Gemini/Ollama 一键切换
- 90 轮硬上限:防止 stuck loop 静默烧光额度,子 Agent 共享同一预算
身份层:SOUL.md
在记忆和技能之上,还有一个更基础的层:身份。
记忆是 Agent 知道什么。技能是 Agent 怎么做。但两者都没告诉你:它出现时是谁。
没有身份层,每个 Agent 都是同一个 Agent 戴不同帽子。
Hermes 用单个文件解决:~/.hermes/SOUL.md,系统提示的 #1 位置,在任何其他内容之前加载。
# SOUL.md
You are a pragmatic senior engineer with strong taste.
You optimize for truth, clarity, and usefulness
over politeness theater.
手写、静态。你写一次,随时间调整,跨每个项目每个会话保持一致。
SOUL.md 是固定框架。记忆和技能是框架内的动态部分。
三层记忆系统
Tier 1:核心记忆(永远在上下文里)
| 文件 | 容量 | 内容 |
|---|---|---|
| MEMORY.md | 2,200 字符 | 环境、项目规范、工具 quirks、经验教训 |
| USER.md | 1,375 字符 | 用户名、沟通偏好、技能水平、要避免的事 |
- 会话开始时作为冻结快照注入系统提示
- 会话中写入新记忆会立即持久化到磁盘,但下次会话才出现在系统提示
- 记忆填满时(~80% 容量),Agent 自动合并相关条目,只有有用信息存活
Tier 2:对话历史(可搜索)
- 每次对话存入 SQLite,支持全文搜索
- Agent 可以搜索数周前的对话
- 容量无限,但需要主动搜索 + LLM 总结
Tier 3:外部记忆 Provider
- Mem0、Zep 等,与内置记忆并行运行(不替代)
- 一次只能激活一个
- 激活时自动:每次 turn 前预取相关记忆 → 每次响应后同步对话 → 会话结束时提取记忆
Tradeoff: Tier 1 永远在上下文里但很小。Tier 2 容量无限但需要搜索+总结。关键事实进记忆,其他按需搜索。
自进化技能
技能是带 YAML frontmatter 的 Markdown 文件——程序性记忆:不是知道什么,是怎么做。
---
name: k8s-pod-debug
description: >
Activate for crashing pods, CrashLoopBackOff,
"why is my pod restarting", container failures.
version: 1.2.0
author: agent
platforms: [linux, macos]
---
## Procedure
1. Get pod status → check events → pull logs
2. Look for OOMKilled, ImagePullBackOff, config errors
## Pitfalls
- Forgetting --previous flag on restarted containers
## Verification
- Pod stays Running with 0 restarts for 5+ minutes
渐进式披露控制 token 成本:
- Level 0:Agent 只看到名称+描述(完整目录约 3k tokens)
- Level 1:实际需要时才加载完整技能内容
GEPA:离线技能优化
进化引擎,离线验证技能。具体机制原文未展开,但定位是"让技能在后台自我进化"。
与 OpenClaw 的对比
"Hermes packages a gateway around a learning agent. OpenClaw packages an agent around a messaging gateway."
两者都是持久的、消息友好的,但架构选择相反:
| Hermes | OpenClaw | |
|---|---|---|
| 核心 | 学习 Agent | 消息网关 |
| 记忆 | 三层内置 + 外部 | 文件系统 + MEMORY.md |
| 技能 | 自进化 Markdown | 外部 SKILL.md |
| 身份 | SOUL.md | SOUL.md |
| 执行 | 6 种环境 | 本地 + SSH + 节点 |
| 最佳场景 | 深度个人助手 | 路由调度 + 多频道 |
不是竞争,是互补。 Sam 用 OpenClaw 做路由调度(Telegram/飞书/Discord → 文件系统 → 外部服务),Hermes 更适合做深度个人编码助手/研究助手。
实战:三个隔离 Agent
按指南走完,你会有三个完全隔离的 Agent 跑在机器上:
- Programmer —— 用你的 Claude Code
- Deep Researcher —— 深度研究
- Designer —— 设计工作
每个都有自己的个性、记忆、技能和 Telegram bot。几分钟搭好,全部可在自己的硬件上复现。
资源
- GitHub:https://github.com/nousresearch/hermes
- 作者:Akshay Pachaar
- 插图由 Hermes Agent "Pixel" 设计