人工智能AI Agent开源Hermes

Hermes Agent:能从任务中自己"长出"技能的开源本地 Agent

继 OpenClaw 之后再拆解一款 NousResearch 出品的开源本地 Agent 框架,重点剖析它的自学习技能系统和三级记忆架构。

2026年9月10日 · 约 10 分钟阅读

如果说 OpenClaw 解决的是「让 AI 接上你所有的聊天渠道」的问题,那么 Hermes Agent 走向了另一个方向——让 AI 自己从历史任务里学会新技能

这是 NousResearch 在 2026 年 2 月开源的 Python 框架,发布后短短几个月 GitHub 星标突破 14 万。它最让人印象深刻的设计,是自学习技能系统(self-improving skill system):你每完成一个任务,Hermes 都会尝试从中提炼出可复用的技能,下次直接调用。


一、项目定位

项目内容
名称Hermes Agent
出品方NousResearch(Hermes 模型家族的开源厂商)
语言Python
许可证MIT
GitHubNousResearch/hermes-agent
文档hermes-agent.readthedocs.io
星标14 万+(2026 年 9 月)
最低运行要求$5 VPS 或普通消费级硬件

定位上,Hermes 不追求「能接多少聊天软件」,而是追求模型无关、本地优先、能力可积累。它支持 200+ LLM 后端,包括 llama.cpp、vLLM、Transformers 以及任何 Hugging Face 兼容模型。


二、最具差异化的设计:自学习技能系统

这是 Hermes 区别于几乎所有其他 Agent 框架的关键能力。

传统 Agent 的工作流

flowchart LR
    U["用户任务"] --> A["Agent"]
    A --> L["LLM 推理"]
    L --> T["调用工具"]
    T --> R["返回结果"]
    R --> U

    classDef node fill:#1e293b,stroke:#00D4FF,color:#e2e8f0
    class U,A,L,T,R node

每次都是「重新推理 → 调用工具 → 返回」,任务结束一切清零。哪怕你让它做了十次类似的报表分析,第十一次它还是从零开始。

Hermes 的工作流

flowchart LR
    U["用户任务"] --> A["Agent"]
    A --> L["LLM 推理"]
    L --> T["调用工具"]
    T --> R["返回结果"]
    R --> S{"能提炼为技能?"}
    S -->|"是"| SK["写入技能库<br/>(skills/*.md)"]
    S -->|"否"| U
    SK --> N["下次直接调用"]
    N -.-> U

    classDef node fill:#1e293b,stroke:#00D4FF,color:#e2e8f0
    classDef learn fill:#064e3b,stroke:#10b981,color:#e2e8f0
    class U,A,L,T,R,N node
    class S,SK learn

核心循环:每完成一个任务,Hermes 会自动分析:

  • 这个任务有哪些可复用的步骤?
  • 有没有可以抽象成「技能」的子流程?
  • 如果有,就把它写成 Markdown 技能卡片存进 skills/ 目录。

下次遇到类似任务,技能会被直接检索出来拼进 prompt,而不是让 LLM 重新摸索。

技能卡片的格式

技能本质上是结构化的 Markdown:

---
name: convert-csv-to-summary
triggers:
  - "汇总 CSV"
  - "分析表格数据"
description: 读取 CSV 文件,输出关键统计摘要
---

# 步骤
1. 用 pandas 读取文件
2. 计算每列的均值、中位数、缺失值数量
3. 用自然语言生成摘要

# 代码模板
```python
import pandas as pd
df = pd.read_csv(path)
summary = df.describe(include="all")

注意事项

  • 大于 100MB 的文件需要分块读取
  • 含中文时指定 encoding=‘utf-8-sig’

人类可读、可手写、可用 git 版本管理。这种"刻意保持简单"的取向,和 OpenClaw 的 JSONL 记忆是同一种工程哲学。

---

## 三、三级记忆架构

Hermes 把记忆分成三个层级,分别解决不同时间尺度的问题:

```mermaid
flowchart TD
    W["⚡ 工作记忆<br/>(Working)<br/>当前任务的上下文"]
    E["📜 情景记忆<br/>(Episodic)<br/>SQLite + FTS5<br/>过去做过的任务"]
    S["🎯 技能记忆<br/>(Skills)<br/>Markdown 文件<br/>提炼出的可复用能力"]

    W -->|"任务完成"| E
    E -->|"模式识别"| S
    S -->|"技能检索"| W

    classDef working fill:#1e293b,stroke:#00D4FF,color:#e2e8f0
    classDef episodic fill:#1e293b,stroke:#8B5CF6,color:#e2e8f0
    classDef skill fill:#064e3b,stroke:#10b981,color:#e2e8f0
    class W working
    class E episodic
    class S skill
