VPS 部署 Hermes Agent(二):模型接入与消息网关教程

上一篇我们一分钟把 Hermes Agent 装上了 VPS,跑通了 hermes setup 向导、能开始对话。这篇解决两个“真正用起来”的问题:

  1. 模型从哪来、怎么换:Hermes 自己不装大模型,推理全靠“接”各家 API——本篇讲清四类接入路线,以及如何随时切换主模型(hermes model / 会话内 /model)。
  2. 怎么把 Agent 变成 7×24 的“随身助手”:接入 Telegram / WhatsApp / 飞书 / 微信等消息平台,出门在外发条消息就能指挥它干活、查状态、收定时任务结果。

顺带把工具(Tools)与“学习循环”(技能 + 记忆)讲清楚——这才是它“越用越顺手”的底层机制。


快速看懂本篇

上一篇:hermes 已装好、能对话
  ├─ 本篇① 模型接入:模型走云端 API,VPS 不跑大模型
  │     路线:Nous Portal 订阅 | 官方直连 Key | OpenAI 兼容中转/自建 | 本地模型
  │     切换:hermes model(会话之间)/ /model(会话内即时切换)
  ├─ 本篇② 消息网关:一个常驻后台进程,同时接 Telegram / WhatsApp /飞书…
  │     重点教程:Telegram、WhatsApp、飞书/Feishu、微信(个人 Weixin + 企业微信)
  └─ 本篇③ 工具与学习循环:hermes tools 开工具;技能 Skills;记忆 Memory

一、模型接入:先搞懂 Hermes 的“大脑”结构

1.1 主模型 vs 辅助模型

Hermes 使用两类模型槽位

槽位 用途 默认设置
主模型(Main model) Agent 的“大脑”:每句对话、工具调用、流式输出都由它处理。 你在 setup 时选择的模型。
辅助模型(Auxiliary models) 处理上下文压缩、看图、网页摘要、命令审批、会话标题等轻量任务。 全部为 auto,即沿用主模型;也可以单独覆盖。

对普通用户而言,只需要关心主模型即可;辅助模型保持 auto 就行。后续若想省钱或提速,再把上下文压缩等辅助任务指定给更便宜的 flash 模型。

1.2 四条接入路线怎么选

路线 本质 费用 / 门槛 适合谁
① Nous Portal 订阅 OAuth 登录一次,300+ 模型与工具网关统一接入。 订阅制,一个账号一条账单。 不想管理一堆 API Key、希望 5 分钟跑起来的用户。
② 官方厂商直连 API 直接使用 DeepSeek、OpenRouter、OpenAI、Gemini 等厂商 API Key。 各厂商按量计费,需要分别开通 Key。 已有某家 Key,或希望直连省钱的用户。
③ OpenAI 兼容中转 / 自建网关 填写 Base URL 和 Key,通过兼容接口调用模型。 中转服务通常按量或订阅。 国内直连不稳定,或团队已有统一 API 网关的用户。
④ 本地模型 通过 Ollama、LM Studio、vLLM 等在自己的机器上运行模型。 电费、硬件和显存成本。 数据敏感、离线环境或具备 GPU 的进阶用户。

四种路线并不冲突。Nous Portal 可以和其他厂商 Key 并存,在会话内用 /model 随时切换,不会相互覆盖。

1.3 路线①:Nous Portal(最省事)

如果你已有 Nous Portal 订阅,可以使用:

hermes model

然后在提供商列表中选择 Nous Portal,浏览器会自动打开登录页面,完成登录并选择模型即可。

如果上一章已经执行过:

hermes setup --portal

那么模型、登录和工具网关一般已经配置完成。

登录后可使用以下命令检查状态:

hermes portal info    # 登录状态、订阅信息、模型与工具网关路由
hermes portal tools   # 工具网关中各工具当前走哪条路

订阅中通常可以直接使用带厂商前缀的模型 slug,例如:

anthropic/claude-sonnet-4.6
openai/gpt-5.5-pro
google/gemini-3-pro-preview
deepseek/deepseek-v4-pro

Portal 会在后台路由到对应厂商,相关账单统一由 Nous Portal 管理。

1.4 路线②:官方厂商直连(自带 Key)

hermes model
# 选择厂商 → 粘贴 API Key(密文,不回显)→ 选择模型

常见官方模型提供商如下:

厂商 环境变量 直连 Base URL
DeepSeek DEEPSEEK_API_KEY https://api.deepseek.com/v1
OpenRouter OPENROUTER_API_KEY https://openrouter.ai/api/v1
OpenAI OPENAI_API_KEY https://api.openai.com/v1
Anthropic Claude ANTHROPIC_API_KEY Hermes 内置,无需手填。
Google Gemini GOOGLE_API_KEY / GEMINI_API_KEY Hermes 内置。
智谱 GLM GLM_API_KEY Hermes 内置,国内通常可直连。
Kimi / Moonshot KIMI_API_KEY / KIMI_CN_API_KEY api.moonshot.ai / api.moonshot.cn
MiniMax MINIMAX_API_KEY / MINIMAX_CN_API_KEY Hermes 内置。
Qwen / 阿里云百炼 DASHSCOPE_API_KEY Hermes 内置,支持国际与国内端点。

实际支持的厂商远不止这些,直接运行 hermes model 查看菜单即可。列表中已有的厂商通常已配置官方默认 Base URL,你只需要填 API Key。

1.5 路线③:OpenAI 兼容中转 / 自建网关

这是国内 VPS 上非常常见的使用方式:官方 API 连不上,或者你有自己的 OpenAI 兼容网关。

hermes model
# 提供商列表滚到底部 → 选择 "Custom endpoint (enter URL manually)"

向导通常会依次询问:

API base URL [e.g. https://api.example.com/v1]:
API key [optional]:
  • Base URL 填中转地址;
  • 多数 OpenAI 兼容中转要求地址以 /v1 结尾;
  • API Key 按服务商要求填写;无鉴权网关可留空;
  • Hermes 会自动探测可用模型,也可以手动输入模型名称;
  • 最后为该连接设置一个显示名称,方便以后在列表中识别。

也可以直接编辑配置文件:

# ~/.hermes/config.yaml
providers:
  my-relay:
    api: https://relay.example.com/v1
    api_key: sk-xxxx

1.6 检查当前生效的模型

hermes config get model --json    # 查看 model.provider / model.default
hermes status                     # 查看当前模型、终端后端、工具、技能等状态

1.7 会话内即时切换模型(重点)

通过配置修改的是默认模型,通常仅对新会话生效。正在聊天时想立即切换模型,使用斜杠命令:

/model
/model anthropic/claude-sonnet-4.6
/model openai/gpt-5.5-pro --global
/model deepseek/deepseek-v4-pro --once
/model fav
  • /model:打开模型选择器;
  • /model 厂商/模型:仅当前会话立即切换;
  • --global:切换并写入 config.yaml,作为以后新会话默认模型;
  • --once:只让下一轮对话使用该模型,之后自动恢复;
  • /model fav:使用自定义模型别名。

给常用模型设置别名:

# ~/.hermes/config.yaml
model_aliases:
  fav:
    model: claude-sonnet-4.6
    provider: anthropic
  cheap:
    model: deepseek-v4-flash
    provider: deepseek

也可以不编辑 YAML,直接执行:

hermes config set model.aliases.cheap deepseek/deepseek-v4-flash

会话中途切换模型会重置该模型的 prompt 缓存,下一轮可能需要重新读取整段上下文。长对话尽量在一开始选好模型,不建议频繁来回切换。


二、消息网关:把 Agent 接进 Telegram / WhatsApp / 飞书 / 微信

2.1 网关是什么

Hermes 的 gateway 是一个常驻后台进程。它可以同时连接多个消息平台,例如 Telegram、Discord、Slack、WhatsApp、Matrix、QQ、飞书、企业微信等。

每一个聊天对象或群聊都会占用一个独立 Agent 会话,网关还会负责投递 cron 定时任务的运行结果。

Telegram ┐
WhatsApp ┼→ Hermes Gateway(单个常驻进程)→ 每个聊天一个独立 Agent 会话
Discord  ┘        ↕ 后台还会跑:cron 调度 / 语音 / 技能 / 记忆

官方完整能力说明可参考:Messaging Gateway 文档

2.2 网关基础操作

hermes gateway setup     # 交互式配置消息平台
hermes gateway           # 前台运行,调试用;Ctrl+C 退出
hermes gateway install   # 注册为系统服务
hermes gateway start     # 启动后台服务
hermes gateway status    # 查看状态
hermes gateway stop      # 停止服务

配置完成后,推荐将网关注册为系统服务,让它在 VPS 上长期运行并开机自启。

2.3 Telegram 完整教程(最推荐)

Telegram 是 Hermes 支持较完整的平台之一,支持文本、语音留言、图片、文件和群聊使用。

Step 1:用 @BotFather 创建 Bot 并获取 Token

  1. 在 Telegram 搜索 @BotFather,或访问 t.me/BotFather
  2. 发送 /newbot
  3. 设置 Bot 显示名称,例如 My Hermes
  4. 设置一个以 bot 结尾的唯一用户名,例如 my_hermes_bot
  5. BotFather 会返回 API Token,格式类似:
123456789:ABCdefGHIjklMNOpqrSTUvwxYZ

Token 相当于 Bot 密码。不要泄露,也不要提交到代码仓库。若 Token 泄露,立刻到 BotFather 中使用 /revoke 作废并重新生成。

Step 2:关闭群聊隐私模式(可选但强烈建议)

Telegram Bot 默认启用了隐私模式。在群聊中,它只能看到斜杠命令、回复 Bot 的消息和部分服务消息,普通聊天内容不会被接收。

如需让 Bot 在群聊中正常参与对话,按以下路径操作:

@BotFather → /mybots → 选择你的 Bot → Bot Settings → Group Privacy → Turn off

修改隐私设置后,需要先将 Bot 从群中移除,再重新拉进群,Telegram 才会刷新设置。

Step 3:获取自己的数字 User ID

Hermes 使用数字 User ID 控制谁可以指挥 Bot,而不是 Telegram 用户名。

@userinfobot 发一条消息,它会返回你的数字 ID,例如:

123456789

Step 4:配置 Hermes

hermes gateway setup

在向导中勾选 Telegram,粘贴 Bot Token,并填写允许使用 Bot 的 User ID。多个 ID 一般使用逗号分隔。

也可以手动写入 ~/.hermes/.env

TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrSTUvwxYZ
TELEGRAM_ALLOWED_USERS=123456789

默认安全策略是:不在允许名单中的用户,Bot 一律不响应。建议不要关闭该限制,因为 Hermes 可能具备执行服务器命令的权限。

Step 5:启动并验证

hermes gateway

先以前台模式启动,正常情况下数秒内即可看到连接成功日志。

然后在 Telegram 给 Bot 发一条普通消息,例如:

你好,报告一下这台 VPS 的状态

如果 Bot 能正常回复,说明已经配置成功。你还可以发送:

/status

查看当前会话状态。

/start 通常会被 Hermes 静默确认,可能不会产生完整对话回复。因此验证时建议发送普通文本消息,而不是只发送 /start

验证成功后按 Ctrl + C 停止前台进程,并注册为后台服务:

hermes gateway install
hermes gateway start
hermes gateway status

上线后建议立刻完成两件事

  1. 在 Telegram 与 Bot 的聊天中发送 /sethome,将该聊天设为 home channel。之后 cron 定时任务的结果会推送到这里。
  2. 发送 /model 查看或切换当前模型,发送 /status 查看会话状态。

2.4 WhatsApp:官方 Cloud API 路线

Hermes 支持两条 WhatsApp 接入路线。官方文档建议优先使用WhatsApp Business Cloud API

项目 WhatsApp Business Cloud API Baileys 非官方桥
性质 Meta 官方接口,适合生产环境。 模拟网页版登录,属于非官方方案。
前提 需要 Meta 企业账号与企业号码。 个人号码即可。
公网要求 需要 HTTPS 公网地址接收 Meta webhook。 通常不需要。
风险 稳定、合规。 存在封号风险。

Cloud API 快速配置命令:

hermes whatsapp-cloud

官方向导会带你完成凭据填写与即时校验。大致流程如下:

  1. 创建 Meta App
    前往 developers.facebook.com/apps,创建 App 并选择 WhatsApp 用途。需要获取:

    • Phone Number ID;
    • Access Token;
    • App Secret。
  2. 提供 HTTPS 公网地址
    推荐使用 Cloudflare Tunnel:
cloudflared tunnel --url http://localhost:8090

记录命令输出的公网地址,例如:

https://xxx.trycloudflare.com
  1. 在 Meta 后台配置 Webhook
    Callback URL 填:
https://你的地址/whatsapp/webhook

Verify Token 填 Hermes 向导生成的值,并订阅 messages 字段。

  1. 配置允许名单
    Hermes 会写入 WHATSAPP_CLOUD_ALLOWED_USERS。多个号码用逗号分隔,号码需包含国家码,但不带 +

WhatsApp 有 24 小时客服窗口限制:用户最后一条消息超过 24 小时后,Bot 只能使用 Meta 预审通过的模板消息回复。这是 Meta 平台规则,不是 Hermes 的限制。

只想个人测试且不想使用 Meta 企业号,也可以选择 Baileys 非官方桥接方案,但请自行承担封号等风险。

2.5 飞书 / Lark 完整教程(国内推荐)

飞书(Feishu,国际版名称为 Lark)对 Hermes 的支持较完整,支持文本、图片、音视频、文件、群聊 @ 响应和交互卡片等能力。

飞书默认支持 WebSocket 长连接,因此 VPS 不需要公网 IP、域名或反向代理。

Step 1:创建飞书应用

有两种方式可选:

  • 方式 A:扫码自动创建(推荐)
    运行 hermes gateway setup,勾选 Feishu / Lark,然后使用飞书 App 扫终端二维码。Hermes 会自动创建带正确权限的机器人应用并保存凭据。
  • 方式 B:手动创建
    访问 飞书开放平台;国际版使用 Lark 开放平台。创建企业自建应用后,在“凭证与基础信息”复制 App ID 与 App Secret,并开启机器人能力。

如果使用手动创建方式,还需要:

  1. 在权限管理中至少添加 im:messageim:message:send_as_botim:resourceim:chatim:chat:readonly 等权限;
  2. 在事件订阅中订阅 im.message.receive_v1,并选择长连接(WebSocket)方式;
  3. 在版本管理中发布一个新版本;权限和事件发布后才能生效。

Step 2:配置 Hermes

hermes gateway setup
# 勾选 Feishu / Lark → 扫码或填写 App ID / App Secret → 完成

也可以手动写入 ~/.hermes/.env

FEISHU_APP_ID=cli_xxx
FEISHU_APP_SECRET=secret_xxx
FEISHU_DOMAIN=feishu
FEISHU_CONNECTION_MODE=websocket
FEISHU_ALLOWED_USERS=ou_xxx,ou_yyy
FEISHU_HOME_CHANNEL=oc_xxx
  • FEISHU_DOMAIN=feishu:中国大陆飞书;国际版改为 lark
  • FEISHU_CONNECTION_MODE=websocket:推荐值,不需要公网 HTTPS。
  • FEISHU_ALLOWED_USERS:允许使用机器人功能的用户 open_id,强烈建议配置。
  • FEISHU_HOME_CHANNEL:可选,用于接收 cron 定时任务结果。

Step 3:启动并验证

hermes gateway

先在前台启动,检查日志是否连接成功。之后到飞书中私聊机器人发送普通消息即可测试。

群聊中一般需要@机器人,或者使用 @all 才会触发响应。

飞书群聊行为与安全配置

目标效果 配置
群聊中必须 @ 机器人才响应 FEISHU_REQUIRE_MENTION=true(默认)
群消息只允许白名单用户使用 FEISHU_GROUP_POLICY=allowlist,配合 FEISHU_ALLOWED_USERS
完全禁止群聊 FEISHU_GROUP_POLICY=disabled
群内每人使用独立会话 group_sessions_per_user: true(默认)

2.6 微信个人号(Weixin)教程

重要说明:Hermes 的 Weixin 适配器接入的是个人微信 iLink Bot API。扫码登录后得到的是一个 iLink 机器人身份,而不是你原本可以加群的普通微信号。

因此,个人微信接入更适合单聊私信场景。普通微信群聊通常无法稳定收发消息。如果需要完整群聊能力,建议使用企业微信或飞书。

Step 1:安装依赖

pip install aiohttp cryptography

# 若需要终端直接显示二维码,可安装 messaging 扩展
cd ~/.hermes/hermes-agent && uv pip install -e ".[messaging]"

Step 2:扫码登录

hermes gateway setup
# 勾选 Weixin → 终端显示二维码或登录链接 → 手机微信扫码
# 手机上确认登录 → 凭据自动保存到 ~/.hermes/weixin/accounts/

登录成功后会显示类似信息:

微信连接成功,account_id=your-account-id

如果登录态过期,日志中出现 errcode=-14,重新执行扫码流程即可。

Step 3:配置允许名单并启动

# ~/.hermes/.env
WEIXIN_ACCOUNT_ID=your-account-id
WEIXIN_DM_POLICY=allowlist
WEIXIN_ALLOWED_USERS=user_id_1,user_id_2

然后启动网关:

hermes gateway

想获取其他用户的微信 user_id,正确方式是让对方直接给 iLink 机器人发送私信,然后从 Hermes 网关日志中读取对方 ID,再加入允许名单。

个人微信接入要点

  • 使用长轮询,不需要公网 Webhook 或 WebSocket;
  • 支持图片、视频、文件和语音;媒体文件需要 cryptography 进行 AES-128 解密;
  • 支持 Markdown 回复,长文本超过 4000 字符会自动分块;
  • 单聊策略默认可能偏开放,建议显式改为 allowlist
  • 群聊策略建议保持 disabled,普通微信群通常不适合此方案。

2.7 企业微信(WeCom)教程

如果需要微信生态中的完整私聊、群聊和流式回复能力,企业微信(WeCom)通常是更合适的方案。

Hermes 通过企业微信的 AI Bot WebSocket 网关接入,使用常驻连接,通常不需要公网端点

Step 1:创建 AI Bot

  • 扫码自动创建(推荐):运行 hermes gateway setup,勾选 WeCom,用企业微信 App 扫码,向导会自动创建 AI Bot 并保存凭据。
  • 手动创建:登录企业微信管理后台 → 应用管理 → 创建应用 → AI Bot,填写名称和描述后复制 Bot ID 与 Secret。

企业微信方案需要企业微信组织账号。个人微信账号无法直接创建 WeCom AI Bot;如没有企业,可先创建测试企业。

Step 2:配置并启动

# ~/.hermes/.env
WECOM_BOT_ID=your-bot-id
WECOM_SECRET=your-secret
WECOM_ALLOWED_USERS=user_id_1,user_id_2
WECOM_HOME_CHANNEL=chat_id
hermes gateway

先私聊机器人测试;群聊中的触发方式以企业微信管理后台 AI Bot 的设置为准。

企业微信使用要点

  • 私聊与群聊策略通常默认为 open,生产环境建议设置允许名单;
  • 可以使用群聊白名单,例如 group_policy: allowlistgroup_allow_from
  • 支持 Markdown 回复,超过 4000 字符会自动分块;
  • 图片上限约 10MB,文件上限约 20MB,超限图片通常会降级为文件发送;
  • 支持原生流式输出,连接断开后通常会自动指数退避重连;
  • 接收到 AES 加密媒体时会自动解密,需要安装 cryptography

2.8 网关服务管理:VPS 开机自启

Linux(systemd)

hermes gateway install
hermes gateway start
hermes gateway status
journalctl --user -u hermes-gateway -f

为了让用户级服务在 VPS 重启后自动运行、SSH 断开后仍保持运行,可执行一次:

sudo loginctl enable-linger $USER

也可以安装为系统级服务,适合无桌面的 VPS:

sudo hermes gateway install --system
sudo hermes gateway start --system
sudo hermes gateway status --system
journalctl -u hermes-gateway -f

macOS(launchd)

hermes gateway install
hermes gateway start
hermes gateway status
tail -f ~/.hermes/logs/gateway.log

安装了新工具、更新 Node.js 或修改 PATH 后,建议重新运行一次 hermes gateway install,让服务单元刷新环境变量。

消息内常用运维命令

  • /restart:优雅重启网关;
  • /status:查看当前会话与运行状态;
  • /stop:中断正在执行的 Agent 任务。

2.9 更多平台与消息内常用命令

除 Telegram、WhatsApp、飞书、微信、企业微信外,Hermes 还可接入 Discord、Slack、Matrix、QQ、Teams、邮件、Signal、SMS、Home Assistant 等平台。

基本操作一致:

hermes gateway setup

在多选清单中选择平台,再根据向导填写 Token 或授权凭据即可。完整平台说明可参考官方 Messaging 文档目录

常见国内平台接入难度对比:

平台 特点
飞书 功能完整、支持 WebSocket、无需公网,适合国内用户。
企业微信 群聊完整、WebSocket 常驻、无需公网,适合团队协作。
个人微信 接入相对简单,但更适合单聊私信,群聊能力受限制。

注意:各平台的允许名单变量不同,例如:

DISCORD_ALLOWED_USERS
MATRIX_ALLOWED_USERS
FEISHU_ALLOWED_USERS
WECOM_ALLOWED_USERS
WEIXIN_ALLOWED_USERS

尤其是飞书、个人微信和企业微信,默认策略可能偏开放。建议在上线前显式设置白名单。

消息中最常用的斜杠命令

命令 作用
/new/reset 新建会话,清空当前聊天上下文。
/model [厂商/模型] 查看或切换当前会话模型;--global 永久修改,--once 仅下一轮使用。
/status 查看当前会话信息与最近总结。
/sethome 将当前聊天设为 home channel,用于接收 cron 定时任务结果。
/usage 查看当前会话 Token 用量和费用。
/stop 中断正在执行的 Agent。
/retry 重试上一条消息。
/undo 撤销最后一轮对话。
/voice on 开启语音回复(TTS)。
/whoami 查看自己在当前会话中的权限等级。
/help 查看完整命令列表。
/topic Telegram 私聊开启多主题会话模式。

2.10 网关安全红线

  1. 不要放开允许名单:不要开启 GATEWAY_ALLOW_ALL_USERS=true。这相当于把一台可执行命令的服务器暴露给所有人。
  2. 飞书、微信、企业微信必须设置白名单:上线前配置 FEISHU_ALLOWED_USERSWEIXIN_ALLOWED_USERSWECOM_ALLOWED_USERS
  3. 可使用配对码管理陌生用户:陌生人私聊时会获得一次性配对码,可通过 hermes pairing approve telegram <CODE> 批准;使用 hermes pairing listhermes pairing revoke 管理。
  4. 群聊中建议设置 @ 提及才响应:通过配置 require_mention: true,避免 Bot 在群里无意响应所有消息。
  5. 分层管理管理员与普通用户权限:允许名单控制谁能进入;allow_admin_fromuser_allowed_commands 控制不同用户可执行的命令范围。
  6. 谨慎启用语音转文字:STT 默认可能按 local → groq → openai 自动选择。不需要语音处理时,不要将 Bot 拉入语音群。

三、工具与“学习循环”:让它会干活、越用越懂你

3.1 工具(Tools):Agent 的“手脚”

Hermes 内置了大量工具,并按 toolset(工具集)分组,可根据平台和需求启用或禁用。

类别 工具示例
Web web_searchweb_extract:网页搜索与正文提取。
浏览器 browser_navigateclicktype:浏览器自动化。
终端与文件 terminalread_filepatch
代码 execute_codedelegate_task:代码执行和子 Agent 委派。
媒体 vision_analyzeimage_generatetext_to_speech
记忆与检索 memorysession_search
自动化 cronjob:定时任务。

工具开关与管理命令:

hermes tools
hermes chat --toolsets "web,terminal" -q "..."
  • hermes tools:交互式选择平台、启用或关闭工具集;如工具需要 Key,向导会继续询问。
  • hermes chat --toolsets:仅对当前一轮临时指定工具集。

Web 搜索默认可零配置使用:即使没有 API Key,web_searchweb_extract 也可以在部分服务的免费额度之间自动轮转。若需要更稳定的体验,可配置 Firecrawl、Tavily 等 Key,或部署 SearXNG 自建搜索服务。

3.2 Nous Tool Gateway:一个订阅,工具全包

如果使用付费 Nous Portal 订阅,Web 搜索、图片生成、TTS、云端浏览器等常用工具后端也可由订阅统一提供。

hermes model
# 选择 Nous Portal 后,向导会询问是否将工具切换到 Nous 订阅

hermes tools
# 单独选择某个工具并设置为 "Nous Subscription"

查看当前工具路由:

hermes portal info
hermes portal tools

工具后端可以混搭。例如 Web 搜索和图片生成走 Nous,但浏览器自动化继续走自己的 Browserbase Key。

免费 Nous 账号通常可用于模型推理,但工具网关属于付费订阅能力。订阅到期后,切回自己的 API Key 或自建后端即可。

3.3 技能(Skills):Agent 的“操作手册”

技能(Skills)是按需加载的知识文档,通常以 SKILL.md 存在,并兼容 agentskills.io 开放标准。

技能默认位于:

~/.hermes/skills/

平时技能不会一直占用上下文,只有使用时才会被加载。

每个已经安装的技能都会自动变成斜杠命令,例如:

/gif-search funny cats
/github-pr-workflow create a PR for the auth refactor
/ocr-and-documents /tmp/scan.pdf extract the tables

搜索和安装技能

hermes skills search pdf
hermes skills inspect <完整ID>
hermes skills install official/security/1password
hermes skills list
  • hermes skills search:搜索官方或社区技能库;
  • hermes skills inspect:安装前查看技能内容;
  • hermes skills install:使用完整 ID 安装技能;
  • hermes skills list:查看本地已安装技能。

最实用的 /learn:将流程沉淀为技能

/learn how I just deployed the staging server
/learn https://docs.example.com/api/quickstart
/learn the REST client in ~/projects/acme-sdk

Agent 会读取你提供的流程、文档或目录,并生成符合规范的 SKILL.md。之后只需调用对应技能,或用自然语言描述相似任务,即可复用这套操作。

资料较多时,Hermes 可能会生成“索引 + 参考文件”的结构,避免每次加载全部内容,占用过多 Token。

3.4 持久记忆(Memory):跨会话记住你

Hermes 的持久记忆通常由两份笔记组成:

文件 内容 容量上限
MEMORY.md 环境事实、项目约定、踩坑经验、长期知识等。 约 2,200 字符(约 800 Tokens)
USER.md 你的偏好、沟通风格、常用要求等。 约 1,375 字符(约 500 Tokens)

默认存放路径:

~/.hermes/memories/

每次会话开始时,记忆内容会作为快照注入系统提示词。例如你告诉它“不要使用 sudo,我已经在 docker 组”,或者“我偏好简短回复”,这些可复用信息就可能被写入记忆。

/memory
hermes journey
hermes journey list
  • /memory:查看待审批的记忆写入;
  • hermes journey:查看技能和记忆随时间积累的学习时间线;
  • hermes journey list:列出已学到的技能与记忆节点,可编辑或删除。

记忆与会话搜索的区别

  • 记忆(MEMORY.md / USER.md):每次会话都会加载的“贴身便签”,容量有限。
  • 会话搜索(session_search):搜索全部历史会话记录,例如询问“我们上周讨论过 X 吗”,Agent 会通过 SQLite 索引查找历史内容。

如果不希望 Agent 自动写入记忆,可在配置中启用审批:

memory.write_approval: true

启用后,记忆写入会进入待审批队列,需要通过 /memory approve/memory reject 决定是否生效。

技能写入也可以启用审批:

skills.write_approval: true

四、常见问题 FAQ

Q1:改了 hermes model 默认模型,为什么正在聊的会话没变?

A:这是正常现象。配置文件修改通常只对新会话生效。正在进行的对话需要使用:

/model 厂商/模型

想永久设置默认模型,则加上:

--global

Q2:hermes model 中没有可用提供商,或者提示 No authenticated providers?

A:通常是因为当前没有有效凭据。可以:

  1. ~/.hermes/.env 中补充对应厂商 API Key;
  2. hermes model 中使用 Custom endpoint 配置中转接口;
  3. 对于 Nous Portal、Anthropic、Copilot 等 OAuth 类提供商,重新登录一次。

Q3:Telegram Bot 在群里不响应?

A:按顺序检查:

  1. 是否已在 BotFather 中关闭群聊隐私模式;关闭后需移除并重新拉入群;
  2. 发送者的数字 ID 是否在 TELEGRAM_ALLOWED_USERS 中;
  3. 是否开启了 require_mention: true;若开启,需要 @Bot 或回复 Bot 的消息。

Q4:WhatsApp 一定要企业号吗?

A:使用官方 Cloud API 时,需要 Meta 企业账号、企业号码和 HTTPS 公网地址。个人测试可使用 Baileys 非官方桥,但存在封号风险。

Q5:hermes gateway setup 和 hermes setup gateway 有什么区别?

A:两者都能进入消息平台配置流程。区别仅在入口:

  • hermes gateway setup:属于网关命令组,配置完成后更适合继续执行 start、stop、status、install 等网关管理操作;
  • hermes setup gateway:属于完整 setup 向导中的网关配置部分。

日常建议优先使用 hermes gateway 这一组命令。

Q6:Agent 会把我说的每句话都写进记忆吗?

A:不会。它通常只记录有价值、可复用的信息,例如个人偏好、环境事实、项目约定和经验。想完全控制记忆写入时,可启用:

memory.write_approval: true

Q7:Web 搜索工具需要单独注册账号吗?

A:不一定。新装环境通常可使用免费额度轮转。需要更稳定的使用体验时,可配置 Firecrawl、Tavily、SearXNG 等后端;有付费 Nous Portal 订阅则可直接使用 Tool Gateway。

Q8:飞书机器人一定要有公网 IP 或域名吗?

A:不需要。飞书默认使用 WebSocket 长连接,Hermes 主动连接飞书,VPS 无需公网端点。只有使用 webhook 模式时,才需要公网 HTTPS 地址。

Q9:个人微信接入后为什么在群里收不到消息或无法 @?

A:个人微信适配器使用的是 iLink 机器人身份,不是普通微信账号。iLink 机器人通常无法加入普通微信群或接收普通群消息,这是平台限制。需要多人群聊协作时,建议使用企业微信或飞书。

Q10:飞书或企业微信机器人在群中不响应怎么办?

A:按以下方向检查:

  • 飞书默认需要 @机器人@all 才响应;
  • 检查 FEISHU_GROUP_POLICYWECOM_GROUP_POLICY 是否设置为 disabled
  • 检查发送者是否在 FEISHU_ALLOWED_USERSWECOM_ALLOWED_USERS 白名单中;
  • 企业微信默认可能是 open,若后续收紧了策略,也需按白名单逻辑检查。

五、注意事项

  1. Token 就是权限:Telegram Bot Token、模型 API Key、飞书 App Secret、企业微信 Secret 都不要泄露。Telegram Token 泄露后立即在 BotFather 中执行 /revoke
  2. 不要开放所有用户:建议用白名单或配对码管理用户,不要开启 ALLOW_ALL_USERS 一类全开放配置。
  3. 会话中途切模型会有缓存成本:长对话请提前确定模型,避免频繁 /model 来回切换。
  4. 记忆和技能需要备份~/.hermes/memories/~/.hermes/skills/ 是长期资产,建议纳入备份;可使用 hermes backup
  5. 7×24 在线意味着持续计费:模型和工具通常按量收费,注意使用 /usage 观察消耗,设置预算和限额。
  6. 日志是排错第一入口:Linux 用户级服务使用 journalctl --user -u hermes-gateway -f;系统服务移除 --user;macOS 可查看 ~/.hermes/logs/gateway.log

结语

到这篇结束,你的 Hermes Agent 已经具备完整的三件套:

  • 想用哪个模型随时切:Nous Portal、官方 API Key、OpenAI 兼容中转均可接入;
  • 多平台随身指挥:Telegram、WhatsApp、飞书、企业微信、个人微信可通过常驻网关接入;
  • 会开工具、能学技能、记得住你:通过 Tools、Skills、Memory 让 Agent 越用越顺手。

站内相关阅读

上一篇 VPS 部署 Hermes Agent(一):一分钟安装开源 AI 智能体
下一篇 VMISS 洛杉矶 US.LA.TRI VPS 测评:联通 9929 + 移动 CMIN2 回程