Appearance
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 Agent | OpenClaw |
|---|---|---|
| 子代理并发 | 同步阻塞树(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_task、memory、send_message、execute_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_GUIDANCE 和 MEMORY_GUIDANCE 里):完成复杂任务后,立刻把解决思路提炼成技能文件写进 ~/.hermes/skills/;发现已有技能过时,执行 skill_manage(action='patch') 立刻修复。改进发生在当下,不在凌晨的批处理任务。
两种做法的取舍很清晰:
- Dreaming 擅长从大量历史数据里发现宏观规律,适合长期积累的知识整合
- Hermes 的实时写入更精准,今天解决的问题今天就进技能库,而且有自我修复能力——技能文件不会因为长期不维护而腐化
安全防护层
这是两个项目差距比较明显的一个方向,但各有侧重。
Hermes 的优势:在 agent/prompt_builder.py 里有一个 _scan_context_content() 函数,在把工作目录里的配置文件(AGENTS.md、.cursorrules、SOUL.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 格式写入 JSONLtrajectory_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 有写文件、执行命令等权限时,工作目录里的恶意 .cursorrules 或 AGENTS.md 就可能成为攻击载体。Hermes 是目前极少数在注入前做主动过滤的开源框架之一。
代码引用来自 hermes-agent v0.8.0 和 openclaw 截至 2026-04-10 的 main 分支。