层级存储时长检索方式
工作记忆内存中的对话历史当前会话直接拼接
情景记忆SQLite + FTS5 全文检索跨会话关键词 + 时间衰减
技能记忆Markdown 文件永久语义匹配 + trigger 触发词

这里有一个很容易被忽视的设计点:技能记忆是单向流入。情景记忆(你做过的事)通过模式识别提炼为技能记忆(你会做的事),但技能记忆不会被自动反向修改。这种单向性避免了”学到的错误技能污染未来推理”的问题。


四、整体架构

Hermes 把系统拆成四个核心组件(参考官方 Wiki):

flowchart LR
    LLM["🧠 LLM 驱动层<br/>(模型无关)"]
    PLAN["📋 规划/推理控制器"]
    TOOL["⚙️ 工具执行沙箱"]
    MEM["💾 记忆存储"]

    PLAN --> LLM
    LLM --> PLAN
    PLAN --> TOOL
    TOOL --> PLAN
    PLAN --> MEM
    MEM --> PLAN

    classDef core fill:#1e293b,stroke:#00D4FF,color:#e2e8f0
    class LLM,PLAN,TOOL,MEM core
  1. LLM 驱动层 - 通过统一接口适配 200+ 后端,本地云端都能跑
  2. 规划/推理控制器 - ReAct 风格的思考循环,决定下一步做什么
  3. 工具执行沙箱 - 受限环境执行工具调用,避免越权
  4. 记忆存储 - 三级记忆的统一接口

这种解耦让 Hermes 的扩展点非常清晰:换模型不动其它、改工具不动 prompt、加记忆类型有标准接口。


五、与 OpenClaw 的对比

既然已经拆过 OpenClaw,就直接做个对比:

维度OpenClawHermes Agent
主语言TypeScriptPython
核心定位跨平台消息网关自学习的本地大脑
通信集成✅ 10+(WhatsApp/Telegram/Slack…)
浏览器操控✅ 语义快照
记忆系统JSONL + MarkdownSQLite FTS5 + 三级记忆
技能自学习核心特性
LLM 支持10+200+
本地化程度本地优先完全离线可运行
工具沙箱Allowlist + 配对审批Python 沙箱
学习曲线中等(需懂 Node.js + 配置)低(API 极简)

一句话总结:OpenClaw 是「会说话的 AI 管家」,Hermes 是「会成长的 AI 学徒」

如果你的需求是「让 AI 接上你所有的聊天渠道去执行任务」,选 OpenClaw;如果你想要的是一个越用越懂你的本地 AI 助手,选 Hermes。


六、快速上手

最简安装:

git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
pip install -e .
hermes init  # 初始化配置
hermes run --model llama.cpp --model-path ~/models/qwen3-8b.gguf

Python API 也非常直观:

from hermes import Agent, Tool

# 注册一个自定义工具
@Tool.register
def search_files(pattern: str) -> list[str]:
    """在当前工作目录递归搜索匹配的文件"""
    import glob
    return glob.glob(f"**/{pattern}", recursive=True)

agent = Agent(
    model="llama.cpp",
    memory_path="./hermes_memory.db",
    skills_path="./skills",
)

result = agent.run("找出项目里所有 .py 文件,统计每个文件的行数")
print(result)

第一次运行会建立记忆库;多次类似任务后,Hermes 会自动生成 skills/count-file-lines.md 这样的技能卡片。


七、局限与思考

Hermes 也并非银弹,几个值得注意的点:

  1. 技能质量参差不齐 - 自动提炼的技能可能包含错误模式,需要人工 review
  2. 本地模型质量瓶颈 - 技能提炼依赖 LLM 自身的推理能力,小模型表现明显下降
  3. 没有跨平台通道 - 不像 OpenClaw 那样直接对接聊天软件,需要自己写接入层
  4. 技能库会膨胀 - 没有遗忘机制,长期使用后 skills/ 目录可能积累大量重复技能

但 Hermes 的真正价值不在于它现在有多完美,而在于它提出了一种新的 Agent 演化路径

不追求更大、更强,而是让 Agent 在使用过程中持续自我增强。


八、总结

优点缺点
模型无关,本地优先无内置通信渠道集成
自学习技能系统是杀手锏技能质量需要人工把关
三级记忆清晰、可解释长期使用技能库会膨胀
Python API 极简,学习成本低不擅长浏览器操控
MIT 协议,可商用小模型下技能提炼能力弱

如果你对「让 AI 越用越聪明」这件事感兴趣,Hermes Agent 是目前开源世界里最值得尝试的方向之一。


下一篇预告:横向对比 IronClaw / Hermes / Osaurus,看隐私优先、本地优先、Mac 原生三条路线的取舍。

参考资料:NousResearch/hermes-agent GitHub · Hermes Agent 官方文档 · Architecture Overview Wiki · Hermes vs LangChain 对比

分享文章
分享到 X