【Hermes Agent】完全解读:FTS5、Honcho与自我进化智能体架构内幕

【深度长文】Hermes Agent 完全解读

— FTS5、Honcho与自我进化智能体架构内幕

本文约15000字,深入解析 Hermes Agent 的核心技术:FTS5 全文搜索原理与实战、Honcho 用户画像系统架构、Agent 学习闭环机制,以及与 OpenClaw 的全方位深度对比。

项目地址:https://github.com/NousResearch/Hermes-Agent


引言:为什么 Hermes Agent 值得关注?

在 AI Agent 领域,大多数产品都是在调用 API + 拼接工具的范式下工作。这种方式有效,但有一个根本缺陷:每次对话从零开始,无法积累经验

Hermes Agent 打破了这一范式。它是第一个真正意义上具有自我进化能力的 AI Agent

  • 越用越聪明:完成任务后自动创建可复用技能
  • 主动记忆:定期提醒自己保存重要知识
  • 跨会话学习:通过 Honcho 建立用户画像,理解用户偏好
  • 高效检索:FTS5 全文搜索 + LLM 摘要实现精准回忆

第一部分:Hermes Agent 核心架构

1.1 系统架构全景图

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#FFB3C1', 'primaryTextColor': '#4A1942', 'primaryBorderColor': '#FF85A1', 'lineColor': '#C299E0', 'secondaryColor': '#C8E6C9', 'tertiaryColor': '#C7CEEA', 'background': '#FFF8FB', 'mainBkg': '#FFB3C1', 'nodeBorder': '#FF85A1', 'clusterBkg': '#FFF0F7', 'clusterBorder': '#FFB3C1', 'titleColor': '#6D3B8C', 'edgeLabelBackground': '#FFF8FB'}}}%%
flowchart TD
    classDef iface fill:#C7CEEA,stroke:#9FA8DA,color:#333
    classDef pipeline fill:#FFDAB9,stroke:#FFAB76,color:#333
    classDef store fill:#B5EAD7,stroke:#80CBC4,color:#333

    subgraph IF["接入层"]
        CLI["CLI<br/>TUI 界面 · ~8500 行"]:::iface
        GW["Gateway<br/>消息网关 · ~7500 行"]:::iface
        ACP["ACP<br/>IDE 集成"]:::iface
    end

    subgraph CORE["AIAgent Core · ~9200 行"]
        PB["Prompt Builder<br/>系统提示 + 历史 + 记忆"]:::pipeline
        PR["Provider Resolution<br/>18+ 供应商自动选择"]:::pipeline
        TD["Tool Dispatch<br/>47 内置工具 + MCP"]:::pipeline
        PB --> PR --> TD
    end

    subgraph STORE["存储层"]
        DB["SQLite + FTS5<br/>持久化 · 毫秒级检索"]:::store
        HC["Honcho 推理引擎<br/>用户画像 + 形式逻辑推理"]:::store
    end

    CLI & GW & ACP --> CORE
    CORE --> DB & HC

1.2 AIAgent 核心循环

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#FFB3C1', 'primaryTextColor': '#4A1942', 'primaryBorderColor': '#FF85A1', 'lineColor': '#C299E0', 'secondaryColor': '#C8E6C9', 'tertiaryColor': '#C7CEEA', 'background': '#FFF8FB', 'mainBkg': '#FFB3C1', 'nodeBorder': '#FF85A1', 'clusterBkg': '#FFF0F7', 'clusterBorder': '#FFB3C1', 'titleColor': '#6D3B8C', 'edgeLabelBackground': '#FFF8FB'}}}%%
flowchart TD
    classDef input fill:#C7CEEA,stroke:#9FA8DA,color:#333
    classDef process fill:#E8D5F5,stroke:#CE93D8,color:#333
    classDef decision fill:#FFF9C4,stroke:#F9A825,color:#333
    classDef tool fill:#FFDAB9,stroke:#FFAB76,color:#333
    classDef output fill:#B5EAD7,stroke:#80CBC4,color:#333

    A["用户输入 / 工具执行结果反馈"]:::input
    B["Prompt 构建器<br/>系统提示 + 历史消息 + Honcho 记忆 + 技能列表"]:::process
    C["LLM 调用<br/>Provider 自动选择 · 18+ 供应商"]:::process
    D{"包含 tool_call?"}:::decision
    E["Tool Dispatcher<br/>解析参数 → 选择后端 → 执行 → 收集结果"]:::tool
    F["输出响应给用户<br/>更新 Honcho 记忆"]:::output

    A --> B --> C --> D
    D -- 是 --> E
    D -- 否 --> F
    E -- 结果追加消息历史 --> B

