一、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
Webhook HTTP回调 自定义集成
MQTT IoT协议 物联网场景
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 参数说明

参数 说明 示例
schedule Cron 表达式(分 时 日 月 周) "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 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