クラシックなチャンネル(#room)やダイレクトメッセージでOpenClawを使いたい場合にIRCを利用します。
IRCは拡張プラグインとして提供されますが、メイン設定のchannels.ircで設定します。
クイックスタート
~/.openclaw/openclaw.jsonでIRC設定を有効化。- 最低限以下を設定:
{
"channels": {
"irc": {
"enabled": true,
"host": "irc.libera.chat",
"port": 6697,
"tls": true,
"nick": "openclaw-bot",
"channels": ["#openclaw"]
}
}
}
- Gatewayを起動/再起動:
openclaw gateway run
セキュリティのデフォルト
channels.irc.dmPolicyのデフォルトは"pairing"。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 - チャンネルごとの制御(チャンネル+送信者+メンションルール):
channels.irc.groups["#channel"] channels.irc.groupPolicy="open"は未設定のチャンネルを許可(デフォルトではメンションゲーティングが適用)
許可リストのエントリには安定した送信者IDを使用してください(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
例(#tuirc-devで全員がボットと会話可能にする):
{
channels: {
irc: {
groupPolicy: "allowlist",
groups: {
"#tuirc-dev": { allowFrom: ["*"] },
},
},
},
}
返信トリガー(メンション)
チャンネルが許可され(groupPolicy + groups)、送信者が許可されていても、OpenClawはグループコンテキストではデフォルトでメンションゲーティングを適用します。
つまり、メッセージにボットにマッチするメンションパターンが含まれていない限り、ログにdrop channel … (missing-mention)と表示される場合があります。
メンションなしでIRCチャンネルでボットを返信させるには、そのチャンネルのメンションゲーティングを無効にします:
{
channels: {
irc: {
groupPolicy: "allowlist",
groups: {
"#tuirc-dev": {
requireMention: false,
allowFrom: ["*"],
},
},
},
},
}
またはすべてのIRCチャンネルを許可しつつメンションなしで返信:
{
channels: {
irc: {
groupPolicy: "open",
groups: {
"*": { requireMention: false, allowFrom: ["*"] },
},
},
},
}
セキュリティに関する注意(パブリックチャンネル向け推奨)
パブリックチャンネルでallowFrom: ["*"]を許可する場合、誰でもボットにプロンプトを送信できます。
リスクを軽減するため、そのチャンネルのツールを制限してください。
チャンネル内の全員に同じツール
{
channels: {
irc: {
groups: {
"#tuirc-dev": {
allowFrom: ["*"],
tools: {
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
},
},
},
},
},
}
送信者ごとに異なるツール(オーナーにより多くの権限)
toolsBySenderを使用して"*"により厳しいポリシーを、自分のニックにはより緩いポリシーを適用します:
{
channels: {
irc: {
groups: {
"#tuirc-dev": {
allowFrom: ["*"],
toolsBySender: {
"*": {
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
},
"id:eigen": {
deny: ["gateway", "nodes", "cron"],
},
},
},
},
},
},
}
注意:
toolsBySenderのキーにはIRC送信者IDにid:プレフィックスを使用してください:id:eigenやid:[email protected]でより厳密なマッチング。- レガシーのプレフィックスなしキーも受け付けられ、
id:としてのみマッチします。 - 最初にマッチした送信者ポリシーが優先されます。
"*"はワイルドカードフォールバック。
グループアクセスとメンションゲーティングの相互作用の詳細:/channels/groups
NickServ
接続後にNickServで認証するには:
{
"channels": {
"irc": {
"nickserv": {
"enabled": true,
"service": "NickServ",
"password": "your-nickserv-password"
}
}
}
}
接続時の一回限りの登録(オプション):
{
"channels": {
"irc": {
"nickserv": {
"register": true,
"registerEmail": "[email protected]"
}
}
}
}
ニックネームの登録後は、REGISTERの繰り返しを避けるためにregisterを無効にしてください。
環境変数
デフォルトアカウントの対応:
IRC_HOSTIRC_PORTIRC_TLSIRC_NICKIRC_USERNAMEIRC_REALNAMEIRC_PASSWORDIRC_CHANNELS(カンマ区切り)IRC_NICKSERV_PASSWORDIRC_NICKSERV_REGISTER_EMAIL
トラブルシューティング
- ボットが接続されているがチャンネルで返信しない場合、
channels.irc.groupsを確認し、メンションゲーティングがメッセージをドロップしていないか確認してください(missing-mention)。メンションなしで返信させたい場合は、そのチャンネルにrequireMention:falseを設定します。 - ログインに失敗する場合は、ニックネームの利用可能性とサーバーパスワードを確認。
- カスタムネットワークでTLSに失敗する場合は、ホスト/ポートと証明書の設定を確認。