hermes-agent:把 agent 的自我进化做成闭环
hermes-agent 是 Nous Research 用 Python 写的自改进 agent:内置学习闭环、七种终端后端、单网关接入六个消息平台,一条命令即可安装。
大多数 agent 框架的终点是「能调用工具」。hermes-agent 的起点是「调用完之后,它记住了什么」。
这是 Nous Research 给自家 agent 划的差异线:README 第一句就写「the only agent with a built-in learning loop」——它从经验里生成 skill,在使用中改进 skill,主动提醒自己把知识落盘,还能检索自己过去的对话。换句话说,它把「记忆」当成一等公民,而不是上下文窗口里的一段临时文本。
这条线决定了它的架构长什么样。
一个 agent,两条入口,三层能力
先看它怎么被使用。Hermes 有两个入口:终端 TUI(hermes)和消息网关(hermes gateway)。两者共享同一套 slash 命令——/new、/model、/personality、/retry、/undo、/compress、/usage、/insights、/skills、/stop。这个设计很说明问题:agent 不是绑在某个终端会话上的进程,而是一个可以远程对话的服务。
按 README 的能力描述,可以把它拆成四层:
| 层 | 核心组件 | 职责 |
|---|---|---|
| 交互层 | 终端 TUI、Messaging Gateway | 多行编辑、slash 命令补全、会话历史、中断并重定向、流式工具输出;Telegram/Discord/Slack/WhatsApp/Signal/Email 单一网关进程接入,支持语音备忘转写与跨平台会话延续 |
| 编排层 | 主 agent、subagent、cron scheduler、RPC 工具调用 | 派生隔离子 agent 并行处理工作流;用 Python 脚本通过 RPC 调工具,把多步流水线压成零上下文开销的回合;内置 cron 定时任务,自然语言描述即可投递到任意平台 |
| 学习层 | skill 生成与自改进、agent 策展记忆、FTS5 会话检索 + LLM 摘要、Honcho 用户建模 | 复杂任务后自主创建 skill,使用中持续改进;周期性 nudges 促使知识持久化;跨会话召回;构建跨 session 的用户模型;兼容 agentskills.io 开放标准 |
| 执行层 | 七种终端后端 | local、Docker、SSH、Singularity、Modal、Daytona、Vercel Sandbox;Modal 与 Daytona 提供 serverless 持久化,空闲时环境休眠、按需唤醒 |
请求的流转大致是:消息从 TUI 或网关进入 → 编排层决定是否需要派生 subagent 或触发工具 → 执行层把工具调用落到某个终端后端 → 学习层在任务结束后判断是否生成/更新 skill、是否写入记忆。
值得注意的是执行层的设计取向。七种后端不是凑数:local 和 Docker 覆盖日常,SSH 覆盖远程机器,Modal 与 Daytona 的 serverless 持久化让 agent 环境能在空闲时休眠、按需唤醒,README 明确说这可以跑在「$5 VPS、GPU 集群,或空闲时几乎不花钱的 serverless 基础设施」上。配合消息网关,「在 Telegram 里跟云端 VM 上的 agent 对话」是官方给出的标准场景。
装起来只要一行
Linux、macOS、WSL2:
bashcurl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
Windows 原生(PowerShell,不需要 WSL):
powershelliex (irm https://hermes-agent.nousresearch.com/install.ps1)
装完之后:
bashsource ~/.bashrc # 或 source ~/.zshrc hermes # 开始对话
日常命令集中在 hermes 这一个入口下:
bashhermes # 交互式 CLI,开始对话 hermes model # 选择 LLM provider 与模型 hermes tools # 配置启用哪些工具 hermes config set # 设置单项配置 hermes config get # 打印单项配置 hermes gateway # 启动消息网关(Telegram、Discord 等) hermes setup # 完整安装向导,一次配好所有东西 hermes claw migrate # 从 OpenClaw 迁移 hermes update # 更新到最新版本 hermes doctor # 诊断问题
模型侧不锁定供应商:Nous Portal、OpenRouter、OpenAI、自建 endpoint 都行,用 hermes model 切换,不改代码。如果不想分别收集模型、网页搜索、图像生成、TTS、云浏览器的五套 API key,可以用 hermes setup --portal 走 OAuth 登录 Nous Portal,一次订阅覆盖 300+ 模型和 Tool Gateway。README 强调 gateway 是 per-backend 的,不是全有或全无——你仍然可以按工具自带 key。
Windows 用户会遇到一个具体的坑:部分杀毒软件会把 Hermes 捆绑的 uv.exe(Astral 的 Rust Python 包管理器)误判为恶意软件。README 给了一段 PowerShell 验证流程——用 gh attestation verify 校验 uv 官方 release 的 attestation,再比对文件哈希。确认无误后,白名单要加文件夹而不是文件哈希,因为 Hermes 每次更新都会换掉 uv 的哈希。
它站在哪
把同主题的项目摆在一起,定位差异就清楚了:
| 项目 | 语言 | 星标(快照) | 定位 |
|---|---|---|---|
| hermes-agent | Python | 约 25.5 万 | 自改进 agent:学习闭环 + 多平台网关 + 七种终端后端 |
| ECC | JavaScript | 约 27.7 万 | 给 Claude Code、Codex、Cursor 加装 skills 与记忆层的性能优化系统 |
| AutoGPT | Python | 约 18.8 万 | 面向所有人的 LLM 应用构建平台,任务拆解 + 工具调用 + 记忆串成 workflow |
| firecrawl | TypeScript | 约 19.1 万 | 网页抓取解析成 Markdown/JSON 的 API,给 agent 和 RAG 喂实时内容 |
| ollama | Go | 约 18.3 万 | 本地一条命令跑模型,CLI + SDK |
| prompts.chat | HTML | 约 17.3 万 | 社区 prompt 分享与自托管平台 |
ECC 和 hermes-agent 最接近,但方向相反:ECC 是给别人家的 agent 加装 skills 和记忆层,hermes-agent 是自己就是一个完整的 agent 运行时——TUI、网关、调度器、执行后端全在仓库里。AutoGPT 同样是 Python 的自主 agent,重心在「给一个目标,自己规划步骤」;hermes-agent 的重心在「任务做完之后,它有没有变强」。firecrawl 和 ollama 是上下游:一个供数据,一个供本地模型,都不是 agent 框架本身。
谁该看它
如果你的 agent 只需要在笔记本上跑一次任务,hermes-agent 的七种后端和 cron 调度是过剩的。但如果你的场景是「一个长期存在、从多个聊天窗口都能找到、会自己攒经验」的助手,它的设计是围绕这个场景长的:网关解决「在哪找到它」,serverless 后端解决「它住在哪」,学习闭环解决「它为什么越用越懂你」。
仓库用 MIT 许可,Python 编写,topics 里同时挂着 anthropic、openai、claude、codex——它不打算在模型层选边。
- 源码:github.com/NousResearch/hermes-agent
- 官网:hermes-agent.nousresearch.com
- 文档:hermes-agent.nousresearch.com/docs
安装脚本会顺带拉起 Python 3.14、Node.js、npm、ripgrep、FFmpeg 和 Python 依赖;Android/Termux 走单独的签名 APT 仓库(stable 与 canary 两个 channel),不适用桌面/服务器安装脚本。这些细节 README 都写明了,说明它认真对待「跑在任何地方」这句话。