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