Hermes Agent 深度实战:从部署到技能、MCP 与钩子

Hermes 是 7×24 常驻、多渠道接入、可持续积累记忆与技能的开源 Agent 外壳框架。
本文基于一档 YouTube 深度教程,系统梳理了开源常驻型 Agent Hermes 从部署到高级定制的完整路径。Hermes 本身不是模型而是 harness,可自由接入 OpenAI、Anthropic、DeepSeek 或本地模型,核心价值在于长期驻留、通过 WhatsApp、Telegram 等多渠道随叫随到,并持续积累记忆与技能。文章依次讲解了为何应部署在 VPS 而非主力电脑、安装向导中的关键选择、桌面端通过 SSH 远程连接的用法、`.hermes` 目录中三份常驻 Markdown 与按需加载技能的分层设计、审批模式的档位取舍,以及技能自动归纳与 skill curator 生命周期管理。扩展方式上对比了 MCP、连接器与插件的差异,并介绍了定时任务、多档案、子 Agent 委派和三类钩子机制,最后给出语音能力现状与整体适用人群判断。
Hermes Agent 是近期开源社区讨论度很高的一类「常驻型 Agent」:它不绑定单一任务,而是长期运行在服务器上,通过聊天渠道随叫随到,并随着使用不断积累关于你的记忆和技能。本文基于一档 YouTube 深度教程的内容,把从零部署到高级定制的关键路径重新梳理一遍,适合对终端不陌生、想把 Agent 真正用起来的读者。

一、Hermes 的定位:不是模型,而是常驻型 Agent 框架
教程开篇给出了一个很关键的判断:Hermes 本身不是大模型,它只是一个 harness(外壳/框架)。你可以接 OpenAI、Anthropic、DeepSeek广告,也可以接自己的本地模型,甚至可以指向 OpenCode 这类第三方订阅服务。模型是可替换件,Hermes 负责的是上下文管理、工具调用、记忆持久化和多渠道接入。
它和 Claude Code 这类工具有本质区别。后者面向具体编码任务,用完即走;Hermes 是 7×24 常驻的,你可以用 WhatsApp、Telegram、Discord、Slack 甚至语音通话联系它,让它管理购物清单、健身日程、日历,或每天定时推送一份股市简报。作者把它类比为 OpenClaw广告,但更强调「随你成长」——这也是它最核心的产品主张。
在部署形态上,典型结构是一台 VPS 跑 Hermes,多台设备(笔记本、台式机、手机、智能设备)通过不同消息渠道连同一个 Agent 实例,共享同一份记忆和技能。进阶用法是同一台服务器上跑多个 Hermes 实例:一个当生活教练、一个当技术工程师、一个当设计脑暴伙伴。
harness 与 agent framework 的区别
在 Agent 语境里,harness 指包裹模型的那一层执行外壳:它把用户的自然语言请求翻译成对模型的调用、解析模型返回的工具调用意图、真正执行工具、把结果拼回上下文,再循环直到任务结束。模型只负责「下一步该做什么」的判断,harness 负责其余一切工程细节。这与 agent framework 略有区别:framework 通常指提供抽象接口供开发者编写 Agent 的库(如 LangChain),而 harness 更偏向开箱即用的运行时,用户主要通过配置而非写代码来定制行为。Hermes 属于后者,它的可配置面(人格、记忆、工具开关、钩子)就是 harness 暴露给用户的调节旋钮。
Claude Code 的定位差异
Claude Code 是 Anthropic 推出的终端内编码 Agent,以单次任务会话为粒度工作:你进入项目目录启动它,它读写文件、运行测试,任务完成后退出。它同样是一个 harness,但设计目标是有界的编码任务,而非长期驻留。理解这一点有助于看清 Hermes 的取舍:常驻意味着状态(记忆、技能、会话历史)必须持久化到磁盘,也就引出了后文 .hermes 目录的设计。
二、为什么强烈建议跑在 VPS 上
教程反复强调不要把常驻 Agent 放在主力电脑上,理由有三层。
第一是权限与自主性。你希望 Agent 能自主行动,意味着它需要创建文件、删除文件、执行命令的权限。如果它跑在你存放重要资料和个人凭据的机器上,一次误删或凭据泄露就足以造成实际损失——哪怕不是恶意的。
第二是资源占用。常驻进程会持续消耗 CPU 和内存,与你的日常工作流争抢资源。
第三是隔离原则。作者的建议是「关注点分离」:Agent 跑在一台只做这件事的机器上,除非某些服务必须与它同机。教程演示使用 Hostinger 的 KVM2 方案(2 vCPU、8GB 内存、100GB 磁盘),并给出了 SSH 密钥而非密码登录的做法,属于比较标准的服务器安全实践。
三、安装与首次配置的关键选择
安装命令本身很简单,复杂的是安装向导里的几个岔路口。
设置模式:向导提供快捷设置(走官方托管门户)、空白状态、以及完整手动设置。教程推荐完整设置,因为只有它允许你自带 API Key,并把配置完全掌握在自己手里。
模型选择:可以接 ChatGPT 订阅、OpenAI API Key、DeepSeek、Z.AI 等。作者本人使用 OpenCode 的订阅服务,并通过创建 service account 生成 API Key,为了省事把过期时间设为永不过期——这一点值得商榷,生产环境更稳妥的做法是定期轮换。
渠道接入:首次只配一个渠道(教程选了 Telegram),后续再加。这样能把排错范围控制到最小。
工具开关:联网搜索、浏览器自动化、终端操作、文件读写、图像生成、语音合成、技能与记忆管理,每一项都可以独立开关。工具配置会对 CLI 和消息渠道各走一遍,容易让人觉得重复,但这是设计使然。
配置完成后,几个高频命令值得记住:hermes setup(重跑全部配置)、hermes setup model(只换模型)、hermes doctor(诊断安装问题)、hermes update(升级)、hermes gateway restart(改动后重启网关让配置生效)。hermes doctor 的输出里会混有一些与你无关的告警,比如没装 Docker、缺某个渠道的密钥,需要按自己的使用场景过滤。
四、桌面端:本地安装,远程连接
桌面客户端的使用方式容易让人困惑:你需要在本地也装一份 Hermes,但目的不是用它,而是为了拿到图形界面,再通过 SSH 连回服务器上的那个 Agent。
教程的步骤是本地安装时选择空白状态、跳过模型与渠道配置,然后打开桌面端,在网关设置里选择「通过 SSH 连接」,填入服务器主机、端口和私钥(注意别选错成别的密钥)。连接成功后,你在桌面端看到的会话、文件目录都来自服务器。
作者用一个跨端记忆实验验证了这一点:在桌面端告诉 Agent「记住我叫 Florian」,切回 CLI 开新会话问「我叫什么」,它能答出来;再到 Telegram 里问,它同样知道,并说明信息来源既有 Telegram 账号信息,也有 user.md 文件。三个入口背后是同一个 Agent。

