#room)和直接訊息中使用 OpenClaw 時,請使用 IRC。
安裝官方 IRC 外掛,然後在 channels.irc 下設定。
快速開始
- 安裝外掛:
- 在
~/.openclaw/openclaw.json中至少設定 host、nick,以及要加入的頻道:
- 啟動/重新啟動閘道:
連線設定
| 鍵 | 預設值 | 備註 |
|---|---|---|
host | 無(必填) | IRC 伺服器主機名稱 |
port | 使用 TLS 時為 6697,明文為 6667 | 1-65535 |
tls | true | 僅在有意使用明文時設為 false |
nick | 無(必填) | 機器人暱稱 |
username | nick,否則為 openclaw | IRC 使用者名稱 |
realname | OpenClaw | Realname/GECOS 欄位 |
password / passwordFile | 無 | 伺服器密碼;檔案必須是一般檔案 |
channels | 無 | 要加入的頻道(["#openclaw"]) |
accounts / defaultAccount | 無 | 多帳號設定;環境變數只會填入預設帳號 |
安全性預設值
- IRC 會使用 OpenClaw 操作者管理的轉送代理路由之外的原始 TCP/TLS socket。在要求所有輸出流量都必須通過該轉送代理的部署中,除非已明確核准直接 IRC 輸出,否則請設定
channels.irc.enabled=false。 channels.irc.dmPolicy預設為"pairing":未知的 DM 傳送者會收到一組配對碼,你可使用openclaw pairing approve irc <code>核准。channels.irc.groupPolicy預設為"allowlist"。- 使用
groupPolicy="allowlist"時,請設定channels.irc.groups來定義允許的頻道。 - 除非你有意接受明文傳輸,否則請使用 TLS(
channels.irc.tls=true)。
存取控制
IRC 頻道有兩個獨立的「關卡」:- 頻道存取(
groupPolicy+groups):機器人是否接受某個頻道的訊息。 - 傳送者存取(
groupAllowFrom/ 每頻道groups["#channel"].allowFrom):誰可以在該頻道內觸發機器人。
- DM 允許清單(DM 傳送者存取):
channels.irc.allowFrom - 群組傳送者允許清單(頻道傳送者存取):
channels.irc.groupAllowFrom - 每頻道控制(頻道 + 傳送者 + 提及規則):
channels.irc.groups["#channel"],搭配requireMention、allowFrom、enabled、tools、toolsBySender、skills和systemPrompt channels.irc.groupPolicy="open"允許未設定的頻道(預設仍受提及門檻限制)
nick!user@host)。
裸 nick 比對是可變的,且只有在 channels.irc.dangerouslyAllowNameMatching: true 時才會啟用。
常見陷阱:allowFrom 用於 DM,不是頻道
如果你看到類似下列的日誌:
irc: drop group sender alice!ident@host (policy=allowlist)
- 設定
channels.irc.groupAllowFrom(全域套用至所有頻道),或 - 設定每頻道傳送者允許清單:
channels.irc.groups["#channel"].allowFrom
#openclaw 中的任何人與機器人對話):
回覆觸發(提及)
即使某個頻道已被允許(透過groupPolicy + groups),且傳送者也被允許,OpenClaw 在群組情境中預設仍會使用提及門檻。當訊息包含已連線機器人的 nick,或符合你設定的提及模式時,機器人才會視為被提及。
這表示除非訊息包含符合機器人的提及模式,否則你可能會看到像 drop channel … (missing-mention) 的日誌。
若要讓機器人在 IRC 頻道中不需要提及也能回覆,請停用該頻道的提及門檻:
安全性注意事項(建議用於公開頻道)
如果你在公開頻道中允許allowFrom: ["*"],任何人都可以提示機器人。
若要降低風險,請限制該頻道的工具。
頻道中所有人使用相同工具
每位傳送者使用不同工具(擁有者取得更多權限)
使用toolsBySender 對 "*" 套用較嚴格的政策,並對你的 nick 套用較寬鬆的政策:
toolsBySender鍵應使用明確前綴(channel:、id:、e164:、username:、name:)。IRC 請使用id:搭配傳送者身分值:id:alice,或使用id:alice!~alice@203.0.113.7進行更強的比對。- 舊版未加前綴的鍵仍會被接受,只會以
id:比對,並會發出棄用警告。 - 第一個符合的傳送者政策會生效;
"*"是萬用字元後援。
NickServ
若要在連線後向 NickServ 識別身分:enabled 設為 false)。service 預設為 NickServ;passwordFile 是內嵌 password 的替代方式。
連線時可選擇進行一次性註冊(register: true 需要 registerEmail):
register,以避免重複嘗試 REGISTER。
環境變數
預設帳號支援:IRC_HOSTIRC_PORTIRC_TLSIRC_NICKIRC_USERNAMEIRC_REALNAMEIRC_PASSWORDIRC_CHANNELS(逗號分隔)IRC_NICKSERV_PASSWORDIRC_NICKSERV_REGISTER_EMAIL
IRC_HOST 不能從工作區 .env 設定;請參閱工作區 .env 檔案。
疑難排解
- 如果機器人已連線但從未在頻道中回覆,請確認
channels.irc.groups以及提及門檻是否正在丟棄訊息(missing-mention)。如果你希望它不需被 ping 也能回覆,請為該頻道設定requireMention:false。 - 如果登入失敗,請確認 nick 可用性與伺服器密碼。
- 如果自訂網路上的 TLS 失敗,請確認主機/連接埠與憑證設定。