【深度长文】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 & HC1.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 -- 结果追加消息历史 --> B1.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万字延迟 传统 LIKE O(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 下雨' ;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 async def semantic_search (self, query: str ) -> str : fts_results = await self .search_sessions(query, limit=5 ) context = "\n\n" .join([ f"[会话 {i+1 } ]\n{r['content' ]} " for i, r in enumerate (fts_results) ]) prompt = f""" 基于以下历史会话片段,回答用户问题。 问题: {query} 历史会话: {context} 请总结相关历史,并给出回答。 """ response = await self .llm.chat(prompt) return response.content
2.4 FTS5 vs 其他搜索方案 特性 FTS5 Elasticsearch 向量数据库 传统 LIKE 部署 ⭐⭐⭐⭐⭐ SQLite内置 ⭐ 需要单独服务 ⭐⭐ 需要云服务 ⭐⭐⭐⭐⭐ 查询延迟 ⭐⭐⭐⭐⭐ 毫秒级 ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐ 语义理解 ❌ 关键词匹配 ❌ ✅ 语义向量 ❌ 精确匹配 ✅ ✅ ⚠️ ✅ 内存占用 ⭐⭐⭐⭐⭐ 极低 ⭐ 需要ES集群 ⭐⭐ ⭐⭐⭐⭐⭐
第三部分:Honcho 用户画像系统深度解析 3.1 Honcho 是什么? Honcho 是 Plastic 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 & META3.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 + LLM K/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 & MCP4.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 -- 重试 --> A4.3 终端后端支持 后端 用途 特点 local 本地执行 最快,无网络延迟 docker 隔离容器 完全隔离,可限制资源 SSH 远程执行 连接到其他机器 Daytona Serverless 按需启停,成本低 Modal Serverless GPU 支持 GPU 任务 Singularity HPC 容器 高性能计算
第五部分:Hermes vs OpenClaw 深度对比 5.1 基本信息对比 维度 Hermes Agent OpenClaw 开发团队 Nous Research OpenClaw 社区 开源协议 MIT MIT 核心语言 Python (~50k行) TypeScript/Node.js 定位 自我进化智能体 多功能 Agent 框架 学习闭环 ✅ 内置 Honcho 推理 ⚠️ MEMORY.md 持久化 模型支持 18+ 供应商 多种模型 消息平台 15+ 平台 多种 部署方式 VPS/Serverless/NAS NAS/本地/云 工具数量 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
end5.3 记忆系统对比 特性 Hermes (Honcho) OpenClaw (文件记忆) 存储方式 PostgreSQL + pgvector 文件系统 (MEMORY.md) 推理能力 ✅ 形式逻辑推理 ❌ 用户画像 ✅ 自动生成 Peer Card ⚠️ 手动维护 USER.md 持续学习 ✅ ❌ 跨会话累积 ✅ ⚠️ 需手动合并 查询方式 FTS5 + SQL + LLM 文本搜索
5.4 消息平台对比 平台 Hermes OpenClaw Telegram ✅ ✅ Discord ✅ ✅ WhatsApp ✅ ✅ 飞书 ✅ ✅ 钉钉 ✅ ❌ 企业微信 ✅ ❌ 微信 ⚠️ 社区桥接 ✅ Signal ✅ ❌ Home Assistant ✅ ✅⭐ 原生
5.5 各自最优场景 场景 推荐 核心优势 需要自我进化 Hermes 内置 Honcho 推理 跨平台消息 Hermes 15+平台原生 Home Assistant集成 OpenClaw ⭐⭐⭐⭐⭐ 原生支持 NAS部署 OpenClaw 轻量,TypeScript生态 研究用途 Hermes RL环境、轨迹导出 低成本VPS Hermes $5可跑,serverless
5.6 迁移能力 重要:Hermes 支持从 OpenClaw 迁移!
1 2 3 4 5 hermes claw migrate hermes claw migrate --dry-run
迁移项 Hermes 目标 SOUL.md SOUL.md MEMORY.md Honcho Memory USER.md Honcho 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 --> DELIVER6.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 -- 并行执行 --> SUM7.2 使用示例 1 2 3 4 5 6 7 8 用户: "帮我分析这个项目的代码质量和安全性" Hermes 执行: /parallel /delegate "分析代码目录结构和模块划分" /delegate "检查代码质量问题" /delegate "安全审计" /delegate "生成测试覆盖率报告"
第八部分:实战部署指南 8.1 一键安装 1 2 3 4 5 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 version: '3.8' services: hermes: image: nousresearch/hermes-agent:latest volumes: - ./hermes_data:/root/.hermes environment: - OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
8.3 服务器部署(Systemd) 1 2 3 4 5 6 7 8 9 10 11 12 13 [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 hermessudo systemctl start hermes
总结 为什么选择 Hermes? 真正的自我进化
内置 Honcho 推理引擎 跨会话学习,用户画像持续优化 FTS5 + LLM 实现高效精准检索 平台无关设计
15+ 消息平台一个 Agent 从 Telegram 发消息,云端 VM 执行 模型无关设计
OpenRouter 200+ 模型随意切换 不被供应商绑定 研究友好
什么时候选 OpenClaw? 需要深度 Home Assistant 集成 轻量级 NAS 部署 喜欢 TypeScript/Node.js 生态 参考资料 本文作者: xuqi2024编写日期: 2026年4月13日许可协议: CC BY-SA 4.0
对比分析 Hermes Agent 定位为带持久记忆和自我进化能力的智能体,下面把它和同类型的两个开源记忆型 Agent 项目做对比:OpenHands(前 OpenDevin)和 Letta(前 MemGPT)。
对比维度一:记忆与学习机制 维度 Hermes Agent OpenHands Letta 记忆介质 SQLite + FTS5 全文索引 文件 + 工作区快照 自建上下文数据库 长期画像 Honcho 用户画像 无显式画像层 核心记忆 / 回忆 / 归档三层 自我进化 任务后自动创建可复用技能 基于事件的工作流迭代 靠 prompt 工具调用写入记忆 检索方式 FTS5 + LLM 摘要二阶段 关键词 + 嵌入混合 上下文窗口外的 LLM 召回
对比维度二:定位与使用场景 维度 Hermes Agent OpenHands Letta 主要形态 CLI / TUI Agent 软件工程 Agent(操控代码仓库) Agent 服务化框架 + 前端 适合谁 个人/小团队的私人助手 想自动化改 Bug、写 PR 的工程师 想做 SaaS 化产品的开发者 学习成本 中,需要理解 Honcho 中,事件流模型 高,记忆层级抽象复杂 部署形态 单机 CLI Docker / 云端 Runtime Python SDK + 数据库
优缺点 Hermes Agent :把”自我进化”做成产品核心,CLI 体验最贴近本地日常使用;但生态较小,Honcho 协议绑定较深。OpenHands :软件工程场景最成熟,事件溯源模型清晰;面向”任务执行”而非”长期陪伴”。Letta :记忆模型学术化、可扩展性高;上手门槛最高,需要熟悉核心/回忆/归档三层语义。何时选哪个 想做”越用越懂你”的个人助手 → 选 Hermes Agent 想自动化处理 GitHub Issue、写代码、跑测试 → 选 OpenHands 想把 Agent 做成带记忆的 SaaS 产品 → 选 Letta 参考资料