编程 Hermes Agent 深度拆解:当 Nous Research 决定「干掉所有无状态 Agent」——110K Star 的自进化智能体如何用闭环学习重新定义 AI Agent 的终极形态

2026-08-04 07:42:23 +0800 CST views 32

Hermes Agent 深度拆解:当 Nous Research 决定「干掉所有无状态 Agent」——110K Star 的自进化智能体如何用闭环学习重新定义 AI Agent 的终极形态

深度拆解 Nous Research 出品的 110K Star 自进化 AI Agent 框架:闭环学习系统、技能自动生成与优化、SQLite FTS5 跨会话记忆、Honcho 用户建模、Atropos RL 强化学习训练环境、40+ 内置工具、6 种终端后端、10+ 消息平台,附完整代码示例与架构对比分析

一、引言:为什么你需要关注一个叫「爱马仕」的 Agent?

2026 年的 AI Agent 生态,已经卷到了令人窒息的程度。

OpenClaw 用 TypeScript 重写了整个 Agent Runtime,星标突破 28 万;Claude Code 从「代码助手」进化成了「自主编程代理」;Cursor 凭借 Tab 补全杀死了大量重复编码场景。但如果你仔细观察,会发现一个致命问题——

几乎所有 Agent 都是无状态的。

每次对话,它们从零开始。你跟它聊了三个月,它依然不认识你。你教它的技巧,下次它就忘了。你反复纠正的错误,它会在下一次对话里重复犯。

这不是 Agent,这是带工具的聊天机器人。

2026 年 2 月,Nous Research 发布了 Hermes Agent——一个定位极其明确的项目:「The self-improving AI agent」。不是最聪明的,不是最快的,而是一个能从每次交互中学习、自动创建技能、自主决定记住什么的智能体。

两个月后,GitHub Star 冲到 96,000+,截至 2026 年 8 月已突破 110,000,成为 GitHub 历史上增长最快的 AI Agent 项目之一。

这篇文章将从架构层面深度拆解 Hermes Agent 的设计哲学、核心实现和工程实践,让你理解一个「会自我进化的 Agent」到底是怎么工作的。

二、项目全貌:数据速览

在深入技术细节之前,先看一组关键数据:

属性详情
开发者Nous Research(MIT 许可证)
主语言Python 3.11+(909+ 文件)
辅助语言TypeScript/TSX(Web UI)
总文件数~1717
测试用例~3000 个
内置工具40+
内置技能288 个
可选技能116 个
消息平台~10 个
终端后端6 种
最新版本v0.19.1(2026-07-30)

一句话总结:这是一个「中等规模但设计精巧」的 Python Agent 项目。比 OpenClaw(14000+ 文件)更容易理解,但功能深度不遑多让。

三、架构设计:五大核心决策

3.1 整体架构全景图

┌────────────────────────────────────────────────────────┐
│                    Hermes Agent                         │
│                                                        │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐              │
│  │ CLI TUI  │ │ Telegram │ │ Discord  │ ...          │
│  └────┬─────┘ └────┬─────┘ └────┬─────┘              │
│  ─────┴──────────────┴──────────────┴─── Interface     │
│                    │                                    │
│  ┌─────────▼─────────┐                                │
│  │   AI Agent Core   │ ← run_agent.py                 │
│  │  (同步 Agent 循环) │                                │
│  └─────────┬─────────┘                                │
│            │                                          │
│  ┌─────────┬───────────┼───────────┬──────────┐       │
│  ▼         ▼           ▼           ▼          ▼       │
│  ┌─────┐ ┌──────┐ ┌──────────┐ ┌──────┐ ┌───────┐   │
│  │Tools│ │Memory│ │  Skills  │ │Model │ │  Cron │   │
│  │Reg. │ │Mgr   │ │  System  │ │Meta  │ │Sched. │   │
│  └──┬──┘ └──┬───┘ └────┬─────┘ └──┬───┘ └───┬───┘   │
│  ──┴────────┴──────────┴──────────┴─────────┴──       │
│                    │                                    │
│  ┌───────────────────────────────────────────────┐    │
│  │     Tool Implementations (40+)                 │    │
│  │  terminal | file | web | browser | code_exec   │    │
│  │  delegate | mcp | vision | tts | cron | ...    │    │
│  └───────────────────────────────────────────────┘    │
│                    │                                    │
│  ┌───────────────────────────────────────────────┐    │
│  │     Terminal Backends (6种)                     │    │
│  │  local | docker | ssh | daytona | modal | ...  │    │
│  └───────────────────────────────────────────────┘    │
└────────────────────────────────────────────────────────┘
                    │      │
            ┌───────▼──┐ ┌─▼──────┐
            │ SessionDB│ │ RL Env │
            │ (SQLite) │ │(Atropos)│
            └──────────┘ └────────┘