1.3 核心入口点详解

CLI(命令行界面)

位于 cli.py,约 8500 行代码,提供完整的 TUI 界面:

命令功能
/new新建对话
/model切换模型
/personality设置人格
/retry重试上轮
/undo撤销
/compress压缩上下文
/skills浏览技能
/usage查看用量

Gateway(消息网关)

位于 gateway/run.py,约 7500 行代码,连接 15+ 消息平台:

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#FFB3C1', 'primaryTextColor': '#4A1942', 'primaryBorderColor': '#FF85A1', 'lineColor': '#C299E0', 'secondaryColor': '#C8E6C9', 'tertiaryColor': '#C7CEEA', 'background': '#FFF8FB', 'mainBkg': '#FFB3C1', 'nodeBorder': '#FF85A1', 'clusterBkg': '#FFF0F7', 'clusterBorder': '#FFB3C1', 'titleColor': '#6D3B8C', 'edgeLabelBackground': '#FFF8FB'}}}%%
flowchart TD
    classDef platform fill:#C7CEEA,stroke:#9FA8DA,color:#333
    classDef gw fill:#E8D5F5,stroke:#CE93D8,color:#333
    classDef agent fill:#FFDAB9,stroke:#FFAB76,color:#333

    subgraph PLAT["消息平台层 · 15+ 平台"]
        TG["Telegram"]:::platform
        DC["Discord"]:::platform
        WA["WhatsApp"]:::platform
        FS["飞书"]:::platform
        DD["钉钉"]:::platform
        QW["企微"]:::platform
    end

    subgraph GWC["Gateway Core · gateway/run.py · ~7500 行"]
        N["消息标准化<br/>统一格式"]:::gw
        P["权限校验<br/>用户 / 群组"]:::gw
        R["多路复用<br/>路由分发"]:::gw
        N --> P --> R
    end

    AGENT["AIAgent Core"]:::agent

    TG & DC & WA & FS & DD & QW --> GWC
    R --> AGENT

第二部分:FTS5 全文搜索深度解析

2.1 为什么需要 FTS5?

在 Hermes 中,用户可能产生数千条会话记录。假设每条平均 500 字,1000 条会话就是 50万字

查询方式时间复杂度50万字延迟
传统 LIKEO(n)数秒
FTS5 倒排索引O(1)毫秒级

2.2 FTS5 核心原理

倒排索引(Inverted Index)

假设有3条文档:

1
2
3
文档1: "今天天气很好,适合出门"
文档2: "今天下雨,不出门"
文档3: "天气不错,心情好"

传统正排索引(doc → terms):

1
2
3
文档1 → ["今天", "天气", "很好", "适合", "出门"]
文档2 → ["今天", "下雨", "不出门"]
文档3 → ["天气", "不错", "心情", "好"]

FTS5 倒排索引(term → docs):

1
2
3
4
5
6
"今天"   → [文档1, 文档2]
"天气" → [文档1, 文档2, 文档3]
"很好" → [文档1]
"下雨" → [文档2]
"心情" → [文档3]
"好" → [文档1, 文档3]

查询”天气”:直接查倒排表 O(1) 找到 [文档1, 文档2, 文档3]

FTS5 分词器

FTS5 默认使用 Unicode61 分词器

功能示例
大小写转换“天气” = “天气” = “天氣”
标点过滤“你好,世界” → [“你好”, “世界”]
Unicode规范化“café” 处理重音符号

