乐于分享
好东西不私藏

双雄对决:Hermes Agent 与 OpenClaw 的架构哲学之争

双雄对决:Hermes Agent 与 OpenClaw 的架构哲学之争

当两个 37 万 Star 的 AI 助手项目在 GitHub 上相遇,它们选择了截然不同的道路。

缘起:两个”个人 AI 助手”的诞生

2026 年,AI Agent 领域迎来了一场静悄悄的革命。两个项目几乎同时崛起,它们都宣称要做”你的个人 AI 助手”,都支持 20+ 消息平台,都有工具系统和技能市场,都在 GitHub 上收获了超过 37 万颗星。

它们就是 Hermes Agent 和 OpenClaw

但当你深入它们的代码,会发现一个惊人的事实:这两个看似相似的项目,在架构哲学上走向了两个极端。

第一眼:惊人的相似

打开两个项目的 README,你会觉得它们是双胞胎:

特性
Hermes Agent
OpenClaw
核心定位
个人 AI 助手
个人 AI 助手
语言栈
Python
TypeScript/Node.js
平台支持
Telegram, Discord, Slack, WhatsApp, Signal, Matrix…
Telegram, Discord, Slack, WhatsApp, Signal, Matrix…
工具系统
✅ 自注册工具
✅ 插件工具
技能市场
Skills (SKILL.md)
ClawHub
会话管理
SQLite + FTS5
SQLite
沙箱安全

甚至 OpenClaw 还有官方的 @openclaw/migrate-hermes 扩展,专门帮助用户从 Hermes 迁移。这进一步印证了它们的竞争关系。

但当你读到 OpenClaw 的 VISION.md 文档时,一切都不一样了。

架构分歧:嵌套 vs 扁平

OpenClaw 的宣言

在 OpenClaw 的愿景文档中,有一条醒目的声明:

Agent-hierarchy frameworks (manager-of-managers / nested planner trees)  as a default architecture → WILL NOT MERGE 

翻译过来就是:嵌套规划树架构永远不会合并进主分支

OpenClaw 团队认为,多层 Agent 嵌套(一个 Manager Agent 管理多个 Worker Agent)会带来:

  • 调试地狱(你不知道是哪一层出了问题)
  • 状态爆炸(每一层都有自己的上下文)
  • 性能损耗(每一层都要过一遍 LLM)

他们选择了扁平架构:一个主循环,所有工具在同一层级,没有嵌套。

Hermes 的选择

Hermes Agent 走了另一条路。它的 delegate_task 工具允许主 Agent 派生出子 Agent,子 Agent 还可以继续派生:

主 Agent (orchestrator)   └─ 子 Agent A (处理子任务)        └─ 孙 Agent A1 (处理更细粒度的任务)   └─ 子 Agent B (处理另一个子任务) 

默认深度限制为 1 层(可配置到 3 层),每个子 Agent 都有:

  • 独立的会话上下文(不污染父 Agent)
  • 独立的终端会话(文件系统隔离)
  • 受限的工具集(不能调用 delegate_taskmemory 等敏感工具)

这是分层架构:复杂任务被分解,每一层专注自己的职责。

内存系统:单槽 vs 四层

OpenClaw 的极简主义

OpenClaw 采用单槽内存插件设计。内存就是一个插件槽位,你可以插入不同的实现:

  • 简单的键值存储
  • 向量数据库
  • 文件系统

这种设计的好处是简单可控。坏处是所有记忆都在一个抽象层级,没有区分”短期会话记忆”和”长期知识记忆”。

Hermes 的四层记忆

Hermes 实现了四层混合内存

┌─────────────────────────────────────┐│  Layer 1: Session (会话层)          │  SQLite + WAL + FTS5│  - 当前对话的上下文                  │  支持中文分词 + 模糊搜索├─────────────────────────────────────┤│  Layer 2: Memory (记忆层)           │  MEMORY.md 文件│  - 跨会话的持久知识                  │  § 分隔符 + 2200 字限制├─────────────────────────────────────┤│  Layer 3: Skill (技能层)            │  SKILL.md 文件│  - 可复用的过程知识                  │  YAML frontmatter + Markdown├─────────────────────────────────────┤│  Layer 4: Episodic (情景层)         │  会话搜索工具│  - 历史会话的情景记忆                │  FTS5 + LLM 摘要└─────────────────────────────────────┘

每一层都有不同的生命周期和访问模式:

  • 会话层:随对话结束而归档
  • 记忆层:跨会话持久,手动维护
  • 技能层:项目级共享,版本控制
  • 情景层:历史搜索,按需召回

这种设计更接近人类的记忆系统,但也更复杂。

执行模型:动态规划 vs 工具编排

两个项目的核心循环都是”LLM 驱动的工具调用”,但在细节上有差异。

OpenClaw 的工具编排

OpenClaw 的主循环是:

while True:    response = llm.call(messages, tools)    if response.tool_calls:        for tool in response.tool_calls:            result = execute(tool)            messages.append(result)    else:        return response.content

所有工具在同一层级,LLM 决定调用哪个。没有子 Agent,没有嵌套规划。

Hermes 的动态规划

Hermes 的主循环类似,但加入了预算控制中断机制

while api_call_count < max_iterations and budget.remaining > 0:if interrupt_requested: break    response = llm.call(messages, tools)if response.tool_calls:for tool in response.tool_calls:# 特殊处理:delegate_task 会派生子 Agent            result = handle_function_call(tool)            messages.append(result)        api_call_count += 1else:return response.content

关键区别在于 handle_function_call 内部:如果工具是 delegate_task,它会创建一个新的 AIAgent 实例,递归执行上述循环。

语言栈的影响:Python vs TypeScript

OpenClaw 的 TypeScript 优势

  • 类型安全
    :工具接口、消息格式、配置结构都有编译期检查
  • 异步原生
    :Node.js 的事件循环天然适合并发处理多个消息平台
  • 生态丰富
    :npm 生态的工具库、SDK 数量庞大

Hermes 的 Python 优势

  • AI 生态
    :PyTorch、Transformers、LangChain 等 AI 库都是 Python 优先
  • 脚本友好
    :工具函数可以直接用 Python 写,无需编译
  • 调试方便
    :pdb、print 大法、Jupyter 都可以直接用

这是一个经典的工程权衡:运行时安全 vs 开发效率

适用场景:如何选择?

选择 OpenClaw,如果你:

  1. 追求简单可控
    :扁平架构更容易理解和调试
  2. 前端背景
    :熟悉 TypeScript 和 Node.js 生态
  3. 多租户场景
    :OpenClaw 的插件边界更适合多用户隔离
  4. 快速原型
    :单槽内存 + 扁平工具,上手更快

选择 Hermes,如果你:

  1. 处理复杂任务
    :分层架构更适合多步骤、多角色的任务
  2. 需要深度记忆
    :四层记忆系统更适合长期运行的 Agent
  3. Python 技术栈
    :团队熟悉 Python,或有现成的 AI 代码库
  4. 需要子 Agent 协作
    :不同子 Agent 可以用不同模型、不同工具集

技术细节对比

工具注册机制

OpenClaw:插件在 plugins/ 目录下,每个插件声明自己的工具:

# plugin.yamlname:my-plugintools:-my_tool

Hermes:工具在 tools/*.py 中自注册:

# tools/my_tool.pyfrom tools.registry import registry@registry.register()defmy_tool(args):    ...

Hermes 的方式更灵活(运行时发现),OpenClaw 的方式更结构化(声明式配置)。

消息平台集成

两者都采用网关模式:一个统一的 Gateway 服务,通过适配器连接各平台。

架构相似,但 Hermes 的网关还支持钩子机制:可以在消息进入/离开时注入自定义逻辑。

配置管理

OpenClaw:单一配置文件 claw.yaml,所有设置集中管理。

Hermes:分层配置:

  • ~/.hermes/config.yaml
    :用户级配置
  • ~/.hermes/.env
    :API 密钥(敏感信息分离)
  • AGENTS.md
    :项目级 Agent 指令
  • SKILL.md
    :技能级配置

Hermes 的分层更灵活,但也更复杂。

社区与生态

OpenClaw

  • Star 数
    :372k
  • 核心团队
    :商业公司运作,有明确的路线图
  • 扩展生态
    :ClawHub 市场,官方迁移工具
  • 文档质量
    :完善,有中英文档

Hermes

  • Star 数
    :增长迅速(具体数据待查)
  • 核心团队
    :开源社区驱动
  • 技能生态
    :Skills 目录,用户可自建
  • 文档质量
    :AGENTS.md + 技能文档,开发者友好

总结:没有银弹

Hermes Agent 和 OpenClaw 的对比,本质上是两种架构哲学的对比:

维度
OpenClaw
Hermes Agent
架构哲学
扁平、简单、可控
分层、灵活、强大
记忆模型
单槽插件
四层混合
子 Agent
明确拒绝
原生支持
语言栈
TypeScript
Python
上手难度
较低
中等
上限高度
中等
较高

OpenClaw 是”少即是多”的践行者:通过拒绝嵌套,换取简单和可控。

Hermes 是”分层治之”的信徒:通过引入层次,换取灵活和强大。

两者没有绝对的高下,只有适合不适合。如果你的任务简单明确,OpenClaw 的扁平架构会让你如鱼得水。如果你的任务复杂多变,需要不同角色的 Agent 协作,Hermes 的分层架构会让你游刃有余。

最后,一个有趣的细节:OpenClaw 有官方的 Hermes 迁移工具,但 Hermes 没有 OpenClaw 迁移工具。这或许说明了一些问题——从简单到复杂容易,从复杂到简单难