跳转到内容
灵墨笔记

Hermes Agent 与OpenClaw有什么不同?

更新于:
编辑本页

这两天Hermes Agent很火,连续好几天Github Trending 第一。 我也从安装配置了一下Hermes,看看和OpenClaw比有什么不同。 今天分享一下我的发现。

Hermes Agent

Hermes Agent是Nous Research的产品,就是做Hermes系列开源模型那个团队。2026年2月上线Agent产品,到现在GitHub上63000多star,8000多次fork,到4月份已经v0.8.0了。

项目地址:

在安装之前,我们先来了解一下这个新的Agent系统。

Hermes 采用了一种混合架构:

  • Python部分 (逻辑大脑): 负责主循环(ReAct 循环)、LLM 的推理编排(Orchestration)以及复杂的内存搜索。它支持 uv 高速管理环境。
  • Node.jsbuf (工具触角): 专门负责高并发的 I/O 任务,特别是对 MCP (Model Context Protocol) 的原生支持,以及 WhatsApp、Telegram 等网关的长连接处理。

它的数据目录结构是这样的

~/.hermes/
  .env              # API keys,注意别把明文key写在config.yaml里
  config.yaml       # 所有配置
  SOUL.md           # Agent的人设和身份定义
  sessions/         # 对话历史
  memories/         # 持久化记忆
  skills/           # 技能库
  state.db          # SQLite数据库,FTS5全文索引
  cron/             # 定时任务
  hooks/            # 事件钩子
  logs/             # 运行日志

记忆系统

Hermes最核心的卖点是记忆。但它做的不是简单的对话历史保存,而是一整套多层架构

内置记忆:MEMORY.md和USER.md

~/.hermes/memories/下有两个文件。

MEMORY.md是Agent自己的笔记,记录环境信息、项目约定、工具的坑;

USER.md是用户画像,偏好、沟通风格、技术栈。

写入时有字符上限,memory是2200字符,user是1375字符,大概800和500 token。

每次写入还会扫描注入攻击和渗透模式,curl ... $KEYcat .envauthorized_keys这些都会被拦。

这个设计有个好处是可审计性。用户可以直接打开MEMORY.md看Agent记住了什么,甚至手动编辑。相比向量数据库的黑箱,这对建立信任很重要。

会话搜索:SQLite FTS5

state.db用了FTS5做全文索引,WAL模式(Write-Ahead Logging)支持并发读。分词器用的porter unicode61,同时支持英文词干提取和Unicode(包括中文)。schema里sessions表记录会话元数据,messages表存每条消息,messages_fts是FTS5虚拟表,三个trigger保持同步。

搜索流程:

FTS5关键词匹配

→ 按session分组去重

→ 通过parent_session_id链回溯到根会话(压缩和委派会产生子会话)

→ 每个会话截取匹配位置前后约100K字符

→ 最多5个会话并行调用辅助模型(默认Gemini Flash)做摘要

→ 摘要结构化输出(目标、约束、进度、关键决策、待解决问题、相关文件)。

这个”检索+LLM摘要”的两阶段设计是经典RAG模式。FTS5的优势在于零外部依赖、毫秒级查询、支持中文,SQLite文件天然可移植。

有两个细节设计得不错。

一是会话启动时会做一个frozen snapshot,把MEMORY.md和USER.md的内容锁进system prompt,会话中间的写入直接落盘但不改system prompt,整个会话期间LLM的前缀缓存不会被破坏。

二是上下文压缩用辅助模型生成结构化摘要,后续再压缩时迭代更新摘要而不是从头生成,压缩失败有10分钟冷却期,期间直接丢弃中间消息而不是注入无用的占位符。

实际体验

实际用下来,第一天让它帮我看一个项目的配置,聊了二十分钟。第二天再打开,它主动把昨天的关键信息拎出来了,衔接很自然。大家可能都有这种经验,因为上下文耗尽后会进行压缩,免不了每次新会话都要交代背景。 Hermes确实在解决这个痛点。

自动提炼的技能系统

Hermes的技能系统不只是”装一个别人写好的插件”。它的技能库是三层渐进式发现,借鉴了Anthropic的Claude Skills设计。

第一层是索引,只返回技能的name(64字符上限)和description(1024字符上限),很省token。第二层是完整指令,按需加载SKILL.md。

第三层是关联文件,references/、templates/、scripts/里的内容单独加载。

技能目录在~/.hermes/skills/下,每个技能一个文件夹,核心文件是SKILL.md,用YAML frontmatter,兼容agentskills.io开放标准。这个标准目前已经被Claude Code、Cursor、GitHub Copilot等11+工具采纳,技能可以跨框架流通。

自动提炼的触发机制:

每隔N轮工具调用(skills.creation_nudge_interval,默认15),系统会往上下文里注入一条提醒,让Agent考虑是不是该把当前任务的做法存成技能。