3.2 决策一:同步 Agent 循环

这是 Hermes Agent 最反直觉的设计选择。在 2026 年,几乎所有人都在用 async/await,Hermes Agent 却选择了完全同步的 while 循环:

# run_agent.py 核心循环
while api_call_count < self.max_iterations and self.iteration_budget.remaining > 0:
    response = client.chat.completions.create(
        model=model,
        messages=messages,
        tools=tool_schemas
    )
    if response.tool_calls:
        for tool_call in response.tool_calls:
            result = handle_function_call(tool_call.name, tool_call.args, task_id)
            messages.append(tool_result_message(result))
        api_call_count += 1
    else:
        return response.content

为什么?

调试友好。 同步代码的调用栈是线性的,出了问题你能清晰地看到是哪一步失败了。在 Agent 开发中,调试的频率远高于性能优化。一个需要你花 30 分钟才能复现的异步 Bug,可能在同步代码里 30 秒就能定位。

思维模型简单。 新贡献者看到这个 while 循环,立刻就能理解 Agent 的运行逻辑。相比之下,OpenClaw 的异步架构需要理解事件循环、Promise 链、WebSocket 协议等多个概念后才能上手。

性能影响有限。 Agent 的瓶颈在 LLM API 调用(通常 200ms-5s),不在 Python 的异步调度。同步循环在等待 LLM 响应时释放 GIL,实际性能差异可以忽略不计。

3.3 决策二:中心化工具注册

所有工具通过 tools/registry.py 统一注册和分发。添加一个新工具只需要两步:

# tools/your_tool.py
from tools.registry import registry

def your_handler(args, context):
    """处理你的工具调用"""
    result = do_something(args)
    return {"output": result}

# 注册工具
registry.register(
    name="your_tool",
    handler=your_handler,
    description="你的自定义工具描述",
    parameters={
        "type": "object",
        "properties": {
            "input": {"type": "string", "description": "输入参数"}
        },
        "required": ["input"]
    }
)

这种设计的好处是:工具之间完全解耦。每个工具文件只关心自己的逻辑,不需要知道其他工具的存在。测试一个工具只需要 mock registry,不需要启动整个 Agent。

3.4 决策三:OpenAI 消息格式统一

无论底层使用 OpenAI、Anthropic、Bedrock 还是 OpenRouter,Hermes Agent 内部统一使用 OpenAI 兼容的消息格式。这意味着切换 LLM Provider 只需要改一个配置项,不需要修改任何业务逻辑。在 Provider 价格战愈演愈烈的今天(DeepSeek V4 Flash 日处理 8 万亿 Token),这种灵活性极其重要。

3.5 决策四:Profile 多实例隔离

通过 HERMES_HOME 环境变量实现完全隔离的多实例支持。代码中 119+ 处引用 get_hermes_home() 确保路径隔离。每个实例拥有独立的会话数据库、技能存储、记忆文件和配置。

3.6 决策五:研究导向的模块设计

