04 | Hermes Agent 进阶实战 —— 多平台接入、定时任务与子 Agent 并发声明:📝 作者:甜城瑞庄的核桃(ZMJ)原创学习笔记,欢迎分享,但请保留作者信息及原文链接哦~适合人群:已掌握基础配置,想解锁高级能力的开发者前置知识:完成前三篇学习(安装配置、记忆系统、技能系统)学习目标:深入理解并实战 Gateway 多平台接入机制、自然语言定时任务调度、子 Agent 并发工作流编排,以及模型智能路由与安全防线📌版本说明:本文基于 Hermes Agentv0.10.0(2026.4.16),技术细节随版本迭代可能变化,如有出入请以 官方文档 为准。一、消息 Gateway:统一网关的架构原理与实战配置1.1 Gateway 架构:为什么能跨平台保持上下文?Hermes 的 Gateway 并不是简单的消息转发代理,而是一个统一 Agent 会话入口。所有平台的消息最终都路由到同一个AIAgent实例,底层共享同一份 SQLite 会话数据库(hermes_state.py)。用户(Telegram) 用户(Discord) 用户(CLI) │ │ │ ▼ ▼ ▼ ┌────────────────────────────────────────────────────┐ │ Gateway 统一消息网关 │ │ gateway/run.py (~9,000 行代码) │ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │ │Telegram │ │Discord │ │Slack/飞书/钉钉...│ │ │ │Adapter │ │Adapter │ │Adapter │ │ │ └────┬─────┘ └────┬─────┘ └────────┬─────────┘ │ │ └─────────────┼─────────────────┘ │ │ ▼ │ │ ┌──────────────────────┐ │ │ │ 统一消息格式化层 │ │ │ │ (用户ID / 会话ID / │ │ │ │ platform标签) │ │ │ └──────────┬───────────┘ │ └─────────────────────┼──────────────────────────────┘ ▼ ┌───────────────────────┐ │ AIAgent 核心 │ │ run_agent.py │ │ (对话循环 + 工具分发) │ └───────────┬───────────┘ ▼ ┌───────────────────────┐ │ hermes_state.py │ │ SQLite + FTS5 │ │ 跨平台共享会话存储 │ └───────────────────────┘关键机制:每个用户在每个平台的组合(platform, user_id)会被映射到一个唯一的session_id,但同一用户在不同平台可以通过/resume命令切换到同一个命名会话。1.2 配置 Telegram Bot(最稳定的平台,推荐首选)Step 1:创建 Bot1. 在 Telegram 搜索 @BotFather 2. 发送 /newbot,输入名称和用户名 3. 获取 Bot Token(格式:1234567890:AAxxxxxxxxxxxxxx) 4. 发送 /setcommands,添加常用命令(可选)Step 2:获取你的 User ID# 方法:向 @userinfobot 发送任意消息,它会回复你的 User ID # 将此 ID 填入白名单,防止其他人使用你的 BotStep 3:配置并启动hermes gateway setup telegram# 提示:Bot Token: 1234567890:AAxxxxxx# 提示:允许访问的用户 ID(多个用逗号分隔): 12345678hermes gateway start telegramv0.8.0 新特性:Telegram 现支持通过发送表情符号来批准危险命令,无需手动输入y。收到危险命令提示后:发送 ✅ = 允许本次发送 ❌ = 拒绝1.3 配置 Discord Bothermes gateway setup discord# 需要:Bot Token / 服务器 ID / 频道 IDhermes gateway start discordDiscord 支持斜杠命令(Slash Commands),可以在频道中直接使用/hermes ask 问题与 Agent 交互,而不需要 @ 机器人。1.4 配置飞书 / 钉钉(国内企业场景)飞书配置步骤:# 1. 前往飞书开放平台 (open.feishu.cn) 创建自建应用# 2. 获取 App ID 和 App Secret# 3. 配置消息权限:im:message 和 im:message:receive_v1# 4. 添加机器人能力,获取 Webhook URLhermes gateway setup feishu# 提示输入:App ID / App Secret# 来源选择:feishu(国内版)或 lark(海外版)# 连接方式:websocket(推荐,长连接无需公网 IP)hermes gateway start feishu⚠️ Windows 坑点:飞书 SDKlark-oapi需手动安装到 Hermes 的 venv 中:uv pip install lark-oapi--python"C:\Users\用户名\AppData\Local\hermes\hermes-agent\venv\Scripts\python.exe"钉钉配置步骤:# 1. 钉钉开放平台创建企业内部应用# 2. 获取 AppKey 和 AppSecret# 3. 配置消息接收回调 URL(需要公网可访问,或用 frp/ngrok 内网穿透)hermes gateway setup dingtalk hermes gateway start dingtalk1.5 多平台支持全览平台支持版本连接方式特色能力Telegramv0.1.0+长轮询/Webhook最稳定,表情符号审批,推荐首选Discordv0.1.0+WebSocket斜杠命令支持Slackv0.3.0+Socket Modev0.8.0 新增线程上下文保留WhatsAppv0.5.0+Business API需要 Meta 企业账号微信v0.9.0+腾讯 Bot API需开通 WeChat Bot 权限钉钉v0.9.0+HTTP/长连接支持群机器人、DING 消息飞书v0.9.0+WebSocket无需公网 IP,支持群聊/单聊Signalv0.8.0+signal-cli高隐私场景WhatsApp Webv0.7.0+Puppeteer不需要 Business APIEmailv0.6.0+IMAP/SMTP适合异步长任务1.6 跨平台会话同步:实战技巧所有平台共享同一个 Agent 的记忆系统和技能库,但默认情况下每个平台有独立会话。若要跨平台接续对话:# 在 CLI 中给当前会话命名/title 项目-Alpha开发# 在 Telegram 中恢复同名会话/resume 项目-Alpha开发最佳实践:为长期进行的项目创建命名会话,不论从哪个平台接入都能无缝继续。二、定时任务:自然语言版 Crontab 的底层机制/