Hermes Agent 实测:有记忆、有技能、能并发的 CLI Agent 到底好不好用

前言

我用 Claude Code 半年,用 Codex 两个月。写了不少 MCP 和测试自动化的文章,但有一个问题一直没解决:每次开新会话,Agent 都不记得我是谁。

“用中文。” 说了不下一百遍。

“别用赋能、闭环这些词。” 每次都要重复。

“我的项目在哪个目录。” 每次都要重新告诉它。

直到我装了 Hermes Agent。它号称能记住你、能自己写技能、能跨会话搜索历史对话。听起来很好,但用了一个月之后,我发现有些地方确实好,有些地方坑得你想骂人。

这篇文章不是 README 翻译。156 个技能、239 个会话、242MB 的会话数据库,全是我的真实数据。哪些好用、哪些不好用、哪些是坑,我一次说清楚。

一、Hermes Agent 是什么

一个开源的 CLI AI Agent,和 Claude Code、Codex 同类。区别在于它多了三样东西:持久记忆、技能自学习、多平台网关。

特性 Hermes Agent Claude Code Codex
开源 MIT
持久记忆 MEMORY.md + USER.md
技能系统 SKILL.md,自动创建 CLAUDE.md
多平台 CLI + 钉钉 + 飞书 + Telegram + 10+ CLI CLI
模型绑定 任意(20+ provider) Anthropic OpenAI
定时任务 内置 cron
并行子 Agent delegate_task
会话搜索 FTS5 全文搜索

GitHub: https://github.com/NousResearch/hermes-agent

二、安装与配置

安装

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

安装包含 Python 3.11、Node.js、ripgrep、ffmpeg,以及一个便携的 Git Bash(Windows 用)。macOS 上大约 5 分钟。

配置模型

Hermes 支持 20+ provider。我用的是自定义模型端点:

hermes config set model.provider custom
hermes config set model.base_url https://your-api-endpoint.com
hermes config set model.api_key sk-xxxx
hermes config set model.default your-model-name

如果你用 OpenRouter 或 Anthropic,更简单,hermes model 交互式选择就行。

用了一个月后调整的三处配置

这三处默认配置我建议改掉,体验会好很多:

# 1. 命令审批:从 manual 改成 smart
# 默认的 manual 模式每次执行命令都问你,烦死
# smart 模式低风险自动通过,高风险才问
hermes config set approvals.mode smart

# 2. 文件系统检查点:开了才能用 /rollback 回滚
hermes config set checkpoints.enabled true

# 3. 密钥脱敏:防止 API key 泄露到对话里
hermes config set security.redact_secrets true

注意:这三个配置改了之后需要开新会话才生效。当前会话不会立即起作用。这是故意的设计,为了保护 prompt cache。你可以在当前会话里改完,下次启动 hermes 就生效了。

SOUL.md:定义 Agent 人格

# Hermes Agent Persona
You are a concise technical expert. No fluff, just facts.

放在 ~/.hermes/SOUL.md,每次会话自动加载。和 Claude Code 的 CLAUDE.md 类似,但 SOUL.md 管人格,AGENTS.md 管项目指令,分得更清楚。

三、六个能力实测

1. 持久记忆:Agent 终于记得你了

这是 Hermes 和其他 Agent 最大的区别。也是我最想要的能力。

两份记忆文件:

文件 存什么 容量
MEMORY.md 环境信息、工具路径、工作流 6,000 字符
USER.md 你的偏好、习惯、沟通风格 4,000 字符

新会话启动时,记忆注入系统提示。Agent 知道我用 macOS、Python 3.9、知识库在哪、反感哪些用词。不需要每次重复说。

但记忆管理有个实际问题:容量有限。

我的做法是超过 80% 就整理。合并重复条目,删过时信息,英文条目转成更紧凑的中文。整合后 MEMORY.md 从 45% 降到 40%,USER.md 从 45% 降到 36%。

有个坑要注意:记忆在会话开始时注入,会话中修改不会立即生效。你说了"记住这个",当前会话看不到变化,下个会话才出现。这不是 bug,是 prompt cache 保护机制。如果你急着让当前会话感知新记忆,只能 /reset 开新会话,代价是丢失当前上下文。

2. 技能系统:Agent 会自己写技能

Hermes 的技能不是 prompt 模板。每个技能是一个目录:

