Hermes Agent 深度评测 2026:一个能自我改进、真正记得你的 AI 智能体
Hermes Agent 深度解析 2026:一个能自我改进、真正记得你的 AI 智能体 你可能已经在 GitHub Trending 上看到过 Hermes Agent —— 73,000+ 星标,并且还在快速增长。它由 Nous Research(也就是推出 Hermes 和 Nomos...
Utilo Team
4/15/2026

Hermes Agent 深度解析 2026:一个能自我改进、真正记得你的 AI 智能体
你可能已经在 GitHub Trending 上看到过 Hermes Agent —— 73,000+ 星标,并且还在快速增长。它由 Nous Research(也就是推出 Hermes 和 Nomos 模型系列的那个实验室)打造,是一个开源的 AI 智能体,可以运行在你自己的硬件上。它不是一个聊天机器人的包装层,也不是一个 IDE 插件。这是一个完整的自主智能体,拥有记忆、任务调度、工具使用以及一个能随着运行时间增长而不断优化的学习循环。
这篇不是新闻稿复述,而是一次实用的深度解析:Hermes 到底能做什么、如何设置、哪些地方好用、哪些地方不好用,以及它是否值得你花时间。这里描述的每个功能都附带一个你今天就能上手的真实使用场景。
Hermes Agent 到底是什么
Hermes Agent 是一个自托管的 AI 智能体,它住在你的服务器上(或者笔记本电脑,甚至一台 5 美元的 VPS 上),通过终端、Telegram、Discord、Slack、WhatsApp、Signal 等超过 15 个平台,借助一个统一的网关进程与你对话。它可以使用你指定的任何 LLM:OpenAI、Anthropic、DeepSeek、Nous Portal、拥有 200+ 模型的 OpenRouter,或者你自己的本地端点。
它和“又一个智能体框架”最大的不同点在于:它有一个封闭的学习循环。它能跨会话记住事情,从复杂任务中创建可复用的技能,在使用中改进这些技能,并随着时间的推移建立起关于你的个人档案。大多数智能体每次对话都从零开始,而 Hermes 会积累上下文。
它是 MIT 许可的,如果你要基于它进行二次开发,这一点很重要。
关键数据:
- 73,600+ GitHub 星标(截至 2026 年 4 月)
- 在 4 个注册库中拥有 647 个技能(79 个内置,47 个可选,521 个社区贡献)
- 通过一个 gateway 支持 15+ 种消息平台
- 6 种 terminal 后端:local、Docker、SSH、Daytona、Singularity、Modal
- 最小上下文要求:64K tokens(低于这个标准的模型在启动时会被拒绝)
安装:60 秒搞定,不开玩笑
# 一行命令安装 —— 支持 Linux、macOS、WSL2,甚至通过 Termux 在 Android 上安装
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
# 重新加载你的 shell
source ~/.bashrc # 或者: source ~/.zshrc
# 开始聊天
hermes
安装脚本会搞定所有事情:Python 3.11(通过 uv,无需 sudo)、Node.js v22、ripgrep、ffmpeg。唯一的先决条件是 git。
安装后,你会得到一套 CLI 命令,涵盖了大部分配置:
hermes model # 交互式选择你的 LLM 供应商
hermes tools # 启用/禁用工具组
hermes setup # 完整的设置向导(一次性搞定所有事情)
hermes gateway # 启动消息网关
hermes doctor # 诊断问题
hermes update # 更新到最新版本
在 Android 上也能跑。 Termux 有专门的安装路径,并带有一个精选的 .[termux] 额外依赖包,它会跳过与 Android 不兼容的语音相关依赖。你真的可以从手机上运行一个 AI 智能体。
选择模型供应商
Hermes 不会把你锁定在任何一家供应商上。运行 hermes model 并从列表中选择:
| 供应商 | 简介 | 认证方式 |
|---|---|---|
| Nous Portal | 订阅制,零配置 | OAuth 登录 |
| OpenAI Codex | ChatGPT OAuth,Codex 模型 | Device code auth |
| Anthropic | 直接使用 Claude 模型 | Claude Code auth 或 API key |
| OpenRouter | 200+ 模型,多供应商 | API key |
| DeepSeek | 直接 API | API key |
| GitHub Copilot | 通过 Copilot 使用 GPT-5.x, Claude, Gemini | OAuth |
| Hugging Face | 20+ 开源模型 | HF_TOKEN |
| Custom Endpoint | VLLM, SGLang, Ollama, 任何 OpenAI 兼容的端点 | Base URL + key |
此外还有:Z.AI/GLM、Kimi/Moonshot、MiniMax、Alibaba Cloud/DashScope、Arcee AI 等等。
64K 规则: Hermes 要求至少 64,000 tokens 的上下文。低于这个标准的模型在启动时会被拒绝。这很合理——多步工具调用的工作流会快速消耗上下文,而一个小窗口意味着智能体在任务进行到一半时就会忘记自己正在做什么。如果你运行本地模型,请设置 --ctx-size 65536 或更高。
随时可以用 hermes model 切换供应商。无需更改代码,没有锁定。
记忆系统:小巧、有界且刻意
这是 Hermes 与大多数智能体框架分道扬镳的地方。Hermes 不会把所有东西都扔进向量数据库,而是使用两个有字符限制的微型文件:
| 文件 | 用途 | 限制 |
|---|---|---|
MEMORY.md | 智能体的笔记——环境事实、惯例、学到的教训 | 2,200 字符(约 800 tokens) |
USER.md | 用户档案——你的偏好、沟通风格 | 1,375 字符(约 500 tokens) |
这两个文件都存放在 ~/.hermes/memories/ 目录下,并在会话开始时作为一个冻结快照 (frozen snapshot) 被注入到系统提示 (system prompt) 中。
记忆在实践中是如何工作的:
══════════════════════════════════════════════
MEMORY (your personal notes) [67% — 1,474/2,200 chars]
══════════════════════════════════════════════
User's project is a Rust web service at ~/code/myapi using Axum + SQLx
§This machine runs Ubuntu 22.04, has Docker and Podman installed
§User prefers concise responses, dislikes verbose explanations
智能体通过三个动作来管理自己的记忆:
- add —— 存储一个新事实
- replace —— 更新一个现有条目(通过子字符串匹配)
- remove —— 删除不再相关的内容
关于 frozen snapshot 的注意事项: 当 Hermes 在会话期间写入记忆时,更改会立即持久化到磁盘上——但它们要等到下一次会话开始时才会出现在 system prompt 中。这是有意为之的(为了性能,保留 LLM prefix cache),但这也意味着,如果你在同一次会话中继续交谈,智能体可能会“忘记”它刚刚学到的东西。
当内存满了的时候,智能体就会收到一个包含当前条目和使用情况统计的错误,然后它必须整合或替换条目来腾出空间。这就像一個人用一个只有 15 行的笔记本——你得学会有选择地记录。
什么该存,什么不该存:
- ✅ 该存:用户偏好、环境事实、项目惯例、更正、工作流模式
- ❌ 不该存:琐碎信息、容易搜索到的事实、大段代码块、会话特定的临时数据
这种有界限的方法让人耳目一新。大多数智能体记忆系统要么没有限制(然后被噪音填满),要么使用向量检索(这会产生相关性的幻觉)。Hermes 强制要求自律。
技能:智能体自己创造的程序性记忆
技能是 Hermes 针对“如何更好地处理重复性任务?”这个问题的答案。当智能体完成一项复杂的任务后,它可以创建一个技能——本质上就是一个 SKILL.md 文件,里面包含了下次执行任务的指令。技能在使用过程中会自我改进。
它的生态系统出人意料地庞大:在 4 个注册库中拥有 647 个技能。内置的技能覆盖了:
- 编码智能体:Claude Code、Codex、OpenCode 委托
- 创意工具:ASCII art、p5.js 生成艺术、Manim 数学动画、Excalidraw 图表、架构图
- 平台集成:Apple Notes、Apple Reminders、FindMy、iMessage
- 好玩的东西:Minecraft 模组包服务器搭建、Pokemon 玩家(是的,它通过无头模拟器自主玩 Pokemon)
- 设计:从真实网站(Stripe、Linear、Vercel、Notion、Airbnb…)中提取的 54 个生产级质量的设计系统模板
技能遵循 agentskills.io 开放标准,因此它们是可移植和社区共享的。
真实场景: 你让 Hermes 为一个 Postgres + Redis + Node 应用搭建一个 Docker Compose 栈。它完成任务后,会创建一个名为 "docker-compose-setup" 的技能,其中包含模板、常见陷阱以及它发现的端口惯例。下次你要求搭建类似的栈时,它会加载这个技能,并用一半的步骤完成任务。
工具:47个内置工具,按类别组织
Hermes 自带一个广泛的工具注册库。你可以用 hermes tools 来启用/禁用不同的工具组:
| 类别 | 示例 | 用途 |
|---|---|---|
| Web | web_search, web_extract | 搜索和抓取网页 |
| Terminal & Files | terminal, process, read_file, patch | 运行命令、编辑文件 |
| Browser | browser_navigate, browser_snapshot, browser_vision | 完整的浏览器自动化 |
| Media | vision_analyze, image_generate, text_to_speech | 图像分析、生成、文本转语音 |
| Agent orchestration | todo, execute_code, delegate_task | 规划、子智能体、代码执行 |
| Memory & recall | memory, session_search | 持久化记忆、跨会话搜索 |
| Automation | cronjob, send_message | 定时任务、对外发送消息 |
快速启用/禁用:
# 只用 web 和 terminal 工具启动
hermes chat --toolsets "web,terminal"
# 或者通过交互方式配置
hermes tools
Terminal Backends: 在任何地方安全运行
这是 Hermes 最强大的实用功能之一。你可以选择智能体的终端命令真正在哪里执行:
| 后端 | 使用场景 |
|---|---|
local | 默认——在你的机器上运行 |
docker | 隔离的容器——对于不受信任的任务很安全 |
ssh | 远程服务器——智能体无法触碰自己的代码 |
daytona | 云沙箱——持久化,空闲时休眠 |
modal | Serverless——可扩展,按使用量付费 |
singularity | HPC 容器——用于无 root 权限的集群计算 |
# ~/.hermes/config.yaml
terminal:
backend: docker
docker_image: python:3.11-slim
container_persistent: true # 软件包在会话间保持存在
container_cpu: 1
container_memory: 5120 # 5GB
ssh 后端是安全方面的最佳选择:智能体在远程机器上工作,完全无法修改自己的代码或配置。容器后端(Docker、Singularity、Modal)提供了进一步的加固:只读的根文件系统、移除所有 Linux capabilities、禁止权限提升、PID 限制、完整的命名空间隔离。
实用技巧: 如果你在 VPS 上运行 Hermes 并让它执行真实任务,请从 docker 后端开始。如果你信任这些任务但想要隔离,请使用 ssh。只有在开发或执行你自己也会运行的任务时才使用 local。
Cron:内置的定时自动化
Hermes 有一个内置的 cron 调度器。无需外部工具。你可以用自然语言或 cron 表达式创建任务,结果会发送到任何消息平台。
# 在聊天中
/cron add "every 6h" "Check GitHub trending repos in Python and summarize the top 5 new ones. If nothing interesting, respond with [SILENT]." --name "GitHub watcher" --deliver telegram
# 在 CLI 中
hermes cron create "0 9 * * 1" \
"Generate a weekly report of top AI news, trending ML repos, and most-discussed HN posts." \
--name "Weekly AI digest" \
--deliver telegram
关键要理解的一点是: Cron 任务在全新的、没有任何当前聊天记忆的智能体对话中运行。Prompt 必须是完全自包含的。这一点经常让人们踩坑——他们写一个像“去做我们讨论过的那件事”这样的 cron prompt,然后奇怪为什么智能体完全不知道他们在说什么。
--script 参数是它的大招。 你可以附加一个 Python 脚本,在每次执行前运行。它的 stdout 会成为智能体的上下文:
# ~/.hermes/scripts/watch-site.py
import hashlib, json, os, urllib.request
URL = "https://example.com/pricing"
STATE_FILE = os.path.expanduser("~/.hermes/scripts/.watch-state.json")
content = urllib.request.urlopen(URL, timeout=30).read().decode()
current_hash = hashlib.sha256(content.encode()).hexdigest()
# 加载之前的状态
prev_hash = None
if os.path.exists(STATE_FILE):
with open(STATE_FILE) as f:
prev_hash = json.load(f).get("hash")
# 保存当前状态
with open(STATE_FILE, "w") as f:
json.dump({"hash": current_hash, "url": URL}, f)
if prev_hash and prev_hash != current_hash:
print(f"CHANGE DETECTED on {URL}")
print(f"Content preview:\n{content[:2000]}")
else:
print("NO_CHANGE")
/cron add "every 1h" "If script says CHANGE DETECTED, summarize what changed. If NO_CHANGE, respond with [SILENT]." --script ~/.hermes/scripts/watch-site.py --name "Pricing monitor" --deliver telegram
[SILENT] 这个小技巧: 当智能体的响应包含 [SILENT] 时,消息将不会被发送。你只会在真正有事发生时收到通知。没有垃圾信息。
Messaging Gateway:在手机上与它对话
hermes gateway setup # 交互式——选择你的平台
hermes gateway # 启动网关进程
Hermes 通过一个网关支持超过 15 个消息平台:Telegram、Discord、Slack、WhatsApp、Signal、Matrix、Mattermost、Email、SMS、DingTalk、Feishu、WeCom、BlueBubbles、Home Assistant 和 Open WebUI。
Telegram 设置示例(最常见的一种):
- 通过 @BotFather 创建一个机器人(
/newbot) - 通过 @userinfobot 获取你的用户 ID
- 运行
hermes gateway setup,选择 Telegram,粘贴 token 和用户 ID - 启动网关:
hermes gateway
就这样。现在你可以在手机上跟你的智能体聊天,而它则在你的服务器上工作。
语音备忘录也同样有效——在 Telegram 上发送一条语音消息,Hermes 会用 faster-whisper(本地运行,免费)自动将其转录成文本,并对文本内容做出回应。
群聊提示: Telegram 机器人默认启用隐私模式——机器人只能看到 /commands 和直接回复。要让它看到群里所有消息,要么在 BotFather 中禁用隐私模式,要么将机器人提升为管理员。
MCP 集成:用外部工具扩展
Hermes 支持模型上下文协议(Model Context Protocol,简称 MCP)——连接到任何 MCP 服务器来添加工具:
# ~/.hermes/config.yaml
mcp:
servers:
- name: "github"
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_TOKEN: "your-token"
MCP 工具会和内置工具一起显示。你可以筛选智能体能使用哪些 MCP 工具,以避免工具过载。
安全性:七层深度防御
Hermes 有一套真正的深度防御模型,而不仅仅是“我们加了个批准提示”:
- 用户授权——通过白名单控制谁能和智能体对话
- 危险命令批准——对破坏性操作(
rm -rf,chmod 777等)采用人工确认 (human-in-the-loop) - 容器隔离——使用经过加固设置的 Docker/Singularity/Modal
- MCP 凭证过滤——对 MCP 子进程进行环境变量隔离
- 上下文文件扫描——在项目文件中检测 prompt注入
- 跨会话隔离——会话之间不能访问彼此的数据
- 输入清理——工作目录参数会根据白名单进行验证
批准模式:
# ~/.hermes/config.yaml
approvals:
mode: manual # 可选 manual | smart | off
timeout: 60 # 自动拒绝前的秒数
manual(默认): 执行危险命令前总是询问smart: 使用一个辅助 LLM 来评估风险——自动批准低风险操作,自动拒绝危险操作,并将不确定的情况上报给你off/--yolo: 绕过所有检查。只在 CI/CD 或一次性容器中使用。
超时机制是 fail-closed(故障关闭)的: 如果你在 60 秒内没有响应,命令会被拒绝。而不是被批准。这是正确的默认设置。
Subagents:委托任务与并行化
Hermes 可以为并行的工作流生成隔离的子智能体:
❯ 同时研究这三个主题:
1. 最新的 Rust 异步运行时基准测试
2. PostgreSQL 17 的新功能
3. 生产环境中 LLM 缓存的最佳实践
每个子智能体都有自己的会话、工具和上下文。结果会返回给父智能体。这对于天然并行的任务非常有用——研究、批处理、多仓库操作。
你也可以使用 execute_code 来编写通过 RPC 调用工具的 Python 脚本,将多步流水线压缩成零上下文成本的回合。
真正的缺点(说点实在的)
只说好话的评测文章都是没用的。下面来说说它真正的痛点:
1. 内存极小,需要主动管理
智能体记忆只有 2,200 个字符,用户档案只有 1,375 个字符。这总共大约只有 20 条简短的记录。对于一个本应“与你共同成长”的个人助理来说,这么快就达到上限实在令人沮丧。你会发现智能体把时间花在整合和替换记忆条目上,而不是做实际工作。这种有界限的方法在理念上是合理的,但在实践中,这意味着智能体会忘记一些你希望它记住的事情。
2. Frozen Snapshot 导致“记忆延迟”
会话期间的记忆更改只在下一次会话生效。这意味着,如果你告诉智能体“记住我换成了 PostgreSQL 17”,它会把这信息写入磁盘——但如果你在同一次对话中晚些时候问及你的数据库设置,system prompt 中显示的仍然是旧信息。智能体可以通过工具响应来检查实时状态,但它并不总能想到这么做。这会导致一些令人困惑的时刻,智能体似乎忘记了你刚刚告诉它的事情。
3. Cron 的 Prompt 必须完全自包含
每个 cron 任务都在一个空白的会话中运行。没有记忆,没有对话历史,没有来自先前运行的上下文。这意味着你的 cron prompts 需要把所有事情都说清楚——做什么,怎么做,用什么输出格式,发送到哪里。写出好的 cron prompts 本身就是一门技巧,最初的几次尝试通常会因为信息不足而产生无用的结果。
4. 64K 的最小上下文窗口将小型本地模型拒之门外
如果你想用一个 7B 或 13B 的模型完全在本地运行,除非你负担得起 64K 上下文所需的 RAM,否则多半是没戏了。这是一个合理的工程决策(小上下文 = 智能体循环中断),但它意味着 Hermes 并非真正“能在任何设备上运行”——它能在任何能提供 64K 上下文模型的设备上运行。
5. Gateway 重启会断开所有连接
如果你需要重启网关(更新、更改配置、从崩溃中恢复),所有活跃的消息会话都会断开。没有平滑的交接。Telegram/Discord 上的用户只会看到机器人沉默了,然后又恢复了。对于个人使用来说这还好;但对于团队部署来说,这是一个粗糙的边缘。
Hermes 的定位:3 个快速比较
这部分不是完整的评测——只是一些定位说明,帮助你了解在什么情况下该选择哪个工具。
Hermes vs OpenClaw: 两者都是自托管的个人 AI 智能体,都拥有消息网关、cron、记忆和工具使用。OpenClaw 基于 Node.js,专注于渠道多样性和插件架构。Hermes 基于 Python,专注于学习循环(技能、自我提升)和研究准备(trajectory export、RL training)。如果你想要“不断成长的智能体智能”,倾向于 Hermes。如果你想要“跨 15 个平台稳定路由消息,并拥有广泛的插件生态系统”,倾向于 OpenClaw。
Hermes vs LangGraph: LangGraph 是一个用于构建智能体工作流的框架——你来编写图,定义节点,处理状态。Hermes 是一个开箱即用的智能体——安装即可聊天。如果你需要为一个产品定制多智能体协作流程,请使用 LangGraph。如果你需要一个开箱即用的个人智能体,请使用 Hermes。
Hermes vs CrewAI: CrewAI 专注于多智能体角色扮演(例如“研究员”、“作家”、“编辑”等智能体协同工作)。Hermes 是一个带有子智能体委托功能的单一智能体。对于预定义的团队工作流,CrewAI 更好。对于任务事先未知的开放式个人辅助,Hermes 更好。
快速参考备忘单
核心命令
hermes # 开始聊天
hermes model # 切换 LLM 供应商
hermes tools # 启用/禁用工具集
hermes gateway setup # 配置消息平台
hermes gateway # 启动消息网关
hermes cron list # 列出定时任务
hermes config set KEY VAL # 设置一个配置值
hermes doctor # 诊断问题
hermes update # 更新到最新版本
hermes --continue # 恢复上一次会话
hermes --yolo # 绕过命令批准(小心使用!)
推荐的首次配置
# ~/.hermes/config.yaml
# 使用 Docker 以策安全
terminal:
backend: docker
docker_image: python:3.11-slim
container_persistent: true
# 保持开启批准提示
approvals:
mode: manual
timeout: 60
常见陷阱
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 智能体忽略你刚添加的记忆 | Frozen snapshot——记忆只在会话开始时加载 | 开始一个新会话 (hermes) |
| Cron 任务产生无用输出 | Prompt 不是自包含的 | 在 cron prompt 中把所有事情都说清楚 |
| 机器人在群里看不到消息 | Telegram 的隐私模式 | 在 BotFather 中禁用,然后将机器人重新添加到群组 |
| 启动时模型被拒绝 | 上下文窗口 < 64K | 使用更大的模型或增加 --ctx-size |
安装后 hermes: command not found | Shell 未重新加载 | 运行 source ~/.bashrc |
总结
Hermes Agent 是 2026 年 4 月市面上最完整的开源个人 AI 智能体。它的学习循环(记忆 + 技能 + 用户建模)是真正的创新——大多数竞争对手甚至没有尝试跨会话改进。6 种 terminal 后端为你提供了真正的部署灵活性。拥有 647 个技能的生态系统意味着你不是从零开始。
当然,它也有实实在在的取舍:极小的记忆限制、frozen snapshot 带来的延迟、cron prompt 的开销,以及 64K 的上下文门槛。但这些是工程设计上的选择,而不是 bug——它们使系统保持有界和可预测。
如果你想要一个能住在你服务器上、通过 Telegram 和你聊天、执行定时任务,并且能随着时间真正变强的 AI 智能体——那 Hermes 就是你该试试的那个。安装只需 60 秒。不到一个小时,你就能知道它是否适合你的工作流。
链接:
- GitHub: github.com/NousResearch/hermes-agent
- Docs: hermes-agent.nousresearch.com/docs
- Discord: discord.gg/NousResearch
- Skills Hub: agentskills.io
- License: MIT