一、Gateway消息网关:连接一切的消息中枢

在前两天,我们搭建了 Hermes Agent 本地环境,并解锁了 Skill 技能体系。但 Hermes 的真正威力在于——你可以通过你日常使用的聊天工具来调用它,而不是每次都打开终端敲命令。这就是 Gateway 消息网关的使命。

1. Gateway 是什么

Gateway 是 Hermes Agent 的消息路由层,负责将外部即时通讯平台的消息转发给 Hermes 内核处理,再把结果返回给用户。简单说,它是 Hermes 的"耳朵"和"嘴巴"。

核心架构就是:你发消息到飞书/微信/Telegram → Gateway 接收 → 传给 Hermes 处理 → Gateway 把结果发回给你。整个过程丝滑无缝,你在聊天框里就能完成代码查错、系统运维、信息查询等一切操作。

2. 支持平台列表

Gateway 目前支持 15+ 平台,覆盖主流 IM 工具:

平台类型说明
飞书(Lark/Feishu)企业IM国内团队首选,支持卡片消息
Telegram社交IM全球通用,Bot API 成熟
Discord社群IM面向社区和游戏玩家
Slack企业IM国际企业协作标配
WeChat(微信)社交IM通过个人号或企微接入
Matrix去中心化IM开源协议,自托管
WhatsApp社交IM全球用户量最大
QQ社交IM国内用户基数大
LINE社交IM日韩及东南亚常用
SMS(短信)传统通信通过 Twilio 等网关
Email传统通信通过 SMTP/IMAP
WebhookHTTP回调自定义集成
MQTTIoT协议物联网场景
WebSocket实时通信自定义实时通道
命令行(CLI)本地终端保留原始 CLI 入口

注意:各平台的适配器(adapter)成熟度不同,飞书和 Telegram 是目前最稳定推荐的选择。

3. 安装与启动

Gateway 作为 Hermes 的内置模块,安装方式极简:首次安装会自动拉取依赖的 adapter 包,并为每个平台生成默认配置模板。

# 安装 Gateway 模块
hermes gateway install

# 查看安装状态
hermes gateway status

# 启动 Gateway(读取 .env 配置后启动所有已启用的平台)
hermes gateway start

4. 日常管理命令

# 查看 Gateway 运行状态
hermes gateway status

# 重启(修改配置后常用)
hermes gateway restart

# 停止所有平台连接
hermes gateway stop

# 以调试模式运行(前台打印详细日志)
hermes gateway run --debug

日常维护就这三板斧:安装、启动、状态检查。配置相关的操作放在各平台自己的 .env 中,后面会细讲。


二、飞书机器人接入:让 Hermes 出现在你的聊天列表

飞书(Feishu/Lark)是国内企业协作的主流平台。将 Hermes 接入飞书后,你可以在飞书群里直接和 AI Agent 对话,下达运维指令、查询系统状态、获取资讯推送。

1. 飞书开发者后台创建应用

第一步,在飞书开放平台创建一个机器人应用:

(1)打开 飞书开发者后台 ,点击「创建应用」→「企业自建应用」。

(2)填写应用名称(例如"小刘运维助手")、描述,上传头像。

(3)创建完成后,进入「凭证与基础信息」页面,记录以下两项:

  • App ID(应用唯一标识)
  • App Secret(应用密钥,注意保密)

(4)在左侧菜单找到「权限管理」,搜索并添加以下权限:

  • im:message — 发送和接收消息
  • im:resource — 上传和下载消息中的资源
  • contact:user.base:readonly — 读取用户基础信息(选配)

(5)在左侧菜单找到「事件与回调」,配置消息接收模式。Gateway 支持两种方式:

  • WebSocket 模式(推荐):配置简单,无需公网服务器
  • Webhook 模式:需要公网地址,适用于已有服务器场景

本文以 WebSocket 模式为例。

(6)在「事件与回调」→「添加事件」中,搜索并订阅 im.message.receive_v1(接收消息事件)。

(7)最后,在「版本管理与发布」中创建版本并「申请发布」。发布后需企业管理员审核通过。

2. 配置 .env 文件

回到 Hermes 的工作目录(通常是 ~/.hermes/ 或你运行 hermes install 的目录),编辑 .env 文件:

# 飞书配置
FEISHU_APP_ID=cli_xxxxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxx
FEISHU_MODE=websocket

如果使用的是飞书国际版(Lark),还需要额外指定:

FEISHU_DOMAIN=lark

配置完成后,启动 Gateway 验证:

hermes gateway start

3. 启动验证与测试

启动后可以通过以下方式验证连接是否成功:

# 查看 Gateway 日志
hermes gateway status

# 前台运行,观察详细日志
hermes gateway run --debug

如果看到类似以下日志,说明飞书机器人已经成功上线:

[INFO] Feishu adapter connected via WebSocket
[INFO] Gateway is ready. Listening on all enabled platforms...

现在打开飞书,搜索你创建的应用名称,给它发一条消息试试:

你好,帮我查一下这台服务器的磁盘使用情况

Hermes 会调用系统命令执行 df -h 并返回结果。

4. 常见问题

Q1:飞书机器人没有响应消息

  • 检查 App ID 和 App Secret 是否填写正确
  • 确认事件 im.message.receive_v1 已订阅
  • 确认应用已发布并通过审核
  • 检查网络能否访问 open.feishu.cn(国内网络通常无问题)

Q2:WebSocket 频繁断开重连

  • 检查网络稳定性
  • 确认防火墙没有拦截 WebSocket 连接
  • 尝试升级到最新版 Gateway:hermes gateway update

Q3:无法接收图片或文件

  • 检查是否已添加 im:resource 权限
  • 飞书对图片大小有限制,建议不超过 10MB

Q4:想限制哪些人可以使用机器人

  • 可以在 Gateway 配置中设置 FEISHU_ALLOWED_USERS,只允许指定用户或群聊使用
  • 示例:FEISHU_ALLOWED_USERS=user1,user2,group1

三、定时任务实战:每天自动推送资讯到飞书

有了飞书机器人和 Gateway,我们的 Hermes 已经"在线"了。但如果我们希望它主动推送信息——比如每天早上 9 点自动把当天的行业资讯、系统状态报告发到飞书群——就需要定时任务了。

1. 场景需求

作为一个小刘运维博主,每天早上都要整理 IT 运维资讯发布到飞书技术群。手动做太累,我们要让 Hermes 每天自动:

  • 帮我整理 IT 运维资讯发布到飞书技术群
  • 用 AI 总结成简短摘要
  • 通过飞书机器人推送到指定群聊

2. 机器人收到结果

3. 创建 Cron 任务

在 Hermes 中,Cron 定时任务有两种配置方式:

方式一:直接说

在 Skill 类中添加 cronjob() 方法,返回调度参数:

方式二:通过命令行注册

# 注册一个定时任务,每天 9 点执行 skill
hermes cron add --skill daily_news_cn --schedule "0 9 * * *" --platform feishu --target chat_xxxxxxxxx

# 查看已注册的定时任务
hermes cron list

# 删除任务
hermes cron remove --id daily_news_cn

4. Cron 参数说明

参数说明示例
scheduleCron 表达式(分 时 日 月 周)"0 9 * * *" 每天早上9点
description任务描述(可选)"每日资讯推送"
platform推送目标平台feishu telegram slack
target目标 ID(用户或群聊)chat_xxxxxxxxx
timezone时区(默认 UTC)Asia/Shanghai
enabled是否启用true / false

Cron 表达式速记:

* * * * *
│ │ │ │ │
│ │ │ │ └── 星期 (0-7, 0和7都表示周日)
│ │ │ └──── 月份 (1-12)
│ │ └────── 日期 (1-31)
│ └──────── 小时 (0-23)
└────────── 分钟 (0-59)

常见表达式:

  • 0 9 * * * — 每天 09:00
  • */30 * * * * — 每 30 分钟
  • 0 8,18 * * * — 每天 08:00 和 18:00
  • 0 0 * * 1 — 每周一凌晨

5. 效果验证

注册完成后,可以通过以下方式验证:

# 查看 Gateway 日志,确认 Cron 系统已加载
hermes gateway status

# 查看所有定时任务
hermes cron list

# 如果想立即测试(不用等到明天 9 点),可以手动触发一次
hermes cron trigger --id daily_news_cn
#也可以直接说
马上执行这个定时任务看看效果

手动触发后,检查飞书群是否收到了资讯推送消息。如果成功了,你应该能看到一条格式清晰的每日资讯摘要。

6. 定时任务扩展思路

定时任务的应用远不止推送资讯,这里提供几个实战方向:

(1)定时巡检报告
每天凌晨 3 点检查服务器负载、磁盘使用率、内存占用,生成健康报告推送到飞书运维群:

schedule = "0 3 * * *"
# 执行系统命令:df -h, free -m, uptime, top -bn1

(2)SSL 证书到期提醒
每周一检查所有域名证书有效期,提前 14 天发送告警:

schedule = "0 10 * * 1"
# 使用 openssl 检查证书到期时间

(3)定时数据备份状态
每天备份完成后,自动推送备份结果(大小、耗时、成功/失败):

schedule = "0 2 * * *"
# 读取备份日志,解析状态

(4)API 监控告警
每 5 分钟检查关键 API 的可用性和响应时间,异常时立即告警:

schedule = "*/5 * * * *"
# requests.get 检测各 API 端点

四、总结

今天我们完成了三件大事:

  • 搭建 Gateway 消息网关 — 让 Hermes 从终端走向聊天框,打通 15+ 通讯平台
  • 接入飞书机器人 — 从飞书开发者后台创建应用到配置 .env,再到上线测试,一步不落
  • 实现定时自动推送 — 用 Cron 技能每天自动抓取资讯、AI 生成摘要、推送飞书群

至此,你的 Hermes Agent 已经从一个"本地终端工具"进化成了一个"7×24 小时在线的 AI 运维助手"。这在过去需要开发一套完整的 Bot 系统才能做到,而现在,一个 Hermes 加几行配置就搞定了。

明天我们将进入更深入的主题:多模型接入与 API 集成,把 Claude、DeepSeek 等各种模型接入 Hermes,让你的 Agent 能力更上一层楼。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