FTS5 查询语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 基础查询
SELECT * FROM sessions WHERE sessions MATCH '天气';

-- 短语查询(必须按顺序)
SELECT * FROM sessions WHERE sessions MATCH '"今天 天气"';

-- 前缀查询
SELECT * FROM sessions WHERE sessions MATCH '天气*';

-- 布尔查询
SELECT * FROM sessions WHERE sessions MATCH '天气 AND 心情';
SELECT * FROM sessions WHERE sessions MATCH '天气 OR 温度';
SELECT * FROM sessions WHERE sessions MATCH '天气 NOT 下雨';

-- NEAR 查询(相近词)
SELECT * FROM sessions WHERE sessions MATCH 'NEAR(天气, 心情, 5)';

2.3 Hermes 中的 FTS5 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# FTS5 + LLM 摘要召回

async def semantic_search(self, query: str) -> str:
# 1. FTS5 快速召回 Top-5 相关会话
fts_results = await self.search_sessions(query, limit=5)

# 2. 拼接召回的上下文
context = "\n\n".join([
f"[会话 {i+1}]\n{r['content']}"
for i, r in enumerate(fts_results)
])

# 3. 交给 LLM 生成摘要
prompt = f"""
基于以下历史会话片段,回答用户问题。
问题: {query}
历史会话: {context}
请总结相关历史,并给出回答。
"""

response = await self.llm.chat(prompt)
return response.content

2.4 FTS5 vs 其他搜索方案

特性FTS5Elasticsearch向量数据库传统 LIKE
部署⭐⭐⭐⭐⭐ SQLite内置⭐ 需要单独服务⭐⭐ 需要云服务⭐⭐⭐⭐⭐
查询延迟⭐⭐⭐⭐⭐ 毫秒级⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
语义理解❌ 关键词匹配✅ 语义向量
精确匹配⚠️
内存占用⭐⭐⭐⭐⭐ 极低⭐ 需要ES集群⭐⭐⭐⭐⭐⭐⭐

第三部分:Honcho 用户画像系统深度解析

3.1 Honcho 是什么?

HonchoPlastic Labs 开发的持久化记忆与推理库

官网:https://app.honcho.dev
GitHub:https://github.com/plastic-labs/honcho

核心理念:Memory as Reasoning — 记忆不仅是存储,而是推理

3.2 Honcho 数据模型

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#FFB3C1', 'primaryTextColor': '#4A1942', 'primaryBorderColor': '#FF85A1', 'lineColor': '#C299E0', 'secondaryColor': '#C8E6C9', 'tertiaryColor': '#C7CEEA', 'background': '#FFF8FB', 'mainBkg': '#FFB3C1', 'nodeBorder': '#FF85A1', 'clusterBkg': '#FFF0F7', 'clusterBorder': '#FFB3C1', 'titleColor': '#6D3B8C', 'edgeLabelBackground': '#FFF8FB'}}}%%
flowchart TD
    classDef tier1 fill:#C7CEEA,stroke:#9FA8DA,color:#333
    classDef tier2 fill:#E8D5F5,stroke:#CE93D8,color:#333
    classDef tier3 fill:#FFDAB9,stroke:#FFAB76,color:#333
    classDef tier4 fill:#B5EAD7,stroke:#80CBC4,color:#333
    classDef profile fill:#FFF9C4,stroke:#F9A825,color:#333

    APP["App<br/>app_id: hermes-agent"]:::tier1
    USER["User<br/>user_id: user_xuqi"]:::tier2
    SESS["Session<br/>session_id: sess_20260413"]:::tier3
    MSG["Message<br/>is_human: true · content: ..."]:::tier4
    META["Metamessage<br/>推理标注 / 记忆更新 / 用户偏好"]:::tier4
    CARD["Peer Card · 用户画像<br/>biographical · preferences<br/>behavioral · derived_insights"]:::profile

    APP --> USER
    USER --> SESS & CARD
    SESS --> MSG & META

3.3 Honcho 推理引擎详解

