#room)和私信时,请使用 IRC。
IRC 作为内置插件提供,但需要在主配置的 channels.irc 下进行配置。
快速开始
- 在
~/.openclaw/openclaw.json中启用 IRC 配置。 - 至少设置以下内容:
- 启动/重启 Gateway 网关:
默认安全设置
channels.irc.dmPolicy默认为"pairing"。channels.irc.groupPolicy默认为"allowlist"。- 当
groupPolicy="allowlist"时,设置channels.irc.groups以定义允许的渠道。 - 除非你有意接受明文传输,否则请使用 TLS(
channels.irc.tls=true)。
访问控制
IRC 渠道有两个独立的“门”:- 渠道访问(
groupPolicy+groups):机器人是否完全接受来自某个渠道的消息。 - 发送者访问(
groupAllowFrom/ 每渠道groups["#channel"].allowFrom):谁有权在该渠道内触发机器人。
- 私信允许列表(私信发送者访问):
channels.irc.allowFrom - 群组发送者允许列表(渠道发送者访问):
channels.irc.groupAllowFrom - 每渠道控制(渠道 + 发送者 + 提及规则):
channels.irc.groups["#channel"] channels.irc.groupPolicy="open"允许未配置的渠道(默认仍然受提及门控限制)
nick!user@host)。
仅使用裸 nick 匹配是可变的,并且只有在 channels.irc.dangerouslyAllowNameMatching: true 时才会启用。
常见陷阱:allowFrom 用于私信,不用于渠道
如果你看到这样的日志:
irc: drop group sender alice!ident@host (policy=allowlist)
- 设置
channels.irc.groupAllowFrom(对所有渠道全局生效),或 - 设置每渠道发送者允许列表:
channels.irc.groups["#channel"].allowFrom
#tuirc-dev 中的任何人与机器人对话):
回复触发(提及)
即使某个渠道已被允许(通过groupPolicy + groups),并且发送者也被允许,OpenClaw 在群组场景下默认仍启用提及门控。
这意味着,除非消息中包含与机器人匹配的提及模式,否则你可能会看到类似 drop channel … (missing-mention) 的日志。
如果你希望机器人在 IRC 渠道中无需提及即可回复,请为该渠道禁用提及门控:
安全说明(推荐用于公共渠道)
如果你在公共渠道中设置allowFrom: ["*"],任何人都可以提示机器人。
为降低风险,建议限制该渠道可用的工具。
渠道内所有人使用相同的工具权限
按发送者区分工具权限(所有者权限更大)
使用toolsBySender,对 "*" 应用更严格的策略,对你的 nick 应用更宽松的策略:
toolsBySender键应对 IRC 发送者身份值使用id:: 使用id:eigen,或使用id:eigen!~eigen@174.127.248.171进行更强匹配。- 旧版无前缀键仍然受支持,但只会按
id:进行匹配。 - 首个匹配到的发送者策略优先生效;
"*"是通配回退。
NickServ
连接后若要通过 NickServ 进行身份验证: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 失败,请检查 host/port 和证书配置。