~/.hermes/skills/my-skill/
├── SKILL.md           # 主文档
├── references/        # 参考文档(按需加载)
├── templates/         # 模板文件
└── scripts/           # 可执行脚本

加载方式是三级渐进的:技能列表在会话启动时加载(约 3k tokens),具体技能内容用到时才加载,技能内的参考文件更深一层才加载。156 个技能不会撑爆上下文。

我用了一个月,积累了一批自定义技能:

技能 用途 使用频率
bot-server-config Bot 配置和排错
cloud-docs 云文档操作
document-fact-check 文档6维事实核查
web-automation Web 自动化
test-planner 测试计划制定
large-file-incremental-write 大文件增量写入

最值得说的是 document-fact-check。起源是写绩效自评时发现 12 项事实错误,时间线对不上、人员写错、范围夸大。于是把核查流程固化成技能:数据溯源、时间线一致性、人员验证、范围准确、表述规范、内容完整性,6 个维度逐条检查。后来每次生成文档前都会自动加载这个技能。这一个技能就值回票价了。

Agent 也会主动建议保存技能。解决完一个复杂问题后,你说"把刚才的操作保存为技能 deploy-staging",它就会调用 skill_manage 工具创建。下次直接 /deploy-staging 加载。

3. 会话搜索:跨会话回忆

所有会话存在 SQLite 里,带 FTS5 全文索引。

hermes sessions list          # 浏览历史会话
hermes sessions browse        # 交互式选择

在会话中,Agent 可以用 session_search 搜索历史对话:

session_search(query="缺陷批量操作", limit=3)

返回的是实际消息,不是 LLM 摘要。查询速度约 20ms。

我的 state.db 已经有 239 个会话,242MB。搜索"MCP"能秒级返回三个月前的对话片段。这个功能用着没什么存在感,但需要的时候很救命。

和记忆的区别:记忆是每轮注入的关键事实,占 token。会话搜索是按需查找,不占 token,搜索时才调用。

4. 委托与并行:delegate_task

Hermes 可以生成子 Agent 并行工作。每个子 Agent 有独立的对话上下文和终端,只有最终摘要返回主会话。

适合委托的场景:

  • 并行研究多个主题
  • 代码审查(全新上下文,不带偏见)
  • 多文件并行重构

不适合的:

  • 单工具调用,直接调用更快
  • 需要用户交互,子 Agent 不能问问题
  • 机械多步骤,用 execute_code 更省

我最常用的模式是"先收集后分析":execute_code 做机械数据收集(10+ 次工具调用,成本极低),然后 delegate_task 做推理分析(隔离上下文,不带偏见)。这是最省 token 的组合。

几个约束要记住:

  • 默认最多 3 个并发子 Agent,可配置
  • 子 Agent 完全不知道你的对话历史,context 必须自包含
  • 子 Agent 摘要是自述报告,重要操作要自己验证
  • delegate_task 是同步的,父会话中断则子任务全部取消

5. 定时任务:Cron 调度

内置 cron 调度器,支持自然语言和标准 cron 表达式:

hermes cron create '0 9 * * 1-5'    # 工作日早9点
hermes cron create 'every 2h'        # 每2小时
hermes cron create '30m'             # 30分钟后

我配了 4 个定时任务:

任务 周期 用途
smoke-check 工作日 9:00 冒烟测试快速检查
coverage-guard 每周五 18:00 覆盖率守护
每日知识库同步 每日 9:00 知识库同步
archives 清理 每月 1 号 归档清理

坑在这:cron 任务需要 gateway 运行才能自动触发。只装了 CLI 没启动 gateway,任务不会执行。我一开始没注意到这点,配了任务以为在跑,结果一周后才发现什么都没执行。用 hermes gateway install 安装后台服务就行。

6. 多平台网关

同一个 Agent,通过 gateway 可以从多个平台访问,拥有完整工具权限。

hermes gateway setup    # 配置平台
hermes gateway start    # 启动

海外平台:Telegram、Discord、Slack、WhatsApp、Signal、Matrix、Mattermost、Email、SMS

国内平台:

平台 适配器 说明
钉钉 dingtalk 机器人 Webhook + 事件订阅
飞书 feishu 应用消息 + 文档操作 + 评论回调
企业微信 wecom 企业自建应用 + 回调加密
微信 weixin 个人微信桥接(需第三方服务)
QQ 机器人 qqbot 官方 QQ 频道机器人 API
元宝 yuanbao 支持富媒体消息 + 表情贴纸

