Skip to content

Hermes Agent 和 OpenClaw 是目前开源 AI Agent 中功能最重叠的两个项目。本文从源码角度对比了四个关键维度:子代理并发(同步阻塞树 vs 异步推送树)、记忆改进时机(实时主动写入 vs 定时批量合成)、安全防护层(提示注入扫描+MCP 包 CVE 检查 vs 上下文压缩时的安全剥离)、以及 API 成本控制(per-turn 智能路由 vs 精确缓存分区)。两者各有所长,适合不同场景。

Hermes Agent vs OpenClaw:我读了两个开源 AI Agent 的源码,找到了真正的差距

2026年4月


OpenClaw 和 Hermes Agent 是目前开源 AI Agent 领域被讨论最多的两个项目。两者功能高度重叠:都支持十几个消息平台、都有记忆系统、都能自定义技能、都支持子代理并发。如果只看功能列表,你可能觉得差距不大。

但社区里持续出现一个声音:用过 Hermes 之后,很难回去用 OpenClaw。

我把两个项目都 clone 下来读了核心源码,试图找到差距真正在哪。以下是我的分析,包括 Hermes 比 OpenClaw 强的地方,以及 OpenClaw 比 Hermes 强的地方。

核心对比速览

维度Hermes AgentOpenClaw
子代理并发同步阻塞树(ThreadPoolExecutor,最多3并发,嵌套深度2)异步推送树(lane queue,父代理不阻塞,配置控制深度)
记忆改进时机任务完成后立即写入技能库,自我修复定时批量合成(Light/Deep/REM Dreaming,每6h/日/周)
提示注入防护10种正则 + Unicode隐形字符检测,直接过滤压缩时剥离 toolResult.details,防恶意负载传入 LLM
API 成本控制Per-turn 智能路由(短消息自动降级廉价模型)缓存分区标记(稳定 section 与动态内容分层)
MCP 安全OSV 漏洞库扫描安装包 CVE无对应实现
RL 数据飞轮轨迹自动写入 JSONL,与 Atropos RL 框架集成

子代理并发:两种根本不同的哲学

这是两个项目在架构层面差异最大的地方,几乎决定了各自适合什么样的使用场景。

Hermes 的子代理是同步阻塞树。父代理调用 delegate_task(tasks=[...]) 之后,通过 ThreadPoolExecutor(max_workers=3) 启动最多 3 个子代理,然后阻塞等待所有子代理完成,再把汇总结果放回对话历史。父代理的上下文只看到最终摘要,中间过程完全隔离。最大嵌套深度硬编码为 2,子代理被剥夺的工具列表也是硬编码的(delegate_taskmemorysend_messageexecute_code)。

OpenClaw 的子代理是异步推送树。每个 session 有自己独立的 lane queue,父代理发出 spawn 指令后立即返回,子代理在自己的 lane 里独立运行,完成后通过推送事件异步通知父代理。父子代理真正并发,互不阻塞。嵌套深度通过配置控制,cron job 内部操作有专门的 nested lane 避免死锁。

