Developer and self-hosted
IRC
クラシックなチャンネル(#room)やダイレクトメッセージで OpenClaw を利用したい場合は、IRC を使用します。
公式の IRC Plugin をインストールし、channels.irc 配下で設定します。
クイックスタート
- Plugin をインストールします。
openclaw plugins install @openclaw/irc~/.openclaw/openclaw.jsonで、少なくともホスト、ニックネーム、参加するチャンネルを設定します。
{ channels: { irc: { enabled: true, host: "irc.example.com", port: 6697, tls: true, nick: "openclaw-bot", channels: ["#openclaw"], }, },}- Gateway を起動または再起動します。
openclaw gateway runボット間の連携には、プライベート IRC サーバーを推奨します。意図的に公開 IRC ネットワークを使用する場合、一般的な選択肢には Libera.Chat、OFTC、Snoonet があります。ボットやスウォームのバックチャネル通信には、推測されやすい公開チャンネルを避けてください。
接続設定
| キー | デフォルト | 備考 |
|---|---|---|
host |
なし(必須) | IRC サーバーのホスト名 |
port |
TLS では 6697、平文では 6667 |
1~65535 |
tls |
true |
意図的に平文を使用する場合のみ false に設定 |
nick |
なし(必須) | ボットのニックネーム |
username |
ニックネーム、それもなければ openclaw |
IRC ユーザー名 |
realname |
OpenClaw |
Realname/GECOS フィールド |
password / passwordFile |
なし | サーバーパスワード。ファイルは通常ファイルである必要があります |
channels |
なし | 参加するチャンネル(["#openclaw"]) |
accounts / defaultAccount |
なし | 複数アカウント設定。環境変数が設定されるのはデフォルトアカウントのみ |
セキュリティのデフォルト設定
- IRC は、OpenClaw の運用者が管理するフォワードプロキシルーティングの外部で、生の 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 - チャンネルごとの制御(チャンネル、送信者、メンションのルール):
channels.irc.groups["#channel"]でrequireMention、allowFrom、enabled、tools、toolsBySender、skills、systemPromptを設定 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
例(#openclaw 内の全員がボットと会話できるようにする):
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { allowFrom: ["*"] }, }, }, },}応答のトリガー(メンション)
チャンネルが(groupPolicy + groups によって)許可され、送信者も許可されている場合でも、OpenClaw はデフォルトでグループコンテキストにメンションゲートを適用します。メッセージに接続中のボットのニックネームが含まれているか、設定済みのメンションパターンに一致すると、ボットがメンションされたものと見なされます。
つまり、メッセージにボットと一致するメンションパターンが含まれていない場合、drop channel … (missing-mention) のようなログが表示されることがあります。
IRC チャンネルでメンションを必要とせずにボットを応答させるには、そのチャンネルのメンションゲートを無効にします。
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { requireMention: false, allowFrom: ["*"], }, }, }, },}または、すべての IRC チャンネルを許可し(チャンネルごとの許可リストなし)、メンションなしで応答させるには、次のように設定します。
{ channels: { irc: { groupPolicy: "open", groups: { "*": { requireMention: false, allowFrom: ["*"] }, }, }, },}セキュリティ上の注意(公開チャンネルで推奨)
公開チャンネルで allowFrom: ["*"] を許可すると、誰でもボットにプロンプトを送信できます。
リスクを軽減するには、そのチャンネルで使用できるツールを制限してください。
チャンネル内の全員に同じツールを適用
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], tools: { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, }, }, }, },}送信者ごとに異なるツールを適用(所有者にはより強い権限)
toolsBySender を使用して、"*" にはより厳格なポリシーを、自分のニックネームにはより緩いポリシーを適用します。
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], toolsBySender: { "*": { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, "id:alice": { deny: ["gateway", "nodes", "cron"], }, }, }, }, }, },}備考:
toolsBySenderのキーには明示的なプレフィックス(channel:、id:、e164:、username:、name:)を使用してください。IRC では、送信者 ID の値とともにid:を使用します。たとえばid:alice、またはより厳密に照合する場合はid:alice!~alice@203.0.113.7です。- プレフィックスのない旧形式のキーも引き続き受け付けますが、
id:としてのみ照合され、非推奨警告が出力されます。 - 最初に一致した送信者ポリシーが優先されます。
"*"はワイルドカードのフォールバックです。
グループアクセスとメンションゲートの詳細、および両者の相互作用については、/channels/groups を参照してください。
NickServ
接続後に NickServ で識別するには、次のように設定します。
{ channels: { irc: { nickserv: { enabled: true, service: "NickServ", password: "your-nickserv-password", }, }, },}パスワードが設定されている場合、NickServ の識別はデフォルトで毎回実行されます(オプトアウトする場合のみ enabled を false にする必要があります)。service のデフォルトは NickServ です。インラインの password の代わりに passwordFile も使用できます。
接続時に一度だけ登録するオプション(register: true には registerEmail が必要です):
{ channels: { irc: { nickserv: { register: true, registerEmail: "bot@example.com", }, }, },}ニックネームの登録後は、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)を確認してください。メンションなしで応答させる場合は、そのチャンネルにrequireMention:falseを設定します。 - ログインに失敗する場合は、ニックネームが使用可能かどうかと、サーバーパスワードを確認してください。
- カスタムネットワークで TLS に失敗する場合は、ホスト、ポート、証明書の設定を確認してください。
関連項目
- チャンネルの概要 — サポートされているすべてのチャンネル
- ペアリング — DM の認証とペアリングフロー
- グループ — グループチャットの動作とメンションゲート
- チャンネルルーティング — メッセージのセッションルーティング
- セキュリティ — アクセスモデルと堅牢化