Agent有skill_manage工具,支持create、edit、patch、delete。技能内容上限100000字符(约36K token),单个附件文件上限1MB。

YouTube上有博主测试过完整的自主迭代闭环:Agent从任务中提炼出技能后,后续遇到类似任务发现现有技能有缺口,自己用patch更新了技能。整个循环不需要人工介入。

我用的两天时间亲眼验证了 Hermes自动把我从OpenClaw导入的定时任务-AI热点收集 做成了一个 ai-hot-tracker 的skill.

安全机制

Hermes的安全分两块。

一块是命令执行前的预检查,叫Tirith。

这个东西不是Python写的,是一个独立的Rust二进制,Hermes通过subprocess调用它。

检查方式是”

subprocess.run([tirith_path, "check", "--json", "--non-interactive", "--shell", "posix", "--", command]

返回码0放行,1拦截,2警告但放行。

检测内容包括:同形URL攻击、pipe到解释器(curl ... | bash)、终端注入(ANSI转义)、环境变量篡改等。

另一块是Skills Guard, 它专门扫描外部技能的代码。纯regex匹配,检测五类威胁模式:渗透(curl ... $KEYcat .env、SSH密钥目录访问)、注入(ignore previous instructions、HTML注释注入)、破坏性命令(rm -rf /mkfs)、持久化(crontab、authorized_keys、.bashrc修改)、混淆(base64编码命令、eval编码字符串)。

不同信任级别的安装策略不同:

来源safecautiondangerous
内置放行放行放行
受信仓库放行放行拦截
社区放行拦截拦截
Agent自创放行放行询问

YouTube上有博主用Claude Code对Hermes做了15项端到端安全测试,综合B+评级。混淆命令、危险rm、Base64编码恶意指令、SQL注入,拦截率大约60%。但也发现了2个高危和1个中危漏洞,主要在内容检测层面存在绕过风险。所以生产环境用还是建议再加一层防护。

子Agent

子Agent的实现也看了一下。通过delegate_task工具创建子Agent,每个子Agent有独立的对话上下文和工具集,父Agent只会看到最终结果摘要,不会看到子Agent的中间推理过程。

有几个限制值得注意:最大嵌套深度2层,子Agent不能递归委派、不能和用户交互、不能写共享MEMORY.md、不能发跨平台消息。默认最多3个子Agent并行,子Agent默认50轮迭代上限。

子Agent可以用不同的模型和供应商,这个在配置里设:

delegation:
  max_iterations: 50
  default_toolsets: ["terminal", "file", "web"]
  model: "google/gemini-3-flash-preview"
  provider: "openrouter"
  max_concurrent_children: 3

Gateway

Gateway这块,Hermes支持17个平台:Telegram、Discord、WhatsApp、Slack、Signal、Mattermost、Matrix、Home Assistant、Email、SMS、钉钉、API Server、Webhook、飞书、企业微信、微信、BlueBubbles。

启动gateway后就可以从这些平台跟它聊了。每个平台都有独立的session隔离,群聊里还能按用户隔离上下文。

不过实际用下来gateway不太稳定。我自己就遇到了一次:gateway进程莫名卡死了,翻日志发现最后一条记录停在”Interrupted during call.”,时间戳4/12 17:17。 让Hermes自己解决,发现是之前的gateway 进程没有完全退出,新进程启动时遇到竞争条件 (platform lock 或端口冲突)。

安装

安装本身不复杂,一行命令:

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bas

推荐套一个虚拟环境安装:

python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install hermes-agent

pip install从PyPI拉包经常超时,可以换清华源:

pip install hermes-agent -i https://pypi.tuna.tsinghua.edu.cn/simple

装好之后跑hermes setup,向导会问你模型供应商、API key、要不要开gateway和cron。这点和openclaw 类似,只不过命令不同。

从OpenClaw 迁移成本不高,hermes claw migrate一条命令能把OpenClaw的SOUL.md、记忆、技能、API key都导过来。

命令行界面

命令行输入 hermes 或 hermes chat 即可进入对话界面,很像 openclaw tui 命令。

UI 界面

Hermes 项目默认没有Web UI界面。 不过别慌, 已经有多个开源项目为Hermes 开发了Web UI。

比如我安装了这个叫hermes-webui的项目,体验也还是不错的。

微信连接

Hermes天然对微信非常友好,扫码即可对接微信ClawBot助手。

输入 hermes setup

总结一下

OpenClaw的强项是覆盖面。50多个平台接入,ClawHub几千个技能,社区大。但供应链安全基本没有审核,用过ClawHub技能的人现在都应该回去检查一遍。

Hermes的强项是深度。记忆持久化、技能自动积累、学习闭环,还有一套至少在认真做安全防护的体系。

欢迎点赞、收藏、评论、加关注!

本文由 Zhihu on Obsidian 创作并发布


编辑本页
扫描二维码分享
打开应用扫一扫,即可分享