Hermes Agent 入门到深入:会学习的开源 AI Agent 是怎么工作的
这两天检索 “hermes-agent” 会发现一个很有意思的现象:它已经不只是 Nous Research 的一个 agent 项目,而是开始出现在一批周边工具、桌面壳、记忆系统、代码知识图谱和自托管平台的兼容列表里。
截至 2026-07-28 15:22(Asia/Shanghai)通过 GitHub API 抓取的快照,NousResearch/hermes-agent显示为 MIT License,主语言 Python,仓库描述是 “The agent that grows with you”,当天仍有 push;同一搜索结果里,cc-switch、codegraph、screenpipe等项目也把 Hermes Agent 放进了支持对象。这说明它的热度不只来自 star 数字,也来自一个更实际的趋势:开发者正在把 “agent” 从一次性聊天工具,推向长期运行、可记忆、可调度、可接入多端和多工具的个人/团队自动化运行时。
本文不是 README 翻译,而是一篇基于官方仓库、官方文档、Release notes 和 GitHub 检索快照的原创技术解读。先讲入门概念,再拆它背后的 agent loop、记忆、技能、工具运行时、MCP、Cron 和安全边界。
先说结论:Hermes Agent 到底是什么
如果用一句话概括:Hermes Agent 是一个以长期运行和自我改进为目标的开源 AI agent 运行时。
普通聊天机器人解决的是:
用户输入 -> 模型回答普通工具调用 agent 解决的是:
用户目标 -> 模型选择工具 -> 工具返回结果 -> 模型继续推理Hermes Agent 试图再往前走一步:
用户目标 -> agent loop 执行任务 -> 记录会话与工具结果 -> 把关键经验沉淀成 memory -> 把可复用流程沉淀成 skill -> 下次会话、消息平台、Cron 任务或子 agent 再复用这些经验这就是它 README 里反复强调的 “grows with you” 的技术含义:agent 不只是会调用工具,还要能把过去任务里学到的东西压缩成长期资产。
为什么最近会火
从全网和 GitHub 检索看,Hermes Agent 的火点主要有三层。
第一层是显性热度。GitHub API 快照里,NousResearch/hermes-agent排在 “hermes-agent” 相关搜索结果前列,仓库显示 2025-07-22 创建、2026-07-28 仍在频繁提交,许可证为 MIT。最近的 v2026.7.20 / v0.19.0 Release 发布于 2026-07-20,Release notes 里提到从 v0.18.0 以来约 2,245 次提交、约 1,065 个合并 PR、约 3,300 个 issue 关闭,以及首 token 延迟显著下降、桌面端和 TUI 性能优化、智能审批、子 agent 可视化、持久投递账本等改动。
第二层是产品方向。它押中的不是“再做一个聊天框”,而是长期 agent 需要的几件基础设施:持久记忆、技能系统、跨平台消息网关、Cron 自动化、多模型 provider、多终端后端、MCP 接入、安全审批和会话检索。
第三层是生态扩散。GitHub 搜索结果中,许多项目并不是 Hermes 本身,却在描述里写明支持 Hermes Agent,例如 agent CLI 切换器、代码知识图谱、屏幕记录/上下文系统、桌面管理工具等。这类兼容信号很重要:只有当一个工具被别的工具适配时,它才开始从“项目”变成“生态接口”。
下面这张表是 2026-07-28 GitHub API 快照中的部分结果,仅用于说明热度与生态线索,数据会随时间变化:
| 仓库 | 快照 star | 最近 push | 相关性 |
|---|---|---|---|
| NousResearch/hermes-agent | 221575 | 2026-07-28 | Hermes Agent 主仓 |
| farion1231/cc-switch | 121841 | 2026-07-27 | 多 agent CLI/桌面切换器,描述中支持 Hermes Agent |
| colbymchenry/codegraph | 62946 | 2026-07-24 | 本地代码知识图谱,描述中支持 Hermes Agent |
| screenpipe/screenpipe | 20581 | 2026-07-28 | 本地屏幕记录与 agent 上下文,描述中支持 Hermes agent |
| fathah/hermes-desktop | 13614 | 2026-07-24 | Hermes Agent 桌面伴侣 |
| EKKOLearnAI/hermes-studio | 9544 | 2026-07-28 | Hermes Agent Web dashboard |
注意:这类 GitHub 快照适合判断“热度方向”,不适合当作永久事实。文章写作时应注明抓取时间,而不是把 star 数当成静态结论。
入门:你可以把 Hermes 当成什么用
从用户视角看,Hermes Agent 有两个最基础入口。
第一是本地 CLI/TUI:
hermes hermes model hermes tools hermes setup hermes doctor第二是消息网关:
hermes gateway官方 README 写到它支持从 Telegram、Discord、Slack、WhatsApp、Signal、Email 等入口继续同一个 agent 工作流。这个设计很关键:很多 agent 项目默认“人在电脑前”;Hermes 更像“agent 在云端或工作机上长期跑,你在任何入口给它发任务”。
一个典型入门流程是:
- 安装 Hermes。
- 用
hermes setup或hermes model配置模型 provider。 - 用
hermes tools管理工具权限和工具集。 - 在 CLI 里开始一次对话。
- 如果要长期运行,再配置 gateway、Cron、MCP 或远程终端后端。
它的模型侧并不绑定单一厂商。官方文档的 provider 页面列出 Nous Portal、OpenRouter、OpenAI 兼容接口、Anthropic、GitHub Copilot、Qwen、MiniMax、xAI、Bedrock、Vertex AI、Ollama Cloud、NVIDIA NIM、自托管 vLLM 等路线。技术上,它把 provider 解析成内部运行模式,再统一进入同一个 agent loop。
技术核心一:Agent Loop 不是一句口号
Hermes 官方开发文档把核心类放在AIAgent上。它负责系统提示词组装、provider/API mode 选择、可中断模型调用、工具执行、会话历史维护、压缩、重试、fallback、迭代预算和持久记忆刷新。
简化后的执行流可以写成:
run_conversation() -> 追加用户消息 -> 构建或复用 system prompt -> 判断是否需要上下文压缩 -> 转成目标 provider 所需消息格式 -> 调用模型 -> 如果模型返回 tool_calls:执行工具,把结果写回历史,继续循环 -> 如果模型返回文本:保存会话,刷新记忆,返回结果这和普通 ReAct 类 agent 的相似点是“模型决定下一步动作”。不同点在于 Hermes 把很多工程问题显式做成子系统:
- API mode:内部支持 OpenAI Chat Completions、OpenAI Responses/Codex 格式、Anthropic Messages 三类调用模式,再收敛为统一消息格式。
- 可中断调用:模型请求跑在后台线程里,用户
/stop或新消息可以打断当前回合,避免长任务把交互卡死。 - 并发工具执行:多个 tool call 可以通过线程池并发执行,并按原始 tool call 顺序回填结果。
- 迭代预算:默认有最大迭代数,子 agent 也有独立预算,防止任务无限循环。
- fallback provider:主模型遇到限流、服务端错误或鉴权问题时,可以按配置尝试备用 provider。
所以 Hermes 的 agent loop 更像一个“生产化控制回路”,而不是一个简单 while 循环。
技术核心二:Prompt Assembly 是真正的隐形工程
长期 agent 难做,不只因为模型会犯错,还因为上下文会变乱。Hermes 的 prompt assembly 文档把 system prompt 拆成多层:身份/行为指导、工具使用规则、Honcho 用户建模块、外部系统消息、memory 快照、user profile 快照、skills 索引、项目上下文文件、时间戳、平台提示等。
一个很重要的设计是“冻结快照”:memory 和 user profile 在会话开始时注入 system prompt,之后即使 agent 在本轮里写入了新记忆,也不会立刻改动当前 system prompt。这样做有两个好处:
- 保持模型前缀稳定,减少缓存失效。
- 避免系统提示词在同一轮任务中不断变化,降低不可预期行为。
代价是:新记忆要到下一次会话才真正进入提示词。这个取舍很工程化。它承认长期记忆不是“越实时越好”,而是要在一致性、成本和可解释性之间找平衡。
技术核心三:记忆不是把所有聊天塞进上下文
Hermes 的 memory 文档把长期记忆分成两类文件:
MEMORY.md:agent 自己的环境事实、流程经验、项目约定。USER.md:用户偏好、沟通风格、稳定期望。
它们都有严格字符限制。官方文档解释得很直白:memory 要保持短、准、可行动;不能把大段日志、临时代码、一次性上下文都塞进去。
更有意思的是,Hermes 把“记忆”和“会话检索”分开:
| 能力 | 适合保存什么 |
|---|---|
| Persistent Memory | 每次都应该知道的关键事实 |
| Session Search | 过去某次对话里的具体细节 |
会话检索基于 SQLite + FTS5。也就是说,它不是把所有历史永久塞进 prompt,而是在需要时搜索过去对话。这比“无限上下文”更务实:关键偏好进 memory,长尾细节走检索。
这也是 Hermes 的一个重要判断:长期 agent 的记忆系统不应该只有向量库,还应该有可编辑、可审计、低 token 成本的结构化记忆层。
技术核心四:Skills 是程序化记忆
如果 memory 记的是“事实”,skills 记的就是“怎么做”。
Hermes 的 Skills System 支持从本地文档、在线文档、当前对话里的流程、用户粘贴的操作步骤中学习技能。技能通常是一个SKILL.md,里面包含何时使用、步骤、坑点、验证方法等。官方文档也强调 progressive disclosure:不要一上来把所有技能全文塞给模型,而是先给索引,需要时再展开。
这点非常关键。很多 agent 系统的问题是“会工具,但不会积累流程”。比如你带它走完一次内部发布流程,普通 agent 下次可能还要重新教;Hermes 的思路是把这个流程变成 skill,下次通过技能索引唤起。
可以把 Hermes 的学习闭环粗略理解为:
一次复杂任务 -> agent 执行工具与推理 -> 用户纠正或任务成功 -> 后台 review 抽取可复用经验 -> 写入 memory 或 patch/create skill -> 后续任务复用这不是“模型权重自我训练”,而是更现实的外部记忆与程序化工作流沉淀。
技术核心五:工具运行时决定 agent 的上限
Hermes 的 architecture 文档列出 70+ registered tools 和约 28 个 toolsets。工具并不是硬编码进一个巨大 switch,而是每个工具模块通过 registry 注册 schema、handler、可用性检查函数和所属 toolset。
模型真正看到的是过滤后的工具 schema。过滤逻辑会考虑:
- 当前平台启用了哪些 toolset。
- 工具依赖的 API key、二进制、外部服务是否可用。
- MCP 动态工具是否已经发现。
- plugin 是否注册额外工具。
工具执行时,典型链路是:
模型返回 tool_call -> agent loop 识别工具 -> pre_tool_call hook -> 危险命令检测与审批 -> registry.dispatch 执行 handler -> post_tool_call hook -> 工具结果回填给模型这套设计的价值在于三点。
第一,工具发现和工具执行分离。模型只看到当前可用工具,减少 hallucination。
第二,工具可以按平台裁剪。CLI、Telegram、Cron、ACP/IDE 场景不一定暴露同一组能力。
第三,工具出错被包装成结构化 JSON,而不是直接炸掉 agent loop。生产系统里,这种“把错误也变成可继续推理的观察结果”很重要。
MCP:让工具层从项目内能力变成协议能力
Hermes 支持 MCP。官方 MCP 文档中,Hermes 可以连接 stdio server、HTTP server、OAuth HTTP server,也支持 per-server 工具过滤、白名单、黑名单、glob 规则和动态工具发现。
这意味着 Hermes 的工具层可以分成两类:
内置工具:terminal / file / web / browser / vision / delegate 等 外部协议工具:GitHub MCP / filesystem MCP / Stripe MCP / 内部系统 MCP 等真正值得注意的是安全模型。Hermes 文档强调 MCP stdio subprocess 默认拿到的是过滤后的环境变量;MCP 工具错误信息会做 credential redaction;对高风险 server 可以只暴露少数工具。例如连接 Stripe 时,保留查询能力,过滤掉退款或创建付款这类危险动作。
这说明 Hermes 对 MCP 的理解不是“接得越多越好”,而是“接入要可裁剪、可审计、可限制”。
Cron:从聊天 agent 到自动化 agent
Hermes 内置 Cron。它不是简单执行 shell,而是把定时任务也当成 agent job:
Scheduler tick -> 找到到期任务 -> 创建 fresh AIAgent -> 注入关联 skill / prompt / script context -> 执行任务 -> 把结果投递到目标平台 -> 更新 next_run 和执行历史这让 Hermes 很适合做“每天早上自动巡检”“每周生成报告”“夜间备份检查”“GitHub PR 审查提醒”这类任务。它甚至支持 job chaining:前一个任务产出的上下文可以交给下一个任务继续处理。
但 Cron 也带来风险:无人值守任务不能随便执行危险命令。官方文档里,Cron 的危险命令默认策略可以设置成 deny 或 approve;生产环境显然应该偏保守,把高风险动作留给人工确认。
安全边界:Hermes 不是让 agent 裸跑
Hermes 的安全文档非常长,这反而是好信号。长期运行 agent 最大的风险,不是模型答错一句话,而是它连着工具、文件系统、消息平台、MCP server、远程终端后端和自动化任务。
它的安全边界主要包括:
- 危险命令审批:对
rm -rf、格式化磁盘、危险 SQL、覆盖系统配置、服务操作、远程脚本执行等模式触发审批。 - Smart approval:可用辅助模型判断某些误报命令是否低风险,但不确定时仍升级给人。
- 文件写保护:对关键路径硬拦截,也可配置写入安全根目录。
- Gateway 用户授权:消息平台不是谁发消息都能控制 agent,可以用 allowlist 和 DM pairing。
- 容器隔离:Docker/Singularity/Modal 等后端可以把执行环境和宿主隔开。
- MCP 凭据过滤:避免把宿主环境里的敏感变量无意传给外部 MCP server。
- 上下文文件注入扫描:对 AGENTS.md、SOUL.md 等上下文文件做 prompt injection 检查。
- SSRF 防护:避免 web/browser/media 下载误打内网和云元数据地址。
最重要的判断是:Hermes 的审批、过滤和隔离主要防“诚实但会犯错的 agent”,不是一个能抵御恶意本地进程的完美沙箱。真正生产部署仍然应该使用隔离机器、最小权限 API key、网络限制和审计日志。
和 Claude Code、Codex、LangGraph 的区别
Hermes Agent 容易被拿来和 Claude Code、Codex、OpenCode、LangGraph 比。我的理解是:
| 工具 | 更像什么 | 优势 |
|---|---|---|
| Claude Code / Codex | 代码任务 agent | 深度代码编辑、IDE/终端工作流、模型原生体验 |
| LangGraph | agent workflow 编排框架 | 状态图、可控流程、应用内 agent 开发 |
| OpenCode / OpenClaw | 开源 coding agent / agent runtime | 开放、可自托管、面向开发者自动化 |
| Hermes Agent | 长期运行的个人/团队 agent runtime | 记忆、技能、消息网关、Cron、MCP、多 provider、多后端 |
所以 Hermes 不一定是“某个单点能力最强”的工具。它真正的野心是把 agent 变成一个能长期住在你工作流里的系统:你可以在终端里用它,也可以从消息平台给它派活;可以让它在本地工作,也可以让它在 VPS、Docker、SSH、Modal、Daytona 这类环境里跑;可以让它现在做一件事,也可以让它明天早上自动醒来做一件事。
我怎么看 Hermes Agent 的技术路线
Hermes Agent 最值得关注的地方不是“又一个开源 agent”,而是它把很多 agent 工程里的灰色地带产品化了。
比如记忆。很多项目说自己有 memory,但实际只是把历史塞进向量库。Hermes 同时保留短小可编辑 memory、用户画像、SQLite/FTS5 会话搜索和外部 memory provider 插件,层次更清晰。
比如技能。很多 agent 可以生成代码,却不会把一次成功工作流沉淀成下次可复用的 procedure。Hermes 把 skill 当成程序化记忆,并且支持技能索引、Hub、审批和安全扫描。
比如多入口。很多 agent 只能在本机聊天框里跑。Hermes 把 CLI、gateway、Cron、ACP、API server 和 Python library 都接到同一个AIAgent核心上,这种“平台无关核心 + 多入口适配”的架构更适合长期演进。
比如安全。很多演示项目默认给 agent 全权限。Hermes 至少把危险命令审批、授权、MCP 环境过滤、写保护、容器隔离和 SSRF 防护放在正式文档里,这说明它知道长期 agent 的主要事故会发生在哪里。
它的风险也同样明显:
- 系统很大:官方 architecture 文档显示工具、gateway、插件、provider、cron、desktop、ACP、MCP 都在体系里,学习成本不低。
- 长期记忆需要治理:agent 自动写 memory/skill 很强,但错误记忆和错误 skill 也会长期污染行为,所以审批、查看、回滚很重要。
- 多端入口扩大攻击面:Telegram/Slack/Email/Webhook 等入口越多,身份校验和权限隔离越关键。
- MCP 与外部工具是双刃剑:连接越多系统,越要控制工具暴露面和凭据流动。
- GitHub 热度不等于生产成熟度:Release 很频繁是活跃信号,也是稳定性仍在快速变化的信号。
新手应该怎么上手
如果只是好奇,建议按这个顺序:
- 先本地安装,跑
hermes,完成一次普通对话。 - 用
hermes model配一个你已经熟悉的 provider。 - 用
hermes tools看当前暴露了哪些工具,不要一开始全开高风险能力。 - 试一次
memory和session_search,理解“短期上下文、长期记忆、历史检索”的差别。 - 学一个简单 skill,比如把你自己的项目发布流程写成可复用步骤。
- 再接 MCP,只暴露最小工具集。
- 最后再碰 gateway 和 Cron,因为它们会让 agent 变成长期在线系统,安全要求更高。
如果用于团队或生产环境,我建议先问四个问题:
- 哪些工具有外部副作用?
- 哪些入口能触发 agent?
- API key、OAuth token、MCP env 会不会被不该看到的子进程拿到?
- 出错后能不能查到是哪次会话、哪次工具调用、哪条记忆或哪个 skill 导致的?
能答清楚这些问题,再谈自动化规模化。
最后的判断
Hermes Agent 代表了 2026 年 agent 工程的一个明显趋势:大家不再满足于“模型会调用工具”,而是开始追求“agent 能长期运行、能记住、能学习流程、能跨入口协作、能被审计和限制”。
它不是最轻的框架,也不是最适合拿来写十行 demo 的工具。它更像一个正在成型的 agent runtime:模型只是其中一部分,真正的价值在记忆、技能、工具、调度、权限、会话和协议层的组合。
如果说上一代 agent demo 的关键词是 autonomous,那么 Hermes Agent 这一类项目的关键词应该是 durable:可持续、可恢复、可治理、可复用。长期来看,真正有用的 agent 不会只是“很会说”,而是能在你的工作系统里留下正确的痕迹,并且在出错时让你知道该从哪里修。
参考来源
- NousResearch/hermes-agent GitHub 主仓:https://github.com/NousResearch/hermes-agent
- Hermes Agent 官方文档:https://hermes-agent.nousresearch.com/docs/
- Hermes Agent README:https://github.com/NousResearch/hermes-agent/blob/main/README.md
- Hermes Agent v0.19.0 Release:https://github.com/NousResearch/hermes-agent/releases/tag/v2026.7.20
- Agent Loop Internals:https://github.com/NousResearch/hermes-agent/blob/main/website/docs/developer-guide/agent-loop.md
- Architecture:https://github.com/NousResearch/hermes-agent/blob/main/website/docs/developer-guide/architecture.md
- Tools Runtime:https://github.com/NousResearch/hermes-agent/blob/main/website/docs/developer-guide/tools-runtime.md
- Prompt Assembly:https://github.com/NousResearch/hermes-agent/blob/main/website/docs/developer-guide/prompt-assembly.md
- Persistent Memory:https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/features/memory.md
- Skills System:https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/features/skills.md
- MCP 文档:https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/features/mcp.md
- Cron 文档:https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/features/cron.md
- Security 文档:https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/security.md
- AI Providers 文档:https://github.com/NousResearch/hermes-agent/blob/main/website/docs/integrations/providers.md
- GitHub API 快照:本文仓库热度表抓取时间为 2026-07-28 15:22(Asia/Shanghai),原始检索记录保存在本地研究目录。
许可说明
本文为原创中文技术解读,不是对官方文档或 README 的完整翻译。Hermes Agent 主仓采用 MIT License;本文只做必要的短引用、结构化概括和来源链接,不搬运第三方受限图片或大段原文。