五、.hermes 目录:三个永远在上下文里的 Markdown
理解 Hermes 的记忆机制,关键是分清「常驻上下文」和「按需加载」。
.hermes 目录是整套配置的核心。其中的 soul.md 定义 Agent 的性格,本质上就是系统提示词——默认内容是「你是 Hermes Agent,直接、简洁、回复长度与问题分量匹配」之类,你可以把它改成任何人格。memories/ 下的 user.md 存关于你的事实(姓名、年龄、所在地等),memory.md 存与你不直接相关但值得记住的信息(比如「Mike 在 ABC 公司工作」)。
这三份 Markdown 有一个共同点:始终位于上下文中。这意味着你对写入内容要非常克制,否则每一轮对话都在为无关信息付费。相比之下,技能(skills)是按需加载的,只有相关时才进入上下文。这是 Hermes 记忆体系里最重要的一个分层。
另有 agent.md 可用于放置更正式的系统提示词,与 soul.md 描述人格的定位形成互补。API Key 不写在 config.yaml 里,而是存放在 .hermes 下的 .env 文件中,配置过程中自动写入。
上下文窗口与常驻内容的成本
大模型的上下文窗口是有限的 token 预算,每次调用都要把系统提示词、常驻记忆、历史对话、工具返回结果一起塞进去。常驻内容每轮都会被重复计费和占用窗口,因此体积直接影响到可用历史长度与响应成本。这也是 Hermes 把记忆拆成「常驻」与「按需」两层的动因:soul.md、user.md、memory.md 体量小、通用性强,值得每轮携带;技能文件可能长达数千字且高度专用,只在相关时才加载。实践上应把常驻文件控制在几百字量级,其余信息交给技能或外部文件按需检索。
系统提示词与人格设定的关系
系统提示词是模型在对话开始前收到的最高优先级指令,规定角色、语气、行为边界。soul.md 本质上就是可编辑的系统提示词文件,而 agent.md 提供了放置更正式、更结构化指令的位置。两者分离的好处是人格调整(改语气、改风格)不必触碰行为规则(工具使用约定、安全边界),降低误改风险。
六、审批模式:按你的风险偏好调档
config.yaml 里有一个值得单独拿出来讲的设置:审批模式。默认是 smart,Hermes 会自行判断命令风险,多数命令直接执行,遇到它认为危险的才请求确认。
教程演示了另外两档。改成 manual 后,执行 chmod 777 这类操作会强制请求批准;改回 smart 后,因为是你明确要求的,它就直接执行了。设为 off 则是几乎全自动,但仍然会拦截 rm -rf / 这种极端破坏性命令。作者的建议是保留 smart 作为平衡点——这个判断合理,但需要补充一点:smart 的风险判定依赖模型能力,弱模型在风险识别上未必可靠,敏感环境下手动档更稳妥。
七、技能:让 Agent 记住「怎么做」
技能是 Hermes「随你成长」主张的落点。它本质上也是 Markdown 文件,可以附带脚本,描述的是完成某类任务的具体流程。
教程的示例很直观:让 Agent 生成一份包含 AAPL、MSFT、NVDA 的股市简报,先要一份冗长的文字版,再要求精简成价格、涨跌幅、市盈率的表格加简单可视化。满意之后直接说「以后我说 stock brief,就给我这个版本的结果」,Agent 便自动创建了技能,并附带可运行的脚本和模板。
技能有三种创建方式:手写、从官方技能中心(skills hub)安装、或者让 Agent 根据一次实际执行自动归纳。第三种最省事,也最能体现产品理念。
技能的生命周期由一个叫 skill curator 的后台机制管理:它定期扫描使用频率,30 天未使用标记为 unused,90 天未使用归档,但从不删除。常用的技能可以用 hermes curator pin 钉住,避免被标记;也可以 adopt 交回管理。
你可能没注意到技能的跨渠道适配能力。同一个 stock brief 技能在 Telegram 上输出的排版与桌面端不同,Agent 会根据渠道自行调整;你反馈「这里不好看」,它就把改进写回技能。这种基于使用反馈的持续迭代,比一次性写好提示词更接近「养成」的体验。
八、MCP、连接器与插件:三种扩展方式的取舍
这三个概念容易混淆,教程的区分方式是:MCP 服务器提供工具,连接器是 MCP 的托管版本(走官方门户),插件则是工具、MCP、连接器、技能打包在一起的集合。