Hermes Agent 不仅仅是一个产品级 Agent,它还是一个研究平台。内置 Atropos RL 训练环境、轨迹记录与压缩、批量运行器、SWE-bench 迷你运行器——这些模块从设计之初就是核心组件。

四、核心特性一:闭环学习系统

这是 Hermes Agent 最独特、最「杀手级」的特性。

4.1 传统 Agent 的致命缺陷

大多数 Agent 的工作模式是:用户提问 → Agent 调用工具 → 返回结果 → 对话结束。下一次对话,一切从零开始。你上次教它的技巧、纠正过的错误、总结的经验,全部丢失。

这就像一个每天失忆的员工——即使他能力再强,也无法积累经验,无法变得更好。

4.2 Hermes Agent 的闭环学习

Hermes Agent 打破了这个循环:

执行任务 → 观察结果 → 提取经验 → 创建/改进技能 → 持久化知识
    ↑                                                          │
    └──────────── 下一轮任务使用改进后的技能 ←─────────────────┘

核心实现分为三个阶段:

阶段一:任务执行后的反思

# agent/learning_loop.py(简化示意)
def post_task_reflection(task_result, original_goal):
    """任务完成后的反思与学习"""
    
    # 1. 评估任务完成质量
    quality_score = evaluate_task_quality(task_result, original_goal)
    
    # 2. 提取可复用的经验
    if quality_score >= 0.7:
        # 成功经验:提取为新技能
        skill = extract_skill_from_success(task_result)
        skill_store.save(skill)
    elif quality_score < 0.3:
        # 失败经验:记录错误模式
        error_pattern = classify_error_pattern(task_result)
        error_store.save(error_pattern)
    
    # 3. 更新用户偏好模型
    user_model.update(original_goal, task_result, quality_score)

阶段二:技能自动生成

当 Agent 发现某个操作模式反复出现时,它会自动将其封装为可复用的技能。技能文件使用 Markdown 格式,人类可读可编辑:

---
name: deploy-to-staging
description: 自动部署代码到预发布环境
trigger: 当用户说「部署」「deploy」或提到 staging 环境时
tools: [terminal, file, git]
---

## 步骤
1. 检查当前分支状态:git status
2. 确保所有测试通过:pytest
3. 构建 Docker 镜像:docker build -t app:staging .
4. 推送到镜像仓库:docker push registry/app:staging
5. 更新 staging 环境:kubectl rollout restart deployment/app -n staging

阶段三:定期知识固化

Hermes Agent 内置了 Nudge 机制——定期触发的知识固化检查,包括:检查未持久化的临时记忆、合并相似技能、淘汰长期未使用的技能。

4.3 闭环学习的实战效果

在实际使用中,闭环学习的效果是累积性的:

  • 第 1 天:Agent 只有基础能力,每次操作都需要详细指导
  • 第 7 天:Agent 积累了 10-20 个自动生成的技能,常用操作开始自动化
  • 第 30 天:Agent 拥有 50+ 个性化技能,能够主动预测你的需求
  • 第 90 天:Agent 已经建立了完整的用户画像,操作风格与你高度匹配

这种「越用越聪明」的体验,是任何无状态 Agent 都无法提供的。

五、核心特性二:技能系统

5.1 三级技能体系

Hermes Agent 的技能分为三个层次:

  • 核心能力(40+ 工具):终端操作、文件读写、浏览器控制、代码执行等基础能力
  • 内置技能(288 个):Git 操作、Docker 管理、数据库查询、API 调试等常见开发任务
  • 可选技能(116 个):特定领域的工作流,如 Kubernetes 部署、CI/CD 配置、性能分析等

5.2 技能市场:Agent 版的插件商店

# 浏览可用技能
hermes skills search "docker"

# 安装技能
hermes skills install docker-optimization

# 从对话中自动提取技能
hermes skills create --from-conversation

最后一个命令特别有意思——--from-conversation 可以从当前对话中自动提取技能。你跟 Agent 聊天时,它会观察你的操作模式,然后自动生成一个可复用的技能文件。