为什么需要推理?

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#FFB3C1', 'primaryTextColor': '#4A1942', 'primaryBorderColor': '#FF85A1', 'lineColor': '#C299E0', 'secondaryColor': '#C8E6C9', 'tertiaryColor': '#C7CEEA', 'background': '#FFF8FB', 'mainBkg': '#FFB3C1', 'nodeBorder': '#FF85A1', 'clusterBkg': '#FFF0F7', 'clusterBorder': '#FFB3C1', 'titleColor': '#6D3B8C', 'edgeLabelBackground': '#FFF8FB'}}}%%
flowchart LR
    classDef input fill:#C7CEEA,stroke:#9FA8DA,color:#333
    classDef ragnode fill:#FFB3C6,stroke:#F48FB1,color:#333
    classDef honcho fill:#E8D5F5,stroke:#CE93D8,color:#333
    classDef bad fill:#FFB3C6,stroke:#F48FB1,color:#333
    classDef good fill:#B5EAD7,stroke:#80CBC4,color:#333

    subgraph RAG["❌  传统 RAG"]
        RA["用户输入<br/>'我喜欢代码示例'"]:::input
        RB["向量检索<br/>相似对话片段"]:::ragnode
        RC["仅返回原文<br/>'用户说他喜欢代码示例'"]:::bad
        RA --> RB --> RC
    end

    subgraph HON["✅  Honcho 推理引擎"]
        HA["用户输入<br/>'我喜欢代码示例'"]:::input
        HB["提取显式事实<br/>用户说喜欢看代码示例"]:::honcho
        HC2["演绎推理<br/>用户偏好实践导向学习"]:::honcho
        HD["归纳推理结论<br/>用户是实践型学习者"]:::good
        HA --> HB --> HC2 --> HD
    end

核心洞察:

  • 传统 RAG 只返回说过的话
  • Honcho 通过推理返回从话语中得出的结论

形式逻辑推理框架

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"explicit": [
{"content": "用户说他喜欢看代码示例"},
{"content": "用户表示文档太枯燥"}
],
"deductive": [
{
"premises": ["用户说他喜欢看代码示例", "用户表示文档太枯燥"],
"conclusion": "用户偏好实践导向的学习方式"
}
],
"inductive": [
{
"observations": ["多次问实践问题", "多次表达对理论的厌倦"],
"pattern": "用户是实践型学习者"
}
],
"abductive": [
{
"observation": "用户总是要求代码示例",
"hypothesis": "用户可能是开发者或正在学习编程"
}
]
}

推理级别(Dialectic Levels)

级别用途底层模型适用场景
minimal快速提取Gemini高频简单更新
low轻量推理Gemini标准对话
medium标准分析Claude一般用途
high深度分析Claude重要洞察
max最深度推理Claude复杂推理

Token 批处理

1
2
3
4
5
6
7
8
9
触发条件:约 1000 tokens 的消息队列

用户: "yes" (3 tokens) → 等待
用户: "ok" (2 tokens) → 继续等待
... 累积到 ~1000 tokens

一次性处理整个批次

生成推理结论

3.4 Peer Card(参与者画像)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"peer_id": "user_xuqi",
"card": {
"biographical": {
"name": "徐琪",
"role": "开发者",
"timezone": "Asia/Shanghai"
},
"preferences": {
"learning_style": "hands_on",
"communication": "简洁直接",
"language": "中文"
},
"behavioral_patterns": {
"active_hours": ["20:00-24:00"],
"topics": ["ESP32", "Python", "AI Agent"],
"interaction_frequency": "high"
},
"derived_insights": [
"用户偏好通过实际项目学习",
"用户对AI助手有一定了解",
"用户经常在深夜工作"
]
}
}

3.5 Honcho vs 传统记忆方案对比

特性Honcho键值存储向量数据库文件记忆
推理能力✅ 形式逻辑⚠️ 语义近似
结构化表征✅ Peer Card
持续学习
用户画像✅ 自动生成
查询灵活性✅ SQL + LLMK/V向量相似关键词

第四部分:Hermes 工具系统深度解析

