#room)やダイレクトメッセージで OpenClaw を使いたい場合は IRC を使用します。
公式 IRC Plugin をインストールしてから、channels.irc で設定します。
クイックスタート
- Plugin をインストールします。
~/.openclaw/openclaw.jsonに、少なくともホスト、ニックネーム、参加するチャネルを設定します。
- Gateway を開始または再起動します。
接続設定
| Key | Default | Notes |
|---|---|---|
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 のオペレーター管理フォワードプロキシルーティングの外側で raw TCP/TLS ソケットを使用します。すべての外向き通信をそのフォワードプロキシ経由にする必要があるデプロイでは、直接の 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 チャネルには 2 つの独立した「ゲート」があります。- チャネルアクセス(
groupPolicy+groups):ボットがそのチャネルからのメッセージを受け入れるかどうか。 - 送信者アクセス(
groupAllowFrom/ チャネルごとのgroups["#channel"].allowFrom):そのチャネル内で誰がボットをトリガーできるか。
- DM 許可リスト(DM 送信者アクセス):
channels.irc.allowFrom - グループ送信者許可リスト(チャネル送信者アクセス):
channels.irc.groupAllowFrom - チャネルごとの制御(チャネル + 送信者 + メンションルール):
requireMention、allowFrom、enabled、tools、toolsBySender、skills、systemPromptを持つchannels.irc.groups["#channel"] channels.irc.groupPolicy="open"は未設定のチャネルを許可します(それでもデフォルトではメンションでゲートされます)
nick!user@host)を使用してください。
単独のニックネーム一致は変更可能であり、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 を使って、"*" にはより厳しいポリシーを、自分のニックネームにはより緩いポリシーを適用します。
toolsBySenderキーには明示的なプレフィックス(channel:、id:、e164:、username:、name:)を使用してください。IRC では、送信者 ID 値とともにid:を使用します。例: より強い一致にはid:aliceまたはid:alice!~alice@203.0.113.7。- レガシーなプレフィックスなしキーも引き続き受け入れられますが、
id:としてのみ一致し、非推奨警告が出力されます。 - 最初に一致した送信者ポリシーが優先されます。
"*"はワイルドカードのフォールバックです。
NickServ
接続後に NickServ で認証するには:enabled を false にする必要があります)。service のデフォルトは NickServ です。passwordFile はインラインの password の代替です。
接続時の任意の一回限りの登録(register: true には registerEmail が必要):
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を設定します。 - ログインに失敗する場合は、ニックネームの利用可否とサーバーパスワードを確認してください。
- カスタムネットワークで TLS が失敗する場合は、ホスト/ポートと証明書設定を確認してください。
関連
- チャネル概要 — サポートされるすべてのチャネル
- ペアリング — DM 認証とペアリングフロー
- グループ — グループチャットの動作とメンションゲート
- チャネルルーティング — メッセージのセッションルーティング
- セキュリティ — アクセスモデルと強化