六、核心特性三:跨会话记忆与用户建模

6.1 记忆架构

Hermes Agent 的记忆系统分为三层:

  • 技能记忆(永久):自动生成的技能文件
  • 持久记忆(长期):用户偏好、重要决策
  • 会话记忆(短期):当前对话上下文

底层存储基于 SQLite + FTS5 全文搜索,中文分词通过 native/fts5_cjk 模块实现。

6.2 Honcho 用户建模

Hermes Agent 集成了 Honcho 辩证用户建模系统。这不是简单的标签系统,而是一个能够动态演化的用户画像。它会分析你的专业水平、工作时间模式、操作偏好,然后据此调整 Agent 的行为。

比如:如果你在某个领域是专家,Agent 会自动简化解释;如果你在某个时段通常很忙,Agent 会切换到更简洁的响应风格。

6.3 记忆的自主策展

与大多数 Agent 的被动记忆不同,Hermes Agent 的 Agent 会自主决定什么值得记住。评估因素包括:用户是否明确要求记住、是否包含错误纠正(学习价值高)、是否使用了新工具或新方法、是否与用户长期目标相关、是否包含可复用的模式。

七、核心特性四:多终端后端与 Gateway 网关

7.1 六种终端后端

local(本地)、docker(容器隔离)、ssh(远程)、daytona(云端)、modal(Serverless GPU)、e2b(安全沙箱)——适配从开发到生产的全场景。

7.2 十消息平台 Gateway

Telegram、Discord、Slack、WhatsApp、Signal、QQ、微信企业号、Teams、Google Chat、Matrix——一个 Gateway 进程可以同时连接多个平台。

7.3 IDE 集成

通过 acp_adapter/ 模块实现与 VS Code、Zed、JetBrains、Vim 的深度集成,直接在编辑器内与 Hermes Agent 交互。

八、代码实战:从零搭建 Hermes Agent

8.1 快速安装

# 一行安装(支持 Linux/macOS/WSL2/Android Termux)
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

# 或者用 pip
pip install hermes-agent

# 或者用 Docker
docker compose up -d

8.2 配置多模型支持

models:
  primary:
    provider: openai
    model: gpt-4o
  fallback:
    provider: deepseek
    model: deepseek-chat
  local:
    provider: ollama
    model: llama3.1:70b

routing:
  strategy: cost-optimized
  fallback_chain: [primary, fallback, local]

8.3 自定义工具示例

# tools/custom_analyzer.py
from tools.registry import registry

def analyze_code_quality(args, context):
    """分析代码质量"""
    code = args.get("code", "")
    issues = []
    lines = code.split('\n')
    for i, line in enumerate(lines, 1):
        if len(line) > 120:
            issues.append(f"Line {i}: 行长度超过 120 字符")
    complexity = code.count('if ') + code.count('for ') + code.count('while ')
    return {
        "issues": issues,
        "complexity_score": complexity,
        "recommendation": "复杂度较高" if complexity > 10 else "质量良好"
    }

registry.register(
    name="analyze_code_quality",
    handler=analyze_code_quality,
    description="分析代码质量并给出改进建议",
    parameters={
        "type": "object",
        "properties": {
            "code": {"type": "string", "description": "要分析的代码"}
        },
        "required": ["code"]
    }
)

九、性能优化实践

9.1 Token 消耗优化

Hermes Agent 提供智能上下文压缩:保留系统消息(不可压缩)、保留最近 5 轮对话(保持上下文连贯性)、中间消息进行摘要压缩。这可以将 Token 消耗降低 40-60%。

9.2 并行工具执行

当 Agent 需要调用多个独立工具时,Hermes Agent 支持并行执行,显著提升多工具场景的响应速度。

9.3 缓存策略

工具结果缓存(默认 5 分钟 TTL),避免重复执行相同的工具调用。

十、与主流 Agent 框架对比

