第12章 Hermes多渠道接入与自动化

本章前置检查

  • □ 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定时调度 + 检查点文件级保护

12.1 多平台消息网关:一个进程连接所有平台

🎯 本节目标:理解Hermes Gateway的架构设计,知道如何启动和管理消息网关。

预计时长:0.5小时

12.1.1 什么是Gateway?

Hermes Gateway是连接消息平台的核心枢纽。它就是一个长期运行的进程——把所有配置好的消息平台(飞书、Telegram、Discord、Slack等)连接起来,任何消息都会通过标准化的Agent处理,再到对应的平台回复用户。它在Hermes五层架构中属于Layer 5(输入与编排层),与HermesCLI类是并列的入口。

以飞书为例,接入Gateway后的完整工作流是这样的:

  1. 用户在飞书聊天界面发送消息(如:@Hermes 帮我查一下今天的新闻
  2. 飞书服务器将消息推送到Gateway配置的回调端点
  3. Gateway接收消息后,通过消息路由确定使用哪个Agent处理
  4. Agent处理请求,判断是否需要调用工具(如网页搜索、文件读取等)
  5. Agent执行工具调用,获取结果
  6. Agent将结果生成自然语言回复,通过Gateway返回给飞书
  7. 用户在飞书中看到机器人的回复

一个Gateway进程可以同时管理所有已配置的消息平台和Hermes会话。它也是在消息平台侧接收和发送消息的核心入口,所有平台的配置都通过它集中管理。

12.1.2 Gateway支持哪些平台?

Hermes原生支持的消息平台覆盖了主流即时通讯工具:

平台接入难度配置时间需要条件
Telegram⭐ 最简单5分钟Telegram账号
飞书⭐⭐ 中等15分钟飞书管理员权限
企业微信⭐⭐ 中等15分钟企微管理员权限
钉钉⭐⭐ 中等15分钟钉钉管理员权限
Discord⭐⭐ 中等10分钟Discord账号
Slack⭐⭐ 中等10分钟Slack工作区权限
WhatsApp⭐⭐ 中等15分钟WhatsApp账号
Signal⭐⭐ 中等10分钟Signal账号
Email⭐ 简单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启动失败,按以下顺序排查:

  1. 确认端口是否被占用:lsof -i :8080(Gateway默认端口通常在8080,但受config.yaml中配置影响)
  2. 检查.env文件中的API Key是否正确
  3. 查看详细日志: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 IDApp 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启动成功后,进行首次测试:

  1. 在飞书APP中搜索你创建的机器人名称
  2. 发送一条消息(如“你好”)
  3. 首次对话需要根据终端提示运行配对命令进行授权确认
  4. 配对成功后,可以看到机器人的回复

龙马注:配对是飞书接入中最容易卡住的环节。具体流程是:你在飞书里给机器人发消息后,终端会输出一条配对命令,复制那条命令到终端执行,看到“Approved!”才算配对成功。如果配对失败,检查飞书应用的“事件与回调”中是否已添加im.message.receive_v1事件,并且应用版本已发布。

常见问题排查

问题现象可能原因解决方案
机器人不回复配对未完成检查终端配对提示,完成配对命令
配对失败未添加接收消息事件确认事件im.message.receive_v1已添加
反馈多种Event方式未处理修改权限后未重新发布应用修改权限后必须重新创建版本并发布
WebSocket连接失败网络无法访问公网检查服务器网络,确保能访问飞书API
报错401或403App 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章 参考资料与扩展阅读

  1. Hermes Agent 安装与部署指南:一步步教你如何使用”爱马仕Agent”(附飞书接入教程) https://www.feishu.cn/content/article/7630758640865037530(飞书接入全流程)
  2. Hermes Agent全解析:与OpenClaw对比及飞书接入指南 https://www.feishu.cn/content/article/7628541877674953666(架构剖析与飞书Bot/CLI接入)
  3. Hermes Agent飞书通道配置指南:WebSocket模式部署、安全策略与高级功能详解 https://wenku.csdn.net/69d8c87dd15e9e5f9dcc69e2.html(WebSocket配置深度解析)
  4. 手把手教你如何使用 Hermes Agent 创建智能定时任务 https://kelen.cc/posts/hermes-agent-intelligent-scheduled-tasks(Cron自然语言调度详解)
  5. 爱马仕龙虾,Hermes agent(部署➕接入飞书)无敌旋风详细教程 https://xingyun3d.csdn.net/69ddfadd72111d255bf8bb49.html(Windows/WSL环境保姆级教程)
  6. Hermes Agent / OpenClaw 任务中断完全指南(2026最新):/stop、Checkpoint、会话恢复全覆盖 https://www.cnblogs.com/qiniushanghai/p/19913858(检查点机制与回滚操作)
  7. Hermes Agent 接入飞书 & 企业微信全流程指南 https://juejin.cn/post/7626840247804968998(飞书+企业微信双平台配置)
  8. Hermes Agent 飞书配置对接步骤:从环境准备到常见问题排查 https://www.ai-indeed.com/encyclopedia/19144.html(飞书端到端配置流程)
  9. Hermes Agent 完整使用指南 https://www.e-com-net.com/article/2043337190192242688.htm(检查点与回滚详解)
  10. 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公司”的核心架构篇。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容