IRC 接入——经典聊天协议
Hermes 消息平台接入第19篇:IRC。最古老的聊天协议也能接。
这篇教程将手把手教你如何把 Hermes Agent 接入 IRC(互联网中继聊天),让智能体在古老的聊天室里为你服务。
什么是 IRC?先打个比方
想象 IRC 是一个老式电话总机室:每个频道(#hermes)是一间会议室,机器人就是坐在里面的一位接线员。它不说话则已,一说话就是纯文本——没有表情包、图片或文件,就像发短信一样简单。
好消息是:Hermes 的 IRC 适配器不需要安装任何额外软件,它用 Python 自带的“翻译官”(asyncio)直接和 IRC 服务器对话。无论你是连公共网络(如 Libera.Chat)还是自己搭的私服,都能用。
准备工作(第1步)
你需要先准备好三样东西:
- 一个 IRC 服务器地址(比如
irc.libera.chat) - 一个想加入的频道(比如
#hermes,多个频道用逗号分隔) - 给机器人起个名字(默认叫
hermes-bot)
如果你的服务器要求身份验证,还需要提前注册机器人昵称,并准备好 NickServ 密码。
配置 Hermes(第2步)
有两种配置方式,推荐新手用配置文件,更直观。
方式A:编辑配置文件
打开(或新建)~/.hermes/gateway-config.yaml,填入以下内容:
gateway:
platforms:
irc:
enabled: true
extra:
server: irc.libera.chat
port: 6697
nickname: hermes-bot
channel: "#hermes"
use_tls: true
server_password: "" # 服务器密码(可选)
nickserv_password: "" # NickServ 识别密码(可选)
allowed_users: [] # 留空=允许所有人,或填昵称列表
max_message_length: 450 # 单条消息长度上限
方式B:用环境变量(适合快速测试)
在终端里设置这些变量,效果等同:
export IRC_SERVER="irc.libera.chat"
export IRC_CHANNEL="#hermes"
export IRC_NICKNAME="hermes-bot"
设置访问权限(第3步)
默认情况下,只有你明确列出的昵称才能和机器人对话(通过 allowed_users 或 IRC_ALLOWED_USERS)。
- 想开放给所有人?把名单留空,并设置
IRC_ALLOW_ALL_USERS=true。 - 但请注意:公共网络上 IRC 昵称并不安全(除非服务器强制 NickServ 验证),所以不建议在公网开放,只适合自己测试。
如果服务器要求身份验证,记得填上 nickserv_password,这样机器人一上线就能自动“验明正身”。
频道消息 vs 私聊(第4步)
- 机器人在频道里收到的消息 → 当作群聊处理。
- 直接私聊机器人 → 当作一对一对话。
另外,定时任务(cron)的通知会发送到“家庭频道”——优先用 IRC_HOME_CHANNEL 指定的频道,否则就用第一个 IRC_CHANNEL。
启动网关(第5步)
一切就绪后,运行:
hermes gateway start
查看连接状态:
hermes gateway status
你就能看到 IRC 是否成功连上了。
两个贴心小细节
- 长消息自动分段:机器人回复太长时,会自动拆成多条
PRIVMSG,避免超过 IRC 单条消息长度限制(默认 450 字节)。 - 身份锁:每个“服务器+昵称”组合只会有一个机器人实例,两个 Hermes 配置不会抢同一个 IRC 身份,省心。
小结
到这里,你的 Hermes 已经能通过 IRC 聊天了。虽然它只能发文字,但胜在零依赖、配置简单,特别适合跑在老旧服务器或极简环境里。
下篇预告:我们将接入一个更“现代”的平台——Telegram,让机器人支持图片、按钮和更丰富的交互。敬请期待!
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/messaging/irc