以 Notion 为例,hermes mcp 启动交互式配置,选择 Notion 后会给出授权链接,在浏览器里选定工作区并确认信任后,回调 URL 里带有授权码。由于 Hermes 跑在服务器上、回调落在本地,教程的做法是直接把 URL 粘贴回终端让 Hermes 提取授权码——这比配置端口隧道省事。授权完成后即可操作 Notion 里的待办清单。
连接器走的是另一条路:hermes connectors connect notion 打开门户完成授权,同样能用,但配置不在你自己的系统里。作者明确偏好 MCP 的完全掌控,但也承认连接器更易上手。这个取舍没有标准答案,取决于你对数据流向的敏感程度。
插件值得一提的例子是 holographic,一个把记忆改为实体-属性结构的本地事实库。安装后设它为默认记忆提供者,后续对话中告诉它「Tom 是我的同事」「Tom 喜欢去南美度假」「Tom 对花生过敏」,这些事实会逐条入库;再让它策划 Tom 的生日聚会时,它能召回全部三条并据此给出建议。卸载后需要重新执行 hermes memory setup 切回内置记忆,hermes memory status 可随时确认当前用的是哪个。
MCP 协议是什么
MCP(Model Context Protocol)是 Anthropic 提出并开源的协议,用于让外部程序以标准化方式向模型暴露工具、资源和提示模板。一个 MCP 服务器就是一个独立进程,通过 JSON-RPC 与 Agent 通信,声明自己能提供哪些工具及参数 schema;Agent 在需要时调用,服务器执行后返回结果。它的价值在于解耦:同一个 Notion MCP 服务器可以被任何支持 MCP 的客户端复用,不必为每个 Agent 单独写集成。Hermes 的 hermes mcp 命令做的就是注册这样一个服务器并完成授权。
OAuth 回调在服务器场景下的困境
多数第三方服务的授权走 OAuth:你在浏览器确认后,服务把授权码重定向到预先登记的回调 URL。当 Agent 跑在无图形界面的 VPS 上,这个回调无处落地,常规解法是在本地建 SSH 端口隧道把回调转发到服务器。教程选择手动复制回调 URL 粘贴回终端,本质上是把这步人工化,省去隧道配置,代价是每次授权需手动操作一次。
九、定时任务、多档案与子 Agent 委派
定时任务用自然语言就能创建,比如「每天早上通过 WhatsApp 给我发一份股市简报」,Hermes 会生成对应的 cron job。hermes cron list 查看、hermes cron remove 删除。教程里演示的定时任务最初只推送了表格没推图,反馈之后自行修正——这类小问题在实际使用中会经常遇到,需要一点耐心调。
多档案(profile)让同一台服务器跑多个独立实例。hermes profile create life-coach 创建后,用 hermes life-coach setup 单独配置,每个人格有自己的 soul.md、模型、工具和记忆。hermes profile use life-coach 可切为默认。桌面端的价值在这里体现得更明显:可以建群聊,让默认 Hermes 和生活教练同时在场,风格差异一目了然。
子 Agent 委派是另一个实用能力。一句「用子 Agent 并行研究这几只股票」,就会触发多个后台子 Agent 同时工作、各自汇报、再由主 Agent 汇总。也可以把编码任务外包给 Claude Code:在服务器上装好并登录后,Hermes 有一个内置的 Claude Code 技能,会把任务以 Markdown 形式提交给 Claude 的无头模式执行。

十、钩子:在 Agent 生命周期上挂自定义逻辑
钩子是整篇教程里最技术向的部分,分三类:网关钩子、Shell 钩子和插件钩子。
网关钩子是只读的,用于监控和告警,能响应消息渠道上发生的事件,但无法改变模型行为或注入上下文。教程建了一个 session-alert 钩子,在 .hermes/hooks/ 下写 HOOK.yaml 声明事件与描述,再写 handler.py 处理逻辑,重启网关后生效。作者在这里踩了个坑:最初监听的 session:start 事件没有触发,换成会话重置事件后才收到回调——说明这类事件名需要对着文档确认,不能想当然。
Shell 钩子写在 config.yaml 的 hooks 段里,能力更强,可以挂到 pre-LLM call、post-LLM call、pre-tool call 等节点上。教程给了两个极简示例:一个 pre-LLM 钩子执行 shell 脚本,往每轮提示词里注入「请在回答末尾加上 greetings from the hook」;一个 pre-tool 钩子用 Python 脚本拦截包含 ls 的命令,Agent 尝试执行时被告知「LS 被你的钩子阻止了」。
这类机制的实际用途比示例大得多。作者提到自己在另一个视频里用 pre-LLM 钩子做了请求分流:简单请求直接走预设命令,不必进入推理流程,借此缩短响应时间。这才是钩子真正的价值所在——在模型之外加一层确定性的控制逻辑。
十一、语音与收尾判断
语音能力分两档。基础的双向语音转文字和文字转语音开箱即用:在 WhatsApp 里发语音条会自动转写,发送 /voice on 后 Agent 会用语音回复。真正的实时语音通话需要桌面端,并且在服务器的 .env 里配置 OpenAI API Key,然后在语音设置里把模式从 chained 改为 gpt live,即可实现可打断的实时对话。唤醒词(默认「hey hermes」)这个功能作者实测有延迟,他自己也说这块比较 buggy,属于可以期待但暂不作为核心依赖的能力。
回到整体判断:Hermes 的门槛明显高于 Dots、Duet 这类托管产品,需要你熟悉终端、愿意折腾配置。但它换来的可定制性也是托管方案给不了的——模型自选、数据自持、技能自建、生命周期可挂钩子。对工程师和喜欢自己搭建工作流的人来说,这是当前开源常驻 Agent 里值得投入时间的一个选项。
相关推荐

5.3英寸手机众筹:小屏复兴还是599美元的无奈?
Enough Phone 在 Kickstarter 众筹,5.3 英寸小屏搭配 8GB 内存和 5000 万像素传感器,定价 599 美元。The Vergecast 讨论小屏手机能否在旗舰大屏与功能机之间找到中间地带,以及廉价手机为何越来越难做。

Asahi Linux弃用MIT转GPL:一场针对Omarchy的闹剧?
Asahi Linux将代码许可证从MIT改为GPL V2,指控Omarchy窃取代码并商业化。分析认为此举理由牵强且违反MIT协议,暴露开源社区政治分歧与AI争议。

5分钟读懂NVIDIA Dynamo前端:兼容OpenAI的推理架构入口
NVIDIA Dynamo前端是什么?本文基于官方5分钟系列视频,解析它如何以OpenAI兼容API作为稳定边界,实现后端引擎替换、路由与KV缓存复用的解耦架构。