维度Hermes AgentOpenClawAutoGPTLangGraph
自进化能力✅ 闭环学习
跨会话记忆✅ SQLite FTS5✅ 文件系统
用户建模✅ Honcho
技能市场✅ Skills Hub✅ SkillHub
RL 训练环境✅ Atropos
终端后端6 种3 种1 种N/A
消息平台10+15+3+N/A
代码量~1700 文件~14000 文件~3000 文件~2000 文件
主语言PythonTypeScriptPythonPython
研究友好度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

关键差异

  • 自进化是 Hermes Agent 的核心护城河。其他 Agent 框架需要人工更新 Prompt 或配置,Hermes Agent 能从交互中自动学习。
  • 研究就绪是另一个独特优势。如果你在做 Agent 学术研究,Hermes Agent 是唯一一个内置 RL 训练环境和评估工具的开源框架。
  • 代码可读性方面,Hermes Agent 以 ~1700 文件的体量实现了与 OpenClaw(~14000 文件)相当的功能深度,代码密度和可维护性明显更优。

十一、最佳实践与避坑指南

11.1 生产环境部署建议

version: '3.8'
services:
  hermes:
    image: hermes-agent:latest
    restart: unless-stopped
    environment:
      - HERMES_HOME=/data
      - OPENAI_API_KEY=${OPENAI_API_KEY}
    volumes:
      - hermes-data:/data
    deploy:
      resources:
        limits:
          memory: 2G
          cpus: '2.0'

11.2 安全注意事项

生产环境务必配置:工具白名单、命令黑名单(禁止 rm -rf /、sudo 等危险命令)、敏感信息过滤(API Key、密码自动脱敏)、沙箱模式(限制文件系统访问范围)。

11.3 常见问题排查

Agent 不学习:检查 learning.enabled 配置是否启用,检查技能存储目录权限。

记忆搜索不准确:运行 hermes memory reindex 重建 FTS5 索引。

跨平台消息不同步:运行 hermes gateway status 检查连接状态,必要时重启 Gateway。

十二、总结与展望

Hermes Agent 的出现,标志着 AI Agent 从「工具」向「数字同事」的范式转变。

它不是一个最聪明的 Agent——在推理能力上,Claude Code 和 OpenCode 可能更胜一筹。它也不是一个最全面的 Agent——在多通道支持上,OpenClaw 覆盖了更多平台。

但它是唯一一个「会自我进化」的 Agent。

闭环学习系统让 Agent 能够从每次交互中积累经验,技能自动生成让重复工作逐步自动化,用户建模让 Agent 越来越懂你。这种「越用越好」的体验,是任何无状态 Agent 都无法提供的。

对于开发者来说,Hermes Agent 的价值在于:

  1. 如果你在构建 Agent 产品:它的闭环学习架构提供了「Agent 如何持续进化」的参考实现
  2. 如果你在做 Agent 研究:内置的 RL 训练环境和评估工具是目前最开箱即用的开源平台
  3. 如果你在寻找个人助手:110K Star 社区支持、MIT 许可证、Python 技术栈,让它成为最容易上手和定制的选择

展望未来,Hermes Agent 可能会在以下方向继续演进:多 Agent 协作(多个实例之间的技能共享和任务分工)、模型微调集成(基于收集的交互轨迹自动微调专用模型)、边缘部署优化(更轻量的运行时,支持在移动设备和 IoT 设备上运行)。

当 Agent 开始「思考」如何变得更好,AI 时代才真正到来。


项目地址:https://github.com/NousResearch/hermes-agent
许可证:MIT
技术栈:Python 3.11+ / TypeScript / SQLite / React / FastAPI
最新版本:v0.19.1(2026-07-30)

推荐文章

JavaScript设计模式:装饰器模式
2024-11-19 06:05:51 +0800 CST
Redis函数在PHP中的使用方法
2024-11-19 04:42:21 +0800 CST
PHP来做一个短网址(短链接)服务
2024-11-17 22:18:37 +0800 CST
程序员茄子在线接单