4.1 工具注册表架构

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#FFB3C1', 'primaryTextColor': '#4A1942', 'primaryBorderColor': '#FF85A1', 'lineColor': '#C299E0', 'secondaryColor': '#C8E6C9', 'tertiaryColor': '#C7CEEA', 'background': '#FFF8FB', 'mainBkg': '#FFB3C1', 'nodeBorder': '#FF85A1', 'clusterBkg': '#FFF0F7', 'clusterBorder': '#FFB3C1', 'titleColor': '#6D3B8C', 'edgeLabelBackground': '#FFF8FB'}}}%%
flowchart TD
    classDef tool fill:#C7CEEA,stroke:#9FA8DA,color:#333
    classDef dispatch fill:#FFDAB9,stroke:#FFAB76,color:#333
    classDef backend fill:#B5EAD7,stroke:#80CBC4,color:#333

    subgraph REG["工具注册表 Tool Registry · 47 内置工具"]
        T1["文件操作<br/>read_file · write_file · list_dir"]:::tool
        T2["代码执行<br/>bash_exec · python_run · node_run"]:::tool
        T3["网络访问<br/>web_search · web_fetch · http_req"]:::tool
        T4["记忆管理<br/>search_memory · save_memory · list_skills"]:::tool
    end

    DISP["Tool Dispatcher<br/>tool_name → 注册表查找 → 参数校验 → 选择执行后端"]:::dispatch
    BUILT["内置工具执行<br/>local · Docker · SSH · Modal"]:::backend
    MCP["MCP 扩展工具<br/>外部服务 API 集成"]:::backend

    REG --> DISP
    DISP --> BUILT & MCP

4.2 工具执行流程

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#FFB3C1', 'primaryTextColor': '#4A1942', 'primaryBorderColor': '#FF85A1', 'lineColor': '#C299E0', 'secondaryColor': '#C8E6C9', 'tertiaryColor': '#C7CEEA', 'background': '#FFF8FB', 'mainBkg': '#FFB3C1', 'nodeBorder': '#FF85A1', 'clusterBkg': '#FFF0F7', 'clusterBorder': '#FFB3C1', 'titleColor': '#6D3B8C', 'edgeLabelBackground': '#FFF8FB'}}}%%
flowchart TD
    classDef trigger fill:#C7CEEA,stroke:#9FA8DA,color:#333
    classDef process fill:#E8D5F5,stroke:#CE93D8,color:#333
    classDef decision fill:#FFF9C4,stroke:#F9A825,color:#333
    classDef error fill:#FFB3C6,stroke:#F48FB1,color:#333
    classDef execute fill:#FFDAB9,stroke:#FFAB76,color:#333
    classDef result fill:#B5EAD7,stroke:#80CBC4,color:#333

    A["LLM 输出包含 tool_call"]:::trigger
    B["① 解析工具名 + 参数"]:::process
    C["② 参数校验<br/>JSON Schema 验证"]:::process
    D{"校验通过?"}:::decision
    E["返回错误信息<br/>LLM 重试修正参数"]:::error
    F["③ 选择执行后端<br/>local · docker · SSH · Modal"]:::execute
    G["④ 执行工具<br/>捕获输出 / 超时控制"]:::execute
    H["返回 tool_result<br/>追加消息历史 → 触发下一轮循环"]:::result

    A --> B --> C --> D
    D -- 否 --> E
    D -- 是 --> F --> G --> H
    E -- 重试 --> A

4.3 终端后端支持

后端用途特点
local本地执行最快,无网络延迟
docker隔离容器完全隔离,可限制资源
SSH远程执行连接到其他机器
DaytonaServerless按需启停,成本低
ModalServerless GPU支持 GPU 任务
SingularityHPC 容器高性能计算

第五部分:Hermes vs OpenClaw 深度对比

5.1 基本信息对比