两种设计没有绝对优劣:

  • Hermes 的同步树更安全可预测,父代理始终掌控全局状态,适合需要严格协调的任务
  • OpenClaw 的异步推送树在长时间异步任务上更高效,但复杂度更高,需要开发者理解 lane 类型(main / cron / subagent / nested

记忆改进:主动写入 vs 睡眠合成

OpenClaw 有一套叫 Dreaming 的机制,设计思路明确在模拟人类睡眠期间的记忆巩固:

  • Light Dreaming:每 6 小时,提炼近期会话短期记忆
  • Deep Dreaming:每天凌晨 03:00,深度整合历史记忆
  • REM Dreaming:每周日 05:00,发现跨时间段的规律

每种 dreaming 有独立的 speed / thinking / budget / model 配置,还有 health score 驱动的自动恢复机制(health < 0.35 触发 Recovery Dreaming)。这套系统工程上做得相当扎实。

Hermes 的逻辑完全不同。代理的系统 prompt 里有明确的行为要求(写在 SKILLS_GUIDANCEMEMORY_GUIDANCE 里):完成复杂任务后,立刻把解决思路提炼成技能文件写进 ~/.hermes/skills/;发现已有技能过时,执行 skill_manage(action='patch') 立刻修复。改进发生在当下,不在凌晨的批处理任务。

两种做法的取舍很清晰:

  • Dreaming 擅长从大量历史数据里发现宏观规律,适合长期积累的知识整合
  • Hermes 的实时写入更精准,今天解决的问题今天就进技能库,而且有自我修复能力——技能文件不会因为长期不维护而腐化

安全防护层

这是两个项目差距比较明显的一个方向,但各有侧重。

Hermes 的优势:在 agent/prompt_builder.py 里有一个 _scan_context_content() 函数,在把工作目录里的配置文件(AGENTS.md.cursorrulesSOUL.md 等)注入系统 prompt 之前,先对其内容做提示注入扫描:10 种正则 pattern + 隐形 Unicode 字符检测。发现可疑内容,整块替换为 [BLOCKED: ...],不是警告,是直接过滤。

另外 Hermes 对 MCP 扩展包做 OSV 漏洞数据库扫描(tools/osv_check.py),安装第三方插件时检查已知 CVE。这在 OpenClaw 里都没有对应实现。

OpenClaw 的优势:在上下文压缩时,代码里有明确的 SECURITY 标注,专门剥离 toolResult.details 字段再送给摘要模型,防止把不可信的详细负载(可能包含恶意内容)传入 LLM。Hermes 没有等价的安全剥离。

随着 agent 获得越来越多的本地权限,这两个方向都会变成真实的攻击面。


提示缓存策略:两种不同的实现路径

Anthropic 的提示缓存(Prompt Caching)可以把 API 成本降低 90%,但条件苛刻:系统 prompt 在对话中必须保持不变。很多 agent 框架在设计时没有认真考虑这个约束,用户用着用着发现账单莫名高了一倍。

两个项目都认真对待了这个问题,但策略不同:

Hermes 的做法是"不让缓存失效":架构规定对话进行中禁止任何修改上下文的操作,记忆更新、技能注入、工具集切换只在会话开始时发生,中途锁定。唯一例外是经过专门设计的上下文压缩流程。

OpenClaw 的做法是"让失效的范围尽量小":在系统 prompt 里插入显式的 <!-- OPENCLAW_CACHE_BOUNDARY --> 分隔符,稳定的 section(工具能力、行为指导)放在边界上方,动态内容(heartbeat.md 等)放在下方,利用 Anthropic 的分层缓存机制最大化命中率。

两种方式都有效,Hermes 更激进(完全不动),OpenClaw 更灵活(精确控制哪部分可以变)。


Hermes 独有的两个设计

Per-turn 智能模型路由agent/smart_model_routing.py

对每条用户消息做轻量文本分析:消息短于 160 字符、词数少于 28 个、无代码块、无 URL、无复杂关键词——自动路由到配置的廉价模型。复杂消息才用主模型。

这是 per-turn 的动态切换,不是错误触发的 failover。日常闲聊用 Haiku,真正的代码任务用 Sonnet/Opus。对高频使用的人来说,这个差异在账单上会是可见的。OpenClaw 完全没有这个机制。

RL 数据飞轮

Nous Research 开发了 Hermes 系列大模型(在工具调用评测上长期排名靠前),这个背景解释了项目里一组不常被讨论的代码:

  • trajectory.py:每次成功对话以 ShareGPT 格式写入 JSONL
  • trajectory_compressor.py:对轨迹做 token 压缩,使其适合训练预算
  • tinker-atropos/:与 Atropos RL 框架的集成层,直接把 agent 轨迹送入模型训练

OpenClaw 没有任何与 RL 训练相关的代码。Hermes 既是产品,也是 Nous Research 的训练数据收集渠道——用户在用它完成工作,也在为下一代工具调用模型贡献数据。


哪个更适合你

如果你需要:

  • 丰富的插件生态和高度模块化的平台适配层
  • 异步子代理(父代理不阻塞)
  • 从长期历史数据里挖掘规律的记忆整合

OpenClaw 是更合理的选择。

如果你需要:

  • 技能库有自我修复能力,可以长期不手动维护
  • 主动的提示注入防护和 MCP 包安全扫描
  • Per-turn 智能模型路由控制 API 成本
  • 严格的提示缓存保护

Hermes 是更合理的选择。

两个项目都在快速迭代(Hermes v0.8.0 一个版本合并了 209 个 PR),功能差距会持续变化。但设计哲学上的差异——"定时批量合成 vs 实时主动改进"、"同步可预测 vs 异步高效"——不是一两个 PR 能弥合的。


FAQ

Q: Hermes Agent 和 OpenClaw 都是免费开源的吗?
A: 是的,两者都是开源项目。Hermes Agent 由 Nous Research 维护,OpenClaw 是独立开源项目。

Q: 从 OpenClaw 迁移到 Hermes 难吗?
A: 两者技能/记忆的存储格式不兼容,迁移需要手动整理。平台适配层的配置语法也不同。如果你只是想试用,建议并行部署一段时间再决定。

Q: 子代理并发数量上,Hermes 的 3 个限制是硬上限吗?
A: 是硬编码在 ThreadPoolExecutor(max_workers=3) 里的,不通过配置修改。OpenClaw 的 lane 数量理论上无上限,实际受宿主机资源约束。

Q: 提示注入攻击对 AI Agent 来说有多严重?
A: 当 agent 有写文件、执行命令等权限时,工作目录里的恶意 .cursorrulesAGENTS.md 就可能成为攻击载体。Hermes 是目前极少数在注入前做主动过滤的开源框架之一。


代码引用来自 hermes-agent v0.8.0 和 openclaw 截至 2026-04-10 的 main 分支。