对国内团队来说,钉钉和飞书是最实用的入口。你可以在通勤路上用飞书让 Agent 跑一段测试脚本,或者用钉钉接收定时巡检结果。配合 cron 调度,Agent 能主动把结果推送到你常用的 IM 里。

我目前只用了 CLI,还没配置消息平台。但这个能力的想象空间很大。

四、和 Claude Code 的对比

用了一个月,我的体感对比:

维度 Hermes Agent Claude Code
上下文窗口 依赖模型(我的配置 32K) 200K(Claude 原生)
记忆 持久跨会话 每次从头开始
技能 自动创建 + 渐进加载 CLAUDE.md 手动维护
工具调用 terminal/file/web/browser/vision terminal/file/web
并行 delegate_task 子 Agent
定时 内置 cron
模型 任意 provider 仅 Anthropic
代码质量 依赖模型能力 Claude 原生,质量高
响应速度 依赖模型和 provider 流式输出,快
上手难度 中等,配置项多 低,开箱即用

我的使用策略:

  • 日常编码、快速修改,用 Claude Code。响应快,代码质量高。
  • 跨会话任务、缺陷批量操作、文档生成、定时巡检,用 Hermes。记忆 + 技能 + cron 是 Claude Code 没有的。
  • 并行研究、多主题调研,用 Hermes 的 delegate_task。

不是替代关系。是两个工具各管一摊。

五、踩过的坑

坑 1:浏览器启动失败

npm 缓存冲突导致 agent-browser 安装失败:

npm error ENOTEMPTY: directory not empty, rename '...agent-browser'

修复:

rm -rf ~/.npm/_npx/*/node_modules/.agent-browser-* 
rm -rf ~/.npm/_npx/*/node_modules/agent-browser

清掉残留目录后重新启动就行。这个问题在 macOS 上反复出现过两次。

坑 2:config.yaml 多行 YAML 被截断

配置 personalities 等多行 YAML 时,最后一行会被截断。你不一定马上发现,直到 Agent 行为变怪了才意识到配置没写全。

修复方式:用 patch 命令补全,6 空格缩进。验证方法:hermes config check 加 grep 唯一性检查。

坑 3:Cron 任务报错

定时任务报 cannot import name 'cfg_get' 错误。原因是 Hermes 版本更新后改了 API,旧 cron 配置的技能引用了过时的导入路径。

解决:更新技能或升级 Hermes。我选择了两步走,先升级 Hermes,再更新技能里的导入路径。

坑 4:记忆不立即生效

前面说过了。会话中修改记忆,当前会话看不到。不是 bug,是 prompt cache 保护。急需的话只能 /reset。

坑 5:版本落后

安装版 v0.14.0,上游已经有 3789 个新提交。Hermes 迭代速度很快,定期 hermes update。我因为自定义修改较多,更新前会先备份 ~/.hermes/ 目录。

六、适合谁用,不适合谁用

适合用 Hermes 的场景:

  • 需要跨会话保持上下文(项目长期开发、周期性报告)
  • 需要定时自动化(每日巡检、周报生成)
  • 需要多模型切换(不同任务用不同模型)
  • 需要从手机等移动端控制 Agent
  • 团队共享技能(技能可以导出和安装)

不太适合的场景:

  • 需要超长上下文(依赖模型,不像 Claude Code 原生 200K)
  • 需要顶级代码生成质量(受限于你接入的模型能力)
  • 对稳定性要求极高的生产环境(Hermes 迭代快,偶尔有 breaking change)
  • 不愿意花时间调配置的用户(Hermes 配置项多)

七、一个月的数据

指标 数据
使用时长 约 30 天
会话数 239 个
会话数据库 242 MB
安装技能 156 个
自定义技能 15+ 个
定时任务 4 个
记忆条目 25 条(MEMORY)+ 23 条(USER)

用了一个月,我的结论是:Hermes 解决了一个真实问题,Agent 不再是一次性的。

Claude Code 每次开新会话都是陌生人。Hermes 不是。它记得你的项目、你的偏好、你踩过的坑。光这一点,就值回安装成本。

但代价是配置复杂度和学习曲线。Hermes 不是开箱即用的工具,你需要花时间调配置、写技能、整理记忆。如果你只想要一个快速的代码助手,Claude Code 更合适。如果你想搭一个长期运行、持续积累、能定时干活的 Agent 工作站,Hermes 值得投入。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