维度Hermes AgentOpenClaw
开发团队Nous ResearchOpenClaw 社区
开源协议MITMIT
核心语言Python (~50k行)TypeScript/Node.js
定位自我进化智能体多功能 Agent 框架
学习闭环✅ 内置 Honcho 推理⚠️ MEMORY.md 持久化
模型支持18+ 供应商多种模型
消息平台15+ 平台多种
部署方式VPS/Serverless/NASNAS/本地/云
工具数量47内置 + MCP扩展Skills 扩展

5.2 架构哲学对比

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#FFB3C1', 'primaryTextColor': '#4A1942', 'primaryBorderColor': '#FF85A1', 'lineColor': '#C299E0', 'secondaryColor': '#C8E6C9', 'tertiaryColor': '#C7CEEA', 'background': '#FFF8FB', 'mainBkg': '#FFB3C1', 'nodeBorder': '#FF85A1', 'clusterBkg': '#FFF0F7', 'clusterBorder': '#FFB3C1', 'titleColor': '#6D3B8C', 'edgeLabelBackground': '#FFF8FB'}}}%%
flowchart LR
    classDef hermes fill:#E8D5F5,stroke:#CE93D8,color:#333
    classDef claw fill:#B5EAD7,stroke:#80CBC4,color:#333
    classDef input fill:#C7CEEA,stroke:#9FA8DA,color:#333
    classDef hermes_out fill:#B5EAD7,stroke:#80CBC4,color:#333
    classDef claw_out fill:#C7CEEA,stroke:#9FA8DA,color:#333

    subgraph HM["Hermes Agent · 自我进化派 · Python ~50k行"]
        direction TB
        HA["用户输入"]:::input
        HB["Honcho 记忆检索<br/>+ 用户画像推理"]:::hermes
        HC2["LLM · 18+ 供应商"]:::hermes
        HD["47 内置工具 + MCP 扩展"]:::hermes
        HE["✅ 自动更新 Honcho 记忆<br/>✅ 生成可复用技能<br/>✅ 用户画像持续优化"]:::hermes_out
        HA --> HB --> HC2 --> HD --> HE
    end

    subgraph OC["OpenClaw · 工具编排派 · TypeScript/Node.js"]
        direction TB
        OA["用户输入"]:::input
        OB["MEMORY.md · SOUL.md<br/>USER.md 用户配置"]:::claw
        OC2["LLM · 多供应商"]:::claw
        OD["Skills 扩展体系"]:::claw
        OE["返回结果(无状态)"]:::claw_out
        OA --> OB --> OC2 --> OD --> OE
    end

5.3 记忆系统对比

特性Hermes (Honcho)OpenClaw (文件记忆)
存储方式PostgreSQL + pgvector文件系统 (MEMORY.md)
推理能力✅ 形式逻辑推理
用户画像✅ 自动生成 Peer Card⚠️ 手动维护 USER.md
持续学习
跨会话累积⚠️ 需手动合并
查询方式FTS5 + SQL + LLM文本搜索

5.4 消息平台对比

平台HermesOpenClaw
Telegram
Discord
WhatsApp
飞书
钉钉
企业微信
微信⚠️ 社区桥接
Signal
Home Assistant✅⭐ 原生

5.5 各自最优场景

场景推荐核心优势
需要自我进化Hermes内置 Honcho 推理
跨平台消息Hermes15+平台原生
Home Assistant集成OpenClaw⭐⭐⭐⭐⭐ 原生支持
NAS部署OpenClaw轻量,TypeScript生态
研究用途HermesRL环境、轨迹导出
低成本VPSHermes$5可跑,serverless

5.6 迁移能力

重要:Hermes 支持从 OpenClaw 迁移!

1
2
3
4
5
# 一键迁移
hermes claw migrate

# 预览迁移内容
hermes claw migrate --dry-run
迁移项Hermes 目标
SOUL.mdSOUL.md
MEMORY.mdHoncho Memory
USER.mdHoncho Peer Card
Skills~/.hermes/skills/

第六部分:定时自动化(Cron)深度解析

6.1 Cron 工作原理

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#FFB3C1', 'primaryTextColor': '#4A1942', 'primaryBorderColor': '#FF85A1', 'lineColor': '#C299E0', 'secondaryColor': '#C8E6C9', 'tertiaryColor': '#C7CEEA', 'background': '#FFF8FB', 'mainBkg': '#FFB3C1', 'nodeBorder': '#FF85A1', 'clusterBkg': '#FFF0F7', 'clusterBorder': '#FFB3C1', 'titleColor': '#6D3B8C', 'edgeLabelBackground': '#FFF8FB'}}}%%
flowchart TD
    classDef config fill:#C7CEEA,stroke:#9FA8DA,color:#333
    classDef job fill:#E8D5F5,stroke:#CE93D8,color:#333
    classDef execute fill:#FFDAB9,stroke:#FFAB76,color:#333
    classDef deliver fill:#B5EAD7,stroke:#80CBC4,color:#333

    CONFIG["任务配置 cron_jobs.json<br/>schedule: '0 8 * * *'<br/>prompt: '生成日报'"]:::config

    subgraph SCHED["APScheduler 调度器"]
        S1["每日报告<br/>0 8 * * *"]:::job
        S2["记忆提醒<br/>*/30 * * *"]:::job
        S3["系统监控<br/>0 * * * *"]:::job
        S4["自定义任务<br/>cron 表达式"]:::job
    end

    EXEC["AIAgent 执行<br/>构建提示词 → LLM 调用 → 工具执行"]:::execute
    DELIVER["结果投递<br/>Telegram · Discord · Email · 飞书"]:::deliver

    CONFIG --> SCHED
    S1 & S2 & S3 & S4 --> EXEC
    EXEC --> DELIVER

6.2 自然语言任务定义

1
2
3
4
5
6
7
8
9
10
11
{
"jobs": [
{
"id": "daily-report",
"name": "每日工作报告",
"schedule": "0 8 * * *",
"prompt": "请生成昨天的工作报告,包含:1.完成的工作 2.遇到的问题 3.今日计划。",
"deliver_to": ["telegram"]
}
]
}

用户只需要说:“每天早上8点给我发日报”,Hermes 自动解析并创建任务。


第七部分:子智能体委托(Delegate)深度解析

7.1 并行加速原理

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#FFB3C1', 'primaryTextColor': '#4A1942', 'primaryBorderColor': '#FF85A1', 'lineColor': '#C299E0', 'secondaryColor': '#C8E6C9', 'tertiaryColor': '#C7CEEA', 'background': '#FFF8FB', 'mainBkg': '#FFB3C1', 'nodeBorder': '#FF85A1', 'clusterBkg': '#FFF0F7', 'clusterBorder': '#FFB3C1', 'titleColor': '#6D3B8C', 'edgeLabelBackground': '#FFF8FB'}}}%%
flowchart TD
    classDef user fill:#C7CEEA,stroke:#9FA8DA,color:#333
    classDef main fill:#FFDAB9,stroke:#FFAB76,color:#333
    classDef sub fill:#E8D5F5,stroke:#CE93D8,color:#333
    classDef summary fill:#B5EAD7,stroke:#80CBC4,color:#333

    USER["用户: '分析代码质量、安全性和测试覆盖率'"]:::user
    MAIN["主 Hermes Agent<br/>任务拆解 /parallel"]:::main
    A["子 Agent A<br/>目录结构分析"]:::sub
    B["子 Agent B<br/>代码质量检查"]:::sub
    C["子 Agent C<br/>安全审计 · 漏洞扫描"]:::sub
    SUM["汇总结果 + 综合报告<br/>总耗时 = max(各任务)<br/>而非 sum(各任务)"]:::summary

    USER --> MAIN
    MAIN --> A & B & C
    A & B & C -- 并行执行 --> SUM

7.2 使用示例

1
2
3
4
5
6
7
8
用户: "帮我分析这个项目的代码质量和安全性"

Hermes 执行:
/parallel
/delegate "分析代码目录结构和模块划分"
/delegate "检查代码质量问题"
/delegate "安全审计"
/delegate "生成测试覆盖率报告"

第八部分:实战部署指南

8.1 一键安装

1
2
3
4
5
# Linux / macOS / WSL2
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

# 验证安装
hermes --version

8.2 Docker 部署

1
2
3
4
5
6
7
8
9
# docker-compose.yml
version: '3.8'
services:
hermes:
image: nousresearch/hermes-agent:latest
volumes:
- ./hermes_data:/root/.hermes
environment:
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
1
docker-compose up -d

8.3 服务器部署(Systemd)

1
2
3
4
5
6
7
8
9
10
11
12
13
# /etc/systemd/system/hermes.service
[Unit]
Description=Hermes Agent
After=network.target

[Service]
Type=simple
User=ubuntu
ExecStart=/usr/local/bin/hermes gateway start
Restart=on-failure

[Install]
WantedBy=multi-user.target
1
2
sudo systemctl enable hermes
sudo systemctl start hermes

总结

为什么选择 Hermes?

  1. 真正的自我进化

    • 内置 Honcho 推理引擎
    • 跨会话学习,用户画像持续优化
    • FTS5 + LLM 实现高效精准检索
  2. 平台无关设计

    • 15+ 消息平台一个 Agent
    • 从 Telegram 发消息,云端 VM 执行
  3. 模型无关设计

    • OpenRouter 200+ 模型随意切换
    • 不被供应商绑定
  4. 研究友好

    • 内置 RL 训练环境
    • 轨迹导出支持
    • 开源 MIT

什么时候选 OpenClaw?

  • 需要深度 Home Assistant 集成
  • 轻量级 NAS 部署
  • 喜欢 TypeScript/Node.js 生态

参考资料

资源链接
Hermes 官网https://hermes-agent.nousresearch.com
Hermes GitHubhttps://github.com/NousResearch/Hermes-Agent
Honcho 官网https://app.honcho.dev
Honcho GitHubhttps://github.com/plastic-labs/honcho
Honcho 文档https://docs.honcho.dev
Nous Researchhttps://nousresearch.com
FTS5 文档https://www.sqlite.org/fts5.html
Discord 社区https://discord.gg/NousResearch

本文作者: xuqi2024
编写日期: 2026年4月13日
许可协议: CC BY-SA 4.0


对比分析

Hermes Agent 定位为带持久记忆和自我进化能力的智能体,下面把它和同类型的两个开源记忆型 Agent 项目做对比:OpenHands(前 OpenDevin)和 Letta(前 MemGPT)。

对比维度一:记忆与学习机制

维度Hermes AgentOpenHandsLetta
记忆介质SQLite + FTS5 全文索引文件 + 工作区快照自建上下文数据库
长期画像Honcho 用户画像无显式画像层核心记忆 / 回忆 / 归档三层
自我进化任务后自动创建可复用技能基于事件的工作流迭代靠 prompt 工具调用写入记忆
检索方式FTS5 + LLM 摘要二阶段关键词 + 嵌入混合上下文窗口外的 LLM 召回

对比维度二:定位与使用场景

维度Hermes AgentOpenHandsLetta
主要形态CLI / TUI Agent软件工程 Agent(操控代码仓库)Agent 服务化框架 + 前端
适合谁个人/小团队的私人助手想自动化改 Bug、写 PR 的工程师想做 SaaS 化产品的开发者
学习成本中,需要理解 Honcho中,事件流模型高,记忆层级抽象复杂
部署形态单机 CLIDocker / 云端 RuntimePython SDK + 数据库

优缺点

  • Hermes Agent:把”自我进化”做成产品核心,CLI 体验最贴近本地日常使用;但生态较小,Honcho 协议绑定较深。
  • OpenHands:软件工程场景最成熟,事件溯源模型清晰;面向”任务执行”而非”长期陪伴”。
  • Letta:记忆模型学术化、可扩展性高;上手门槛最高,需要熟悉核心/回忆/归档三层语义。

何时选哪个

  • 想做”越用越懂你”的个人助手 → 选 Hermes Agent
  • 想自动化处理 GitHub Issue、写代码、跑测试 → 选 OpenHands
  • 想把 Agent 做成带记忆的 SaaS 产品 → 选 Letta

参考资料