本章前置检查:
- □ Hermes已成功部署并运行(完成第8章内容)
- □ 能通过CLI与Hermes进行基础对话
- □ 已完成第11章的学习,了解内置工具和子Agent委托
- □ 有一个飞书/Telegram/企业微信账号(用于渠道接入测试)
本章预估总时长:3.5小时
本章难点提示:
- 12.1节(多平台消息网关)是本章最核心的入口。Gateway启动后,需要一个保持开启的终端窗口来维持连接,这一点在初次配置时容易被忽略。
- 12.2节(飞书接入)中,WebSocket模式(长连接)是大多数个人和小团队的首选,因为它不需要公网Webhook地址,避免了公网回调这一大块麻烦-。如果你是新手,建议优先走WebSocket模式。
- 12.3节(Cron定时任务)中,任务Prompt应当保持简短明确,不要把整本操作手册塞进去——复杂流程可以用Skill挂载。
- 12.4节(检查点与回滚)涉及文件级安全保护,建议在开始生产任务前提前熟悉/rollback命令的操作方式。
🎯 本章教学目标:掌握Hermes多平台消息网关的配置方法,完成至少一个消息渠道(飞书或Telegram)的接入,熟练使用Cron定时任务创建和管理自动化任务,理解检查点机制并能使用回滚命令恢复误操作。
![图片[1]-Hermes自动化任务与安全回滚:Cron定时调度 + 检查点文件级保护](http://www.ifisme.cn/wp-content/uploads/2026/05/教材1201.png)
12.1 多平台消息网关:一个进程连接所有平台
🎯 本节目标:理解Hermes Gateway的架构设计,知道如何启动和管理消息网关。
预计时长:0.5小时
12.1.1 什么是Gateway?
Hermes Gateway是连接消息平台的核心枢纽。它就是一个长期运行的进程——把所有配置好的消息平台(飞书、Telegram、Discord、Slack等)连接起来,任何消息都会通过标准化的Agent处理,再到对应的平台回复用户。它在Hermes五层架构中属于Layer 5(输入与编排层),与HermesCLI类是并列的入口。
以飞书为例,接入Gateway后的完整工作流是这样的:
- 用户在飞书聊天界面发送消息(如:
@Hermes 帮我查一下今天的新闻) - 飞书服务器将消息推送到Gateway配置的回调端点
- Gateway接收消息后,通过消息路由确定使用哪个Agent处理
- Agent处理请求,判断是否需要调用工具(如网页搜索、文件读取等)
- Agent执行工具调用,获取结果
- Agent将结果生成自然语言回复,通过Gateway返回给飞书
- 用户在飞书中看到机器人的回复
一个Gateway进程可以同时管理所有已配置的消息平台和Hermes会话。它也是在消息平台侧接收和发送消息的核心入口,所有平台的配置都通过它集中管理。
12.1.2 Gateway支持哪些平台?
Hermes原生支持的消息平台覆盖了主流即时通讯工具:
| 平台 | 接入难度 | 配置时间 | 需要条件 |
|---|---|---|---|
| Telegram | ⭐ 最简单 | 5分钟 | Telegram账号 |
| 飞书 | ⭐⭐ 中等 | 15分钟 | 飞书管理员权限 |
| 企业微信 | ⭐⭐ 中等 | 15分钟 | 企微管理员权限 |
| 钉钉 | ⭐⭐ 中等 | 15分钟 | 钉钉管理员权限 |
| Discord | ⭐⭐ 中等 | 10分钟 | Discord账号 |
| Slack | ⭐⭐ 中等 | 10分钟 | Slack工作区权限 |
| ⭐⭐ 中等 | 15分钟 | WhatsApp账号 | |
| Signal | ⭐⭐ 中等 | 10分钟 | Signal账号 |
| ⭐ 简单 | 5分钟 | 邮箱SMTP/IMAP配置 |
沈飞注:在量化场景中,飞书和Telegram的使用场景有明显区别。飞书适合团队协作——你可以把策略研发群、风控群、订单执行群分开,每个群绑定不同的Agent。而Telegram更灵活,适合个人使用。但无论用哪个平台,收到告警时的响应效率都比登录服务器查看日志高出一个数量级。
12.1.3 Gateway的启动和基本管理
启动Gateway的命令及其背后的操作非常直接,并且相对收敛:
bash
# 启动Gateway(前台运行,终端关闭则停止) hermes gateway start # 后台运行(使用tmux/screen,推荐) tmux new -s hermes-gateway hermes gateway start # Ctrl+B, D 分离会话 # 停止Gateway进入终端运行 hermes gateway stop # 查看Gateway运行状态 hermes gateway status # 查看实时日志 hermes gateway logs --follow
关键配置位置:
Gateway的配置分为两个文件,分别管理不同方面的设置:
~/.hermes/config.yaml:主配置文件,包含模型设置、执行后端、工具集启用等~/.hermes/.env:环境变量文件,存放各渠道的App Secret、API Key等敏感信息
配置渠道是通过交互式向导hermes gateway setup完成的,选择对应的平台并填写凭证,无需直接编辑.env文件。
如果Gateway启动失败,按以下顺序排查:
- 确认端口是否被占用:
lsof -i :8080(Gateway默认端口通常在8080,但受config.yaml中配置影响) - 检查.env文件中的API Key是否正确
- 查看详细日志:
hermes gateway logs --tail 50
12.2 飞书接入:WebSocket模式完整指南
🎯 本节目标:完成从飞书开放平台创建应用到Hermes Gateway配置的全流程,让Hermes在飞书中成功运行。
预计时长:1.2小时
12.2.1 为什么选WebSocket模式?
飞书接入有两种方式:Webhook(回调地址)和WebSocket(长连接)。近期,飞书开放平台已改版,默认推荐的订阅方式已从Webhook逐步迁移至长连接。
大多数个人和小团队场景,优先选WebSocket模式——因为它不需要公网Webhook地址。你不需要配域名、不需要搞公网IP、不需要设置SSL证书。如果你是新手,直接走WebSocket模式,可以少掉一大块“公网回调”的麻烦-33。
WebSocket方式的底层约束是:你的服务器需要能够访问公网(因为飞书SDK会主动向公网环境发起连接),但不需要服务器有公网可访问的地址。
龙马注:第一次接触WebSocket模式时,我也被“需要公网IP”的说法误导过。实际情况是:你的网络需要能正常访问公网,而不是你必须有一个公网IP。这两者的区别是——只要能联网,WebSocket就能用。
12.2.2 飞书开放平台侧配置
步骤1:进入飞书开放平台
访问 https://open.feishu.cn/,登录后进入开发者后台。
步骤2:创建企业自建应用
点击“创建企业自建应用”,输入应用名称(如“Hermes Agent”)和应用描述。应用名称将对应之后用户在飞书上搜索到的智能体名称。
步骤3:添加机器人能力
在应用详情页,点击“添加应用能力”,选择“机器人”。
步骤4:配置权限
在左侧导航栏进入“权限管理”,至少需要添加以下核心权限:
| 权限名称 | 用途 |
|---|---|
im:message | 获取与发送消息的核心权限 |
im:resource | 获取消息中的资源文件 |
如果希望机器人在群聊中稳定工作,补充以下权限:
im:chat:readonly:读取群聊信息admin:app.info:readonly:获取Bot身份信息
权限已开始批量验证;如不确定,可以批量导入权限配置确保开发环境正常跑通。
步骤5:获取App ID和App Secret
在左侧导航栏进入“凭证与基础信息”,记录下App ID和App Secret。这两个凭证将在Hermes侧配置时使用。
步骤6:配置事件与回调
在左侧导航栏进入“事件与回调”:订阅方式选择“长连接”,添加事件im.message.receive_v1(接收消息事件)。
⚠️ 长连接配置要点:WebSocket模式下,飞书开放平台会通过SDK与你的服务器建立一条WebSocket全双工通道-。添加事件后可以单击“验证”测试连接是否成功,验证成功后单击“保存”。
步骤7:发布应用
在左侧导航栏进入“版本管理与发布”,创建版本并提交发布。发布后,飞书内才能搜索到该机器人。每次修改权限后都需要重新发布版本才能生效。
12.2.3 Hermes Gateway侧配置
步骤1:启动Gate:
- App ID:从飞书开放平台复制
- App Secret:从飞书开放平台复制
- User IDs:留空则允许所有用户使用;如需限制用户,填入飞书用户ID(获取方式参考飞书开放平台文档)
- Domain:国内飞书用户填
feishu,国际Lark用户填lark - Connection mode:选择
websocket(WebSocket长连接)
步骤3:配置访问控制
向导中会出现授权选项,选择“1(不限制对话人)”,这样群里所有人都可以与机器人交互。
步骤4:保存配置
确认无误后选择Done保存。配置将写入~/.hermes/.env文件。
步骤5:安装飞书SDK依赖
Windows/WSL2环境下,如果缺少依赖,执行以下命令:
bash
pip install lark-oapi==2.19.0
macOS/Linux环境下通常不需要此步骤。
步骤6:启动Gateway
bash
hermes gateway start
12.2.4 配对测试
Gateway启动成功后,进行首次测试:
- 在飞书APP中搜索你创建的机器人名称
- 发送一条消息(如“你好”)
- 首次对话需要根据终端提示运行配对命令进行授权确认
- 配对成功后,可以看到机器人的回复
龙马注:配对是飞书接入中最容易卡住的环节。具体流程是:你在飞书里给机器人发消息后,终端会输出一条配对命令,复制那条命令到终端执行,看到“Approved!”才算配对成功。如果配对失败,检查飞书应用的“事件与回调”中是否已添加 im.message.receive_v1事件,并且应用版本已发布。
常见问题排查:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 机器人不回复 | 配对未完成 | 检查终端配对提示,完成配对命令 |
| 配对失败 | 未添加接收消息事件 | 确认事件im.message.receive_v1已添加 |
| 反馈多种Event方式未处理 | 修改权限后未重新发布应用 | 修改权限后必须重新创建版本并发布 |
| WebSocket连接失败 | 网络无法访问公网 | 检查服务器网络,确保能访问飞书API |
| 报错401或403 | App Secret错误 | 重新核对App ID和App Secret,确保正确复制 |
12.2.5 设置主频道
配对成功后,在飞书机器人对话框回复/sethome,将其设为接收定时任务和跨平台消息的主频道。
设置主频道的意义在于:
- Hermes可以通过主频道推送定时任务结果
- 多个平台的跨渠道消息可以聚合到同一个聊天界面
沈飞注:设置主频道后,我习惯把风控告警和每日策略报告都通过主频道推送。这样不需要盯着多个平台,飞书就是统一的消息中心。而且主频道支持消息历史记录,复盘时可以翻回之前的告警信息。
12.3 Cron定时任务:让Agent主动干活
🎯 本节目标:掌握Cron定时任务的创建、管理和结果投递,让Hermes在指定时间主动执行任务。
预计时长:1小时
12.3.1 为什么需要Cron定时任务?
传统定时工具(如Linux crontab)只能做机械的定时触发,还要手动编写脚本,无法利用AI智能分析和交付结果。Hermes的Cron将AI能力与定时调度结合——你可以用自然语言描述任务,Agent会理解并执行。Hermes内置Cron调度器,适合每日定期总结、价格监控等明确的小型周期性任务。
例如:“每天上午9点,汇总今日待办事项并发送给我”——无需编写任何脚本。
12.3.2 Cron调度方式详解
Cron定时的核心交互入口是TUI聊天窗口的/cron命令和CLI的Hermes cron子命令。Hermes支持三种调度方式:
| 调度方式 | 使用场景 | 示例 |
|---|---|---|
| 自然语言描述 | 日常定时提醒、简单周期性任务 | /cron add "every 3h" "检查磁盘使用率" |
| Cron表达式 | 精确时间控制 | /cron add "0 9 * * 1-5" "生成日报" |
| 并发组合 | 多个Skill串联执行 | --skill analyzer --skill reporter |
各调度方式可独立或组合使用;其中自然语言方式对人最友好,但对特定时间位置的表达可靠性较低——如果安全是第一优先级,建议使用Cron表达式方式定型。
12.3.3 自然语言调度
在对话中使用(最推荐的最简单命令形式):
text复制下载
# 45分钟后提醒 /cron add 45m "提醒我喝水并记录今日饮水量" # 每3小时执行一次 /cron add "every 3h" "检查系统磁盘使用率,如果超过80%则发出警告" # 工作日上午8点执行(使用Cron表达式) /cron add "0 8 * * 1-5" "生成当日待办清单" --skill taskplanner --name "每日工作规划" # 绑定多个Skill + 投递到Telegram /cron add "every 6h" "分析股票行情并评估风险" --skill stockanalyzer --skill riskchecker --deliver telegram:你的ID
在CLI中使用:
bash
# 每天0点执行备份 hermes cron add "0 0 * * *" "备份配置文件并上传到OSS" # 查看所有定时任务 hermes cron list # 暂停任务 hermes cron pause <job_id> # 恢复任务 hermes cron resume <job_id> # 立即执行一次(测试用) hermes cron run <job_id>
12.3.4 使用Skill增强任务能力
Cron任务可以绑定预定义的Skill,让Agent执行更专业的任务
# 单个Skill /cron add "every 2h" "检查服务器状态" --skill servermonitor # 多个Skill /cron add "every 1h" "抓取新闻并生成中文摘要" --skill newsfetcher --skill summarizer # 添加特定平台投递(飞书为例) /cron add "every 2h" "股市复盘简报" --skill stockanalyzer --deliver feishu:oc_xxx
每个到期任务会在全新的Agent会话中运行,默认不继承CLI或当前对话的上下文。因此,任务Prompt应当保持简短明确,不要塞进整本操作手册。复杂流程建议挂载Skill;每次调用的必要上下文需要在任务Prompt中显式给出,或者依赖Hermes的跨会话记忆MEMORY.md完成配置信息的持久化。
12.3.5 结果投递配置
Hermes支持在创建Cron任务时明确指定发送目标,无需在提示词中额外调用发送工具:
| 投递目标 | 说明 |
|---|---|
origin | 发送到创建任务的来源渠道(默认) |
telegram:用户ID | 发送到Telegram指定用户 |
feishu:群ID | 发送到飞书指定群 |
discord:#频道名 | 发送到Discord频道 |
email:xxx@example.com | 发送到邮箱 |
投递示例:
# 发送到飞书指定群 /cron add "every 4h" "生成市场简报" --deliver feishu:oc_5b6799cff4a754c15e5ff3025becc648 # 发送到多个渠道 /cron add "every 1h" "抓取新闻摘要" --deliver telegram:123456789 --deliver email:team@example.com
任务对应的平台提前需要在hermes gateway中完成渠道配置。如果多个任务需要聚合推送,可以共用同一个主频道(已在12.2.5节设置)。
12.3.6 定时任务的管理
| 命令 | 功能 |
|---|---|
hermes cron list | 列出所有定时任务 |
hermes cron edit <job_id> --prompt "新描述" | 编辑任务描述 |
hermes cron edit <job_id> --add-skill <skill名> | 追加Skill |
hermes cron edit <job_id> --remove-skill <skill名> | 移除Skill |
hermes cron pause <job_id> | 暂停任务 |
hermes cron resume <job_id> | 恢复任务 |
hermes cron run <job_id> | 立即执行一次 |
hermes cron remove <job_id> | 删除任务 |
每个定时任务的执行记录和状态都会被持久化存储。如果Gateway重启,已创建的定时任务不会丢失,但需要确保Gateway重新启动后任务管理器能恢复调度。
12.4 检查点与回滚:保护数据安全
🎯 本节目标:理解检查点机制的工作原理,掌握回滚操作,学会在误操作后快速恢复。
预计时长:0.5小时
12.4.1 什么是检查点?
检查点机制是Hermes在执行破坏性文件操作前自动创建的文件系统快照-。核心设计原则是“fail-closed”——危险命令审批超时(默认60秒)后自动拒绝而非执行,最大程度保护文件系统安全。
每一个检查点都会记录当前工作区的完整文件系统状态,包括修改的文件、新增的内容和删除的条目。检查点只主动记录文件更新,而非全量存储——这帮助你在不小心让Agent改错文件时,能够撤销回到之前的状态。
12.4.2 检查点的配置与触发
配置文件(~/.hermes/config.yaml):
yaml
checkpoints: enabled: true # 启用检查点 max_snapshots: 50 # 最多保留50个快照 auto_on_destructive: true # 破坏性操作前自动创建
触发检查点创建的行为包括:
- 执行文件写入/修改操作
- 执行文件删除操作
- 执行涉及Shell的破坏性命令
- 任何被标记为“危险”的工具调用
12.4.3 使用回滚恢复状态
查看检查点列表:
bash
hermes checkpoint list # 输出示例:chkpt-20251204-143022 ... 2025-12-04 14:30:22
恢复到指定检查点:
bash
# 通过ID恢复到指定快照 hermes checkpoint restore --id chkpt-20251204-143022 # 恢复到最近的快照 hermes checkpoint restore --latest
在对话中使用/rollback命令:
在聊天窗口中直接输入/rollback,Hermes会列出最近的检查点并让你选择回滚目标。
龙马注:回滚是我在调试Skill过程中用到最多的命令之一。有一次Agent改错了配置文件,一条 /rollback就恢复了。它的前提是检查点出现在Agent执行破坏性写操作之前。建议养成在重大更改前手动创建检查点的习惯:hermes checkpoint create。这样即使Agent做出了非预期的更改,你也有可回溯的记录。
12.4.4 检查点的存储与清理
检查点默认存储在~/.hermes/checkpoints/目录中。当检查点数量超过max_snapshots配置时,Hermes会自动清理最旧的检查点。
如果检查点机制在Git仓库内工作,Hermes默认启用Git模式——每次工具调用后将变更暂存并提交至临时分支hermes/checkpoints/<session>,形成时间戳明确、可追溯的增量提交链-。这种模式下,你可以用git log hermes/checkpoints来跟踪每次变化的提交历史。
手动清理:
bash
# 清理30天前的检查点 hermes checkpoint prune --older-than 30d # 强制清理所有检查点(谨慎!) hermes checkpoint prune --all
12.5 第12章 参考资料与扩展阅读
- Hermes Agent 安装与部署指南:一步步教你如何使用”爱马仕Agent”(附飞书接入教程) https://www.feishu.cn/content/article/7630758640865037530(飞书接入全流程)
- Hermes Agent全解析:与OpenClaw对比及飞书接入指南 https://www.feishu.cn/content/article/7628541877674953666(架构剖析与飞书Bot/CLI接入)
- Hermes Agent飞书通道配置指南:WebSocket模式部署、安全策略与高级功能详解 https://wenku.csdn.net/69d8c87dd15e9e5f9dcc69e2.html(WebSocket配置深度解析)
- 手把手教你如何使用 Hermes Agent 创建智能定时任务 https://kelen.cc/posts/hermes-agent-intelligent-scheduled-tasks(Cron自然语言调度详解)
- 爱马仕龙虾,Hermes agent(部署➕接入飞书)无敌旋风详细教程 https://xingyun3d.csdn.net/69ddfadd72111d255bf8bb49.html(Windows/WSL环境保姆级教程)
- Hermes Agent / OpenClaw 任务中断完全指南(2026最新):/stop、Checkpoint、会话恢复全覆盖 https://www.cnblogs.com/qiniushanghai/p/19913858(检查点机制与回滚操作)
- Hermes Agent 接入飞书 & 企业微信全流程指南 https://juejin.cn/post/7626840247804968998(飞书+企业微信双平台配置)
- Hermes Agent 飞书配置对接步骤:从环境准备到常见问题排查 https://www.ai-indeed.com/encyclopedia/19144.html(飞书端到端配置流程)
- Hermes Agent 完整使用指南 https://www.e-com-net.com/article/2043337190192242688.htm(检查点与回滚详解)
- Hermes Agent定时任务设置:利用CronJob实现每日自动日报 https://www.php.cn/faq/2361487.html(定时任务与CronJob集成)
第二篇综合任务(第12章完成后)
任务:完成以下所有检查项,并记录输出。请注意,企业微信/钉钉/Telegram配置属于可选扩展任务,优先完成飞书强制任务即可。
🔰 强制任务(1小时,必须完成)
- 完成飞书开放平台的应用创建和权限配置
- 执行
hermes gateway setup完成Hermes侧飞书渠道配置 - 启动Gateway,在飞书中发送消息完成配对,确认能正常回复
- 设置主频道
/sethome - 创建一个Cron定时任务(如“每5分钟发送当前时间”)
- 使用
hermes cron list查看任务列表,确认任务已创建
🚀 进阶任务(30分钟,推荐完成)
- 配置一个绑定Skill的Cron任务(如使用
newsfetcher技能) - 设置任务结果投递到飞书主频道
- 使用
hermes cron pause暂停任务,hermes cron resume恢复 - 执行
hermes checkpoint list查看检查点,选择一个项目手动回滚试试 - (可选)追加一个Telegram或企业微信渠道配置
🔌 扩展任务(30分钟,可选)
- 在
config.yaml中调整checkpoints.max_snapshots参数 - 配置一个需要审批的危险命令,观察审批流程
- 使用
hermes gateway logs --follow监控Gateway实时日志 - (可选)配置Telegram Bot,体验5分钟极速接入
完成后,保存一份Gateway配置快照,命名为chapter12_gateway_snapshot.txt,至少包含:
hermes gateway status的输出- 飞书配对成功后的测试对话截图
- 至少一个Cron定时任务的配置(使用
hermes cron list输出) - 检查点列表(
hermes checkpoint list输出)
龙马的评审:
“12.2节的飞书接入流程清晰,但我要特别强调:配对是第一次接触WebSocket模式最容易卡住的环节。很多人配完App ID和Secret后直接去飞书发消息,发现机器人不回,然后就卡住了。正确的流程是:配完ID和Secret→启动Gateway→看终端输出是否显示‘WebSocket connected’→再去飞书发消息。配对命令需要你在收到机器人回复的配对码后,复制粘贴到终端中执行才能最终授权。如果你跳过看终端这一步,配对永远不会成功。另外, hermes gateway logs --follow是你的好朋友,配不通的时候第一件事就是打开日志看报错,90%的问题能从日志中找到答案。
关于Cron,每个到期任务都在全新的Agent会话中运行,默认保存历史记忆。因此,任务Prompt应当保持简短明确,必要上下文需在每个任务的Prompt中显示提供或通过MEMORY.md持久化,否则无法保持任务状态。Skill挂载是保证任务一致性的有效方法。检查点机制在第一次被 /rollback救回来之前,你可能觉得它可有可无——但一旦尝到甜头,你就会明白它为什么是Hermes的安全底线。尽量在重大更改前手工创建检查点,比出事后追悔莫及强得多。”
沈飞的评审:
“飞书接入后我在量化实盘里的用法是:在飞书群里绑定一个风控告警Agent,每15分钟检查一次持仓风险。企微接入对金融服务合规有一些独特价值:飞书的聊天日志导出不如企微方便,而很多内部风控系统已经原生支持企微回调和审计,合规性更好。建议熟悉飞书流程后,再针对你的量化场景评估是否需要多平台切换。
关于检查点机制,在量化回测中的实用性非常高——当你让Hermes批量修改回测参数时,经常会出现一次性改错几十个参数的情况。有检查点兜底,可以毫无顾虑地让Agent执行复杂的文件修改任务。我在生产经验中总结的习惯是:在每次进行批量因子替换前,显式创建一次检查点,留出恢复回滚窗口,确保操作安全性。
Cron定时任务的场景在量化系统中非常活跃——每日收盘后跑回测、次日开盘前预热数据环境、盘中定期调取因子信号,这些都可以用Cron实现。不过,当你需要执行多步骤依赖关系(如‘只有回测完成后才推送报告’)时,建议把依赖关系写在一个Skill的内部任务调度中,只用Cron作为‘开始信号’,而不是把所有步骤都写进Cron的提示词里。”
第二篇总结
至此,我们完成了Hermes Agent的完整学习:
- 第7章:认识了Hermes的五层架构和闭环学习系统
- 第8章:完成了部署、模型配置和DeepSeek/Qwen接入
- 第9章:理解了MEMORY.md、FTS5会话记忆和技能记忆的三层体系
- 第10章:掌握了Skill的自动生成机制和质量治理
- 第11章:学会了47个内置工具、MCP协议和子Agent委托
- 第12章:让Hermes通过多渠道接入成为7×24在线的“数字员工”
Hermes从一个“会聊天的AI”变成了“会干活、会学习、会进化”的AI同事。
下一章预告:第三篇 双剑合璧:OpenClaw × Hermes 协同作战。你将学会如何通过ACP协议连接OpenClaw和Hermes,实现规划者-执行者等多种协作模式,建立共享记忆体系——让AI公司的“前台”(OpenClaw)和“大脑”(Hermes)协同工作。这是搭建最终“金融量化投资AI公司”的核心架构篇。























暂无评论内容