第3章:多平台与自动化篇 — Gateway消息网关 + 飞书机器人 + 定时任务
一、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 | 开源协议,自托管 |
| 社交IM | 全球用户量最大 | |
| 社交IM | 国内用户基数大 | |
| LINE | 社交IM | 日韩及东南亚常用 |
| SMS(短信) | 传统通信 | 通过 Twilio 等网关 |
| 传统通信 | 通过 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:000 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 能力更上一层楼。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)