#room) やダイレクトメッセージで OpenClaw を使いたい場合は IRC を利用します。IRC は拡張プラグインとして提供されますが、設定はメイン設定ファイル内の channels.irc で行います。
Quick start
~/.openclaw/openclaw.jsonで IRC の設定を有効にします。- 最低限、次の項目を設定します。
- ゲートウェイを起動または再起動します。
Security defaults
channels.irc.dmPolicyのデフォルトは"pairing"です。channels.irc.groupPolicyのデフォルトは"allowlist"です。groupPolicy="allowlist"を使う場合は、channels.irc.groupsで許可するチャンネルを定義します。- 平文通信を意図的に許可する場合を除き、TLS (
channels.irc.tls=true) を使ってください。
Access control
IRC チャンネルには、独立した 2 つの「ゲート」があります。- チャンネルアクセス (
groupPolicy+groups): そのチャンネルからのメッセージをボットが受け付けるかどうか - 送信者アクセス (
groupAllowFrom/ チャンネルごとのgroups["#channel"].allowFrom): そのチャンネル内でボットを起動できる送信者は誰か
- DM allowlist (DM 送信者アクセス):
channels.irc.allowFrom - グループ送信者 allowlist (チャンネル送信者アクセス):
channels.irc.groupAllowFrom - チャンネルごとの制御 (チャンネル + 送信者 + メンションルール):
channels.irc.groups["#channel"] channels.irc.groupPolicy="open"を使うと、未設定のチャンネルも許可されます。ただし デフォルトでは引き続きメンション制御が有効 です。
nick!user@host) を使うことを推奨します。ニックネーム単体での照合は可変であり、channels.irc.dangerouslyAllowNameMatching: true を設定した場合にのみ有効になります。
Common gotcha: allowFrom is for DMs, not channels
次のようなログが出る場合があります。
irc: drop group sender alice!ident@host (policy=allowlist)
channels.irc.groupAllowFromを設定する (全チャンネル共通)- チャンネルごとの送信者 allowlist を設定する:
channels.irc.groups["#channel"].allowFrom
#tuirc-dev 内の誰でもボットへ話しかけられるようにする設定です。
Reply triggering (mentions)
チャンネルが許可されており (groupPolicy + groups)、かつ送信者も許可されていても、OpenClaw はグループ文脈ではデフォルトで メンション制御 を行います。
そのため、メッセージにボットへ一致するメンションパターンが含まれていないと、drop channel ... (missing-mention) のようなログが出ることがあります。
IRC チャンネルで メンションなしでも ボットに返信させたい場合は、そのチャンネルのメンション制御を無効にします。
Security note (recommended for public channels)
公開チャンネルでallowFrom: ["*"] を許可すると、誰でもボットへプロンプトを送れるようになります。リスクを下げるため、そのチャンネルで利用できるツールを制限してください。
Same tools for everyone in the channel
Different tools per sender (owner gets more power)
toolsBySender を使うと、"*" に対して厳しいポリシーを適用しつつ、自分の nick だけをより緩いポリシーにできます。
toolsBySenderのキーでは、IRC の送信者識別子にid:プレフィックスを付けてください。たとえばid:eigenや、より強く一致させたい場合はid:eigen!~eigen@174.127.248.171を使います。- 従来のプレフィックスなしキーも引き続き受け付けますが、
id:としてのみ照合されます。 - 最初に一致した送信者ポリシーが適用されます。
"*"はワイルドカードのフォールバックです。
NickServ
接続後に NickServ で認証するには、次のように設定します。register は無効にしてください。無効にしないと、毎回 REGISTER を試みる可能性があります。
Environment variables
デフォルトアカウントでは次の環境変数を利用できます。IRC_HOSTIRC_PORTIRC_TLSIRC_NICKIRC_USERNAMEIRC_REALNAMEIRC_PASSWORDIRC_CHANNELS(カンマ区切り)IRC_NICKSERV_PASSWORDIRC_NICKSERV_REGISTER_EMAIL
Troubleshooting
- ボットが接続しているのにチャンネルで返信しない場合は、
channels.irc.groupsの設定に加え、メンション制御によってmissing-mentionで落ちていないか確認してください。メンションなしで返信させたい場合は、そのチャンネルへrequireMention:falseを設定します。 - ログインに失敗する場合は、nick が使用可能かどうか、サーバーパスワードが正しいかどうかを確認してください。
- カスタムネットワークで TLS に失敗する場合は、host、port、証明書設定を確認してください。