双雄对决:Hermes Agent 与 OpenClaw 的架构哲学之争
当两个 37 万 Star 的 AI 助手项目在 GitHub 上相遇,它们选择了截然不同的道路。
缘起:两个”个人 AI 助手”的诞生
2026 年,AI Agent 领域迎来了一场静悄悄的革命。两个项目几乎同时崛起,它们都宣称要做”你的个人 AI 助手”,都支持 20+ 消息平台,都有工具系统和技能市场,都在 GitHub 上收获了超过 37 万颗星。
它们就是 Hermes Agent 和 OpenClaw。
但当你深入它们的代码,会发现一个惊人的事实:这两个看似相似的项目,在架构哲学上走向了两个极端。
第一眼:惊人的相似
打开两个项目的 README,你会觉得它们是双胞胎:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
甚至 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_task、memory等敏感工具)
这是分层架构:复杂任务被分解,每一层专注自己的职责。
内存系统:单槽 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,如果你:
- 追求简单可控
:扁平架构更容易理解和调试 - 前端背景
:熟悉 TypeScript 和 Node.js 生态 - 多租户场景
:OpenClaw 的插件边界更适合多用户隔离 - 快速原型
:单槽内存 + 扁平工具,上手更快
选择 Hermes,如果你:
- 处理复杂任务
:分层架构更适合多步骤、多角色的任务 - 需要深度记忆
:四层记忆系统更适合长期运行的 Agent - Python 技术栈
:团队熟悉 Python,或有现成的 AI 代码库 - 需要子 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 是”分层治之”的信徒:通过引入层次,换取灵活和强大。
两者没有绝对的高下,只有适合不适合。如果你的任务简单明确,OpenClaw 的扁平架构会让你如鱼得水。如果你的任务复杂多变,需要不同角色的 Agent 协作,Hermes 的分层架构会让你游刃有余。
最后,一个有趣的细节:OpenClaw 有官方的 Hermes 迁移工具,但 Hermes 没有 OpenClaw 迁移工具。这或许说明了一些问题——从简单到复杂容易,从复杂到简单难。
夜雨聆风