#room)和直接消息中时,请使用 IRC。安装官方 IRC 插件,然后在
channels.irc 下进行配置。
快速开始
- 安装插件:
- 至少在
~/.openclaw/openclaw.json中设置 host、nick,以及要加入的频道:
- 启动/重启网关:
入站持久性
OpenClaw 在进行正常的策略检查和代理分发之前,会将每个被接受的 IRCPRIVMSG 写入其持久化的入站队列。待处理或可重试的消息在 Gateway 重启后仍会保留,并且会按频道或直接消息对端进行序列化。
IRC 不提供可回放的传递 ID,也不会重新发送断开连接的客户端错过的消息。因此,OpenClaw 会分配一个本地 ID,该 ID 只在当前 TCP 连接内保持稳定。该队列保护的是本地“接收至分发”窗口;它既无法恢复从未到达 OpenClaw 的消息,也无法对跨连接的服务器重发进行去重。
连接设置
安全默认值
- IRC 使用原始 TCP/TLS 套接字,不经过 OpenClaw 运维管理的前向代理路由。在要求所有出站流量都必须经过该前向代理的部署中,除非已明确批准直接 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 在群组上下文中默认仍会启用提及门控。当消息包含已连接机器人的昵称,或匹配你配置的提及模式时,机器人就会被视为已被提及。
这意味着你可能会看到类似 drop channel … (missing-mention) 的日志,除非消息中包含与机器人匹配的提及模式。
如果你想让机器人在 IRC 频道中无需提及也能回复,请为该频道关闭提及门控:
安全说明(公共频道推荐)
如果你在公共频道中允许allowFrom: ["*"],任何人都可以向机器人发起提示。为降低风险,请限制该频道可用的工具。
频道中的所有人使用相同工具
不同发送者使用不同工具(所有者权限更高)
使用toolsBySender 为 "*" 应用更严格的策略,并为你的 nick 应用更宽松的策略:
toolsBySender键应使用显式前缀(channel:、id:、e164:、username:、name:)。对于 IRC,请使用发送者身份值的id::id:alice,或者id:[email protected]以获得更强的匹配。- 旧式未加前缀的键仍然可接受,但只按
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 中设置;请参见 Workspace .env 文件。
故障排查
- 如果机器人已连接但在频道中从不回复,请检查
channels.irc.groups,以及提及门控是否正在丢弃消息(missing-mention)。如果你希望它在没有 ping 的情况下回复,请为该频道设置requireMention:false。 - 如果登录失败,请检查 nick 是否可用以及服务器密码是否正确。
- 如果在自定义网络上 TLS 失败,请检查主机/端口和证书设置。