编程 Hermes Agent 深度实战:从「LLM 审判官」到自进化 Skills——不训练模型也能越用越强的 Agent 工程全解(2026)

2026-07-22 07:45:42 +0800 CST views 10

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。

这不仅是营销口号,而是架构设计的第一性原理:

  1. 从「一次性工具」到「长期伙伴」——Agent 应该记住你的偏好、项目细节、习惯工作方式
  2. 从「被动执行」到「主动进化」——成功的问题解决流程应自动转化为可复用的技能
  3. 从「无状态服务」到「有记忆系统」——跨会话的知识连续性是核心能力,而非附加功能

1.3 本文目标与结构

本文将从工程师视角拆解 Hermes Agent 的自进化机制,回答三个核心问题:

  1. 它是如何实现「不训练模型却越用越强」的?——LLM 审判官、Skill Curator、三层记忆系统的工程实现
  2. 这套架构有什么设计权衡?——与 OpenClaw、AutoGPT 等竞品的对比分析
  3. 如何在实际项目中落地?——部署、调优、扩展的完整指南

二、核心机制一:LLM 审判官——从经验中提炼知识

2.1 「自进化」的本质是什么?

在深入源码之前,先澄清一个概念:Hermes Agent 的「自进化」不是修改模型权重

它走的是另一条路:通过 Prompt Engineering + 文件持久化,构建一个「经验 → 知识 → 能力」的闭环。这更像人类的「复盘总结」过程:

  1. 完成任务后,回顾执行过程
  2. 识别哪些步骤是成功的、可复用的
  3. 将成功经验提炼为方法论(Skill)
  4. 下次遇到类似问题,直接应用方法论

关键洞察:不需要训练模型,只需要训练「怎么用模型」的策略

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"]}

关键设计点

  1. LLM 作为「审判官」:不是规则引擎,而是让 LLM 自己判断哪些经验值得沉淀。这比硬编码的规则更灵活。

  2. 结构化输出:要求 LLM 返回 JSON,确保后续处理的可编程性。

  3. 增量学习:每次会话都是一次「训练数据」,但不更新模型参数,只更新外部知识库。

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
- 对性能优化很敏感

设计亮点

  1. 字符限制:MEMORY.md 上限 2200 字符,USER.md 上限 1375 字符
  2. 人类可编辑:用户可以手动修改这些文件
  3. 版本控制友好:Markdown 文件天然支持 Git

3.3 Layer 2:External Memory Providers

对于需要存储大量项目文档、代码片段、会议记录的场景,Hermes Agent 提供了 8 个可插拔的外部记忆后端:

Provider特点适用场景
HonchoNous Research 自研,方言式用户建模长期个性化需求
Mem0成熟的商业方案,多模态支持企业级部署
OpenViking火山引擎开源,上下文数据库中文环境优化
ByteRover分布式存储,多 Agent 共享团队协作

关键技术约束:同时只能激活一个外部 Provider。

3.4 Layer 3:Session Search(FTS5 全文索引)

所有历史会话都被存入 SQLite,并使用 FTS5 建立索引。

为什么用 SQLite + FTS5 而不是向量数据库?

  1. 零依赖:SQLite 是 Python 标准库的一部分
  2. 可解释性:FTS5 的匹配过程是可解释的
  3. 性能足够:对于个人用户,十万级会话的全文搜索延迟在毫秒级
  4. 本地优先:所有数据都在本地,无需担心隐私泄露

四、核心机制三:Skill 自动生成与优化

4.1 Skill 的三种来源

Hermes Agent 的 Skill 有三个来源:

  1. 内置 Skill:官方预置,开箱即用(约 70+)
  2. 自动生成:LLM 审判官从会话中提炼
  3. 手动创建:用户编写 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

关键设计点

  1. 多阶段过滤:先规则过滤,再 LLM 判断
  2. 任务复杂度阈值:简单任务不值得提炼
  3. 用户反馈循环:如果失败,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 PortalClaude 3.5 Sonnet, GPT-4o官方托管,内置工具调用优化
OpenRouterClaude 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 AgentOpenClawAutoGPTCrewAI
记忆持久化✅ 三层架构❌ 无状态⚠️ 有限⚠️ 需配置
Skill 自动生成✅ LLM 审判官❌ 无❌ 无❌ 无
多平台支持✅ 7+ 平台⚠️ 有限❌ 单一⚠️ API only
本地部署✅ 简单✅ 简单✅ 简单✅ 简单
商业托管✅ Nous Portal

7.2 核心差异分析

Hermes Agent vs OpenClaw

  • OpenClaw:全能但无状态。适合一次性任务、需要复杂工具链的场景
  • Hermes Agent:能成长但技术栈更重。适合长期陪伴、个性化需求

八、局限性与未来方向

8.1 当前局限性

  1. 单实例设计:多用户共享需要部署多个实例
  2. 记忆检索的语义理解有限:FTS5 是关键词检索
  3. 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。技术发展迅速,部分内容可能已过时,请以官方文档为准。

推荐文章

地图标注管理系统
2024-11-19 09:14:52 +0800 CST
js一键生成随机颜色:randomColor
2024-11-18 10:13:44 +0800 CST
五个有趣且实用的Python实例
2024-11-19 07:32:35 +0800 CST
Go 单元测试
2024-11-18 19:21:56 +0800 CST
程序员茄子在线接单