Hermes Agent 深度实战:从「LLM 审判官」到自进化 Skills——不训练模型也能越用越强的 Agent 工程全解(2026)
两个月 21 万 GitHub Stars、4 万 Forks、4800+ Commits——Hermes Agent 凭什么成为 2026 年增长最快的开源 AI Agent?答案藏在一个反直觉的设计里:它不训练模型,却能越用越强。本文从源码层面拆解「自进化」的工程实现,带你理解 Prompt Engineering + 文件持久化如何构建真正的学习闭环。
一、背景:Agent 赛道为什么需要「进化」
1.1 传统 Agent 的「失忆症」
如果你用过 OpenClaw、AutoGPT 或其他主流 Agent 框架,大概率遇到过这些场景:
- 每次对话都是「新的一天」——上次解决的问题、积累的经验完全丢失
- 重复劳动无法自动化——同样的操作每次都要手动指导
- 个性化无从谈起——Agent 永远像一个刚入职的新员工
这不是技术能力不足,而是架构设计的根本缺陷:大多数 Agent 是无状态的。它们能执行任务,但不能「记住」执行过程中的经验,更不会将这些经验转化为可复用的能力。
从认知科学视角看,这相当于一个人只有「工作记忆」,没有「情景记忆」(存储经历)和「程序性记忆」(存储技能)。每一次任务都从零开始,永远无法成长。
1.2 Hermes Agent 的核心命题
2026 年 2 月,Nous Research 发布 Hermes Agent,明确提出一个目标:
「The Agent That Grows With You」——一个能与你共同成长的 Agent。
这不仅是营销口号,而是架构设计的第一性原理:
- 从「一次性工具」到「长期伙伴」——Agent 应该记住你的偏好、项目细节、习惯工作方式
- 从「被动执行」到「主动进化」——成功的问题解决流程应自动转化为可复用的技能
- 从「无状态服务」到「有记忆系统」——跨会话的知识连续性是核心能力,而非附加功能
1.3 本文目标与结构
本文将从工程师视角拆解 Hermes Agent 的自进化机制,回答三个核心问题:
- 它是如何实现「不训练模型却越用越强」的?——LLM 审判官、Skill Curator、三层记忆系统的工程实现
- 这套架构有什么设计权衡?——与 OpenClaw、AutoGPT 等竞品的对比分析
- 如何在实际项目中落地?——部署、调优、扩展的完整指南
二、核心机制一:LLM 审判官——从经验中提炼知识
2.1 「自进化」的本质是什么?
在深入源码之前,先澄清一个概念:Hermes Agent 的「自进化」不是修改模型权重。
它走的是另一条路:通过 Prompt Engineering + 文件持久化,构建一个「经验 → 知识 → 能力」的闭环。这更像人类的「复盘总结」过程:
- 完成任务后,回顾执行过程
- 识别哪些步骤是成功的、可复用的
- 将成功经验提炼为方法论(Skill)
- 下次遇到类似问题,直接应用方法论
关键洞察:不需要训练模型,只需要训练「怎么用模型」的策略。
2.2 LLM 审判官机制的源码解析
Hermes Agent 的自进化核心在 agent/skill_curator.py,这是一个约 1200 行的模块,负责从会话轨迹中提炼 Skill。
核心流程:
# 伪代码,展示核心逻辑
class SkillCurator:
def curate_from_session(self, session_id: str):
"""从会话中提炼 Skill"""
# 1. 加载会话轨迹
trajectory = self.load_trajectory(session_id)
# 2. LLM 分析:这个会话包含可复用的模式吗?
analysis = self.llm_judge.analyze(
prompt=f"""
你是一个「经验萃取专家」。分析以下任务执行轨迹:
任务:{trajectory.task}
执行步骤:{trajectory.steps}
结果:{trajectory.result}
判断:
1. 这个任务是否包含可复用的模式?
2. 如果有,提取为 Skill 的核心步骤是什么?
3. 这个 Skill 的适用场景是什么?
以 JSON 格式返回分析结果。
""",
response_format={"type": "json_object"}
)
# 3. 如果值得提炼,生成 Skill 文件
if analysis["worth_curating"]:
skill_markdown = self.generate_skill_markdown(analysis)
self.save_skill(skill_markdown)
return {"status": "created", "skill": analysis["skill_name"]}
return {"status": "skipped", "reason": analysis["reason"]}
关键设计点:
LLM 作为「审判官」:不是规则引擎,而是让 LLM 自己判断哪些经验值得沉淀。这比硬编码的规则更灵活。
结构化输出:要求 LLM 返回 JSON,确保后续处理的可编程性。
增量学习:每次会话都是一次「训练数据」,但不更新模型参数,只更新外部知识库。
2.3 Skill 的存储格式与生命周期
Hermes Agent 的 Skill 以 Markdown 文件形式存储在 ~/.hermes/skills/ 目录:
# skill:debug-python-performance
## 触发条件
当用户请求优化 Python 代码性能时自动激活。
## 核心步骤
1. **性能分析**
- 使用 `cProfile` 生成调用图
- 识别热点函数(执行时间占比 > 20%)
- 检查内存泄漏(`memory_profiler`)
2. **优化策略**
- 热点循环:考虑 NumPy 向量化或 Cython 加速
- I/O 密集:异步化 + 批处理
- 内存密集:生成器替代列表、对象池
3. **验证**
- 对比优化前后的基准测试结果
- 确保功能等价性
## 适用场景
- 数据处理脚本
- API 性能瓶颈排查
- ETL 流程优化
生命周期:
创建 → 验证 → 优化 → 废弃
↑ ↓ ↓ ↓
会话 应用 失败 删除
2.4 为什么不用 RAG 而用文件?
Hermes Agent 的选择是基于工程实践的权衡:
| 方案 | 优点 | 缺点 |
|---|---|---|
| Markdown 文件 | 人类可读、易于版本控制、低技术债务 | 检索依赖关键词,语义理解有限 |
| 向量数据库 | 语义检索能力强 | 增加技术栈复杂度、调试困难、知识不可见 |
Hermes Agent 的设计哲学:简单胜过复杂,可维护性胜过性能。
三、核心机制二:三层记忆系统——存储、检索与注入
3.1 为什么记忆是分层的?
人类的记忆不是单一的「存储」,而是分层的:
- 工作记忆:当前正在处理的信息(容量有限,易丢失)
- 情景记忆:经历的具体事件(如「上周三我做了什么」)
- 语义记忆:抽象的知识和概念(如「Python 是一门编程语言」)
- 程序性记忆:技能和习惯(如「如何骑自行车」)
Hermes Agent 模仿这种结构,设计了三层记忆系统:
┌─────────────────────────────────────────────┐
│ Layer 1: Built-in Memory │
│ MEMORY.md (Agent笔记) + USER.md (用户画像) │
│ 始终激活,每次会话注入系统提示 │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ Layer 2: External Memory Providers │
│ Honcho / Mem0 / OpenViking / ... (8个) │
│ 可插拔,同时只激活一个 │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ Layer 3: Session Search (FTS5) │
│ 所有历史会话 → SQLite + 全文索引 │
│ 按需检索,Gemini Flash 摘要 │
└─────────────────────────────────────────────┘
3.2 Layer 1:Built-in Memory
这是最简单但最关键的一层:两个 Markdown 文件。
MEMORY.md(Agent 的个人笔记):
# 我的笔记
## 项目信息
- 当前主项目:电商平台重构
- 技术栈:Go + PostgreSQL + Redis
- 部署环境:K8s on AWS
## 用户偏好
- 代码风格:简洁优先,避免过度抽象
- 文档习惯:喜欢带代码示例的技术文档
- 时区:UTC+8(上海)
USER.md(用户画像):
# 用户画像
## 基本信息
- 角色:后端工程师
- 经验:5年
- 团队规模:8人
## 工作习惯
- 偏好异步编程
- 喜欢用 TDD
- 对性能优化很敏感
设计亮点:
- 字符限制:MEMORY.md 上限 2200 字符,USER.md 上限 1375 字符
- 人类可编辑:用户可以手动修改这些文件
- 版本控制友好:Markdown 文件天然支持 Git
3.3 Layer 2:External Memory Providers
对于需要存储大量项目文档、代码片段、会议记录的场景,Hermes Agent 提供了 8 个可插拔的外部记忆后端:
| Provider | 特点 | 适用场景 |
|---|---|---|
| Honcho | Nous Research 自研,方言式用户建模 | 长期个性化需求 |
| Mem0 | 成熟的商业方案,多模态支持 | 企业级部署 |
| OpenViking | 火山引擎开源,上下文数据库 | 中文环境优化 |
| ByteRover | 分布式存储,多 Agent 共享 | 团队协作 |
关键技术约束:同时只能激活一个外部 Provider。
3.4 Layer 3:Session Search(FTS5 全文索引)
所有历史会话都被存入 SQLite,并使用 FTS5 建立索引。
为什么用 SQLite + FTS5 而不是向量数据库?
- 零依赖:SQLite 是 Python 标准库的一部分
- 可解释性:FTS5 的匹配过程是可解释的
- 性能足够:对于个人用户,十万级会话的全文搜索延迟在毫秒级
- 本地优先:所有数据都在本地,无需担心隐私泄露
四、核心机制三:Skill 自动生成与优化
4.1 Skill 的三种来源
Hermes Agent 的 Skill 有三个来源:
- 内置 Skill:官方预置,开箱即用(约 70+)
- 自动生成:LLM 审判官从会话中提炼
- 手动创建:用户编写 Markdown 文件放入
~/.hermes/skills/
4.2 Skill Curator 的完整流程
class SkillCurator:
def curate_after_task(self, session_id: str, task_result: TaskResult):
"""任务完成后自动提炼 Skill"""
# 阶段 1:判断是否值得提炼
if not self._should_curate(task_result):
return None
# 阶段 2:提取核心步骤
steps = self._extract_steps(session_id)
# 阶段 3:生成 Skill Markdown
skill_md = self._generate_skill_markdown(
task=task_result.task,
steps=steps,
context=task_result.context
)
# 阶段 4:保存并注册
skill_id = self._save_skill(skill_md)
self._register_skill(skill_id)
return skill_id
关键设计点:
- 多阶段过滤:先规则过滤,再 LLM 判断
- 任务复杂度阈值:简单任务不值得提炼
- 用户反馈循环:如果失败,LLM 会分析原因并优化 Skill
五、架构总览:六层解耦设计
┌─────────────────────────────────────────────────────────┐
│ Layer 0: Entry Points │
│ CLI (TUI) │ Gateway (消息平台) │ ACP (IDE插件) │ API │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Layer 1: Core Engine │
│ AIAgent (同步编排器) + Prompt Builder + Tool Registry │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Layer 2: Skill System │
│ Skill Registry + Skill Curator + Skill Improver │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Layer 3: Memory System │
│ Built-in (MD) + External Providers + Session Search │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Layer 4: Tool Backends │
│ Terminal (7) │ Browser (5) │ Web (4) │ MCP (动态) │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Layer 5: Execution Runtimes │
│ Local │ Docker │ SSH │ Singularity │ Modal (无服务器)│
└─────────────────────────────────────────────────────────┘
六、实战指南:从安装到生产部署
6.1 安装(3 分钟搞定)
macOS / Linux:
# 一键安装
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
# 刷新 Shell
source ~/.bashrc # 或 source ~/.zshrc
6.2 模型选择建议
| Provider | 推荐模型 | 特点 |
|---|---|---|
| Nous Portal | Claude 3.5 Sonnet, GPT-4o | 官方托管,内置工具调用优化 |
| OpenRouter | Claude 3.5, GPT-4o, Gemini 1.5 | 多模型切换,按需付费 |
| 本地模型 | Ollama + Qwen 2.5 | 隐私优先,离线可用 |
6.3 生产部署建议
方案 1:VPS 部署(推荐)
# 拉取 Hermes 镜像
docker pull nousresearch/hermes-agent:latest
# 运行
docker run -d \
--name hermes \
-v ~/.hermes:/root/.hermes \
-e HERMES_PROVIDER=nous \
-e HERMES_API_KEY=your_key \
-p 8080:8080 \
nousresearch/hermes-agent:latest
七、与竞品对比:OpenClaw、AutoGPT、CrewAI
7.1 架构对比表
| 维度 | Hermes Agent | OpenClaw | AutoGPT | CrewAI |
|---|---|---|---|---|
| 记忆持久化 | ✅ 三层架构 | ❌ 无状态 | ⚠️ 有限 | ⚠️ 需配置 |
| Skill 自动生成 | ✅ LLM 审判官 | ❌ 无 | ❌ 无 | ❌ 无 |
| 多平台支持 | ✅ 7+ 平台 | ⚠️ 有限 | ❌ 单一 | ⚠️ API only |
| 本地部署 | ✅ 简单 | ✅ 简单 | ✅ 简单 | ✅ 简单 |
| 商业托管 | ✅ Nous Portal | ❌ | ❌ | ❌ |
7.2 核心差异分析
Hermes Agent vs OpenClaw
- OpenClaw:全能但无状态。适合一次性任务、需要复杂工具链的场景
- Hermes Agent:能成长但技术栈更重。适合长期陪伴、个性化需求
八、局限性与未来方向
8.1 当前局限性
- 单实例设计:多用户共享需要部署多个实例
- 记忆检索的语义理解有限:FTS5 是关键词检索
- Skill 的质量控制:需要人工审核
8.2 未来方向(根据 Roadmap)
v0.20(2026 Q3):
- 原生向量数据库支持(Chroma、Qdrant)
- Skill 评分与推荐系统
- 多用户租户模式
九、总结:Agent 工程的新范式
9.1 核心结论
Hermes Agent 的成功证明了一个核心观点:
Agent 的价值不在于「能做什么」,而在于「能记住什么」和「能学会什么」。
这不是技术能力的提升,而是架构范式的转变:
- 从无状态到有状态:记忆是核心能力,而非附加功能
- 从一次性工具到长期伙伴:Agent 应该与你共同成长
- 从被动执行到主动进化:成功经验应自动转化为可复用的技能
9.2 一句话总结
Hermes Agent 用工程实践证明:不需要训练模型,也能构建真正「会学习」的 Agent——LLM 审判官 + 文件持久化 + 三层记忆,这就是自进化的工程解法。
本文发布于 2026 年 7 月,基于 Hermes Agent v0.19.0。技术发展迅速,部分内容可能已过时,请以官方文档为准。