Gebruik IRC wanneer je OpenClaw in klassieke kanalen (#room) en directe berichten wilt draaien. IRC wordt als extensie-plugin geleverd, maar wordt geconfigureerd in de hoofdconfig onder channels.irc.

Snelle start

  1. Schakel de IRC-config in ~/.openclaw/openclaw.json in.
  2. Stel minimaal het volgende in:
{
  "channels": {
    "irc": {
      "enabled": true,
      "host": "irc.libera.chat",
      "port": 6697,
      "tls": true,
      "nick": "openclaw-bot",
      "channels": ["#openclaw"]
    }
  }
}
  1. Start de gateway (opnieuw):
openclaw gateway run

Beveiligingsstandaarden

  • channels.irc.dmPolicy staat standaard op "pairing".
  • channels.irc.groupPolicy staat standaard op "allowlist".
  • Bij groupPolicy="allowlist" stel je channels.irc.groups in om toegestane kanalen te definiëren.
  • Gebruik TLS (channels.irc.tls=true) tenzij je bewust onversleuteld transport accepteert.

Toegangscontrole

Er zijn twee afzonderlijke “poorten” voor IRC-kanalen:

  1. Kanaaltoegang (groupPolicy + groups): of de bot überhaupt berichten uit een kanaal accepteert.
  2. Afzendertoegang (groupAllowFrom / per-kanaal groups["#channel"].allowFrom): wie de bot binnen dat kanaal mag triggeren.

Configuratiesleutels:

  • DM-allowlist (DM-afzendertoegang): channels.irc.allowFrom
  • Groepsafzender-allowlist (kanaalafzendertoegang): channels.irc.groupAllowFrom
  • Per-kanaalinstellingen (kanaal + afzender + mention-regels): channels.irc.groups["#channel"]
  • channels.irc.groupPolicy="open" staat niet-geconfigureerde kanalen toe (standaard nog steeds mention-gated)

Allowlist-vermeldingen moeten stabiele afzenderidentiteiten gebruiken (nick!user@host). Kale nick-matching is veranderlijk en wordt alleen ingeschakeld wanneer channels.irc.dangerouslyAllowNameMatching: true.

Veelvoorkomende valkuil: allowFrom is voor DM’s, niet voor kanalen

Als je logs ziet zoals:

  • irc: drop group sender alice!ident@host (policy=allowlist)

…betekent dit dat de afzender niet was toegestaan voor groeps-/kanaalberichten. Los dit op door:

  • channels.irc.groupAllowFrom in te stellen (globaal voor alle kanalen), of
  • per-kanaal afzender-allowlists in te stellen: channels.irc.groups["#channel"].allowFrom

Voorbeeld (iedereen in #tuirc-dev toestaan om met de bot te praten):

{
  channels: {
    irc: {
      groupPolicy: "allowlist",
      groups: {
        "#tuirc-dev": { allowFrom: ["*"] },
      },
    },
  },
}

Antwoord-triggering (vermeldingen)

Zelfs als een kanaal is toegestaan (via groupPolicy + groups) en de afzender is toegestaan, past OpenClaw standaard mention-gating toe in groepscontexten.

Dat betekent dat je logs kunt zien zoals drop channel … (missing-mention) tenzij het bericht een mention-patroon bevat dat overeenkomt met de bot.

Om de bot in een IRC-kanaal te laten antwoorden zonder dat een vermelding nodig is, schakel je mention-gating voor dat kanaal uit:

{
  channels: {
    irc: {
      groupPolicy: "allowlist",
      groups: {
        "#tuirc-dev": {
          requireMention: false,
          allowFrom: ["*"],
        },
      },
    },
  },
}

Of om alle IRC-kanalen toe te staan (geen per-kanaal-allowlist) en toch zonder vermeldingen te antwoorden:

{
  channels: {
    irc: {
      groupPolicy: "open",
      groups: {
        "*": { requireMention: false, allowFrom: ["*"] },
      },
    },
  },
}

Beveiligingsopmerking (aanbevolen voor openbare kanalen)

Als je allowFrom: ["*"] toestaat in een openbaar kanaal, kan iedereen de bot aanspreken. Beperk de tools voor dat kanaal om risico’s te verminderen.

Dezelfde tools voor iedereen in het kanaal

{
  channels: {
    irc: {
      groups: {
        "#tuirc-dev": {
          allowFrom: ["*"],
          tools: {
            deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
          },
        },
      },
    },
  },
}

Verschillende tools per afzender (eigenaar krijgt meer rechten)

Gebruik toolsBySender om een strenger beleid toe te passen voor "*" en een losser beleid voor jouw nick:

{
  channels: {
    irc: {
      groups: {
        "#tuirc-dev": {
          allowFrom: ["*"],
          toolsBySender: {
            "*": {
              deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
            },
            "id:eigen": {
              deny: ["gateway", "nodes", "cron"],
            },
          },
        },
      },
    },
  },
}

Opmerkingen:

  • toolsBySender-sleutels moeten id: gebruiken voor IRC-afzenderidentiteitswaarden: id:eigen of id:[email protected] voor sterkere matching.
  • Legacy-sleutels zonder prefix worden nog steeds geaccepteerd en alleen als id: gematcht.
  • Het eerste overeenkomende afzenderbeleid wint; "*" is de wildcard-terugval.

Voor meer over groepstoegang versus mention-gating (en hoe ze samenwerken), zie: /channels/groups.

NickServ

Om je bij NickServ te identificeren na verbinding:

{
  "channels": {
    "irc": {
      "nickserv": {
        "enabled": true,
        "service": "NickServ",
        "password": "your-nickserv-password"
      }
    }
  }
}

Optionele eenmalige registratie bij verbinding:

{
  "channels": {
    "irc": {
      "nickserv": {
        "register": true,
        "registerEmail": "[email protected]"
      }
    }
  }
}

Schakel register uit nadat de nick is geregistreerd om herhaalde REGISTER-pogingen te voorkomen.

Omgevingsvariabelen

Het standaardaccount ondersteunt:

  • IRC_HOST
  • IRC_PORT
  • IRC_TLS
  • IRC_NICK
  • IRC_USERNAME
  • IRC_REALNAME
  • IRC_PASSWORD
  • IRC_CHANNELS (kommagescheiden)
  • IRC_NICKSERV_PASSWORD
  • IRC_NICKSERV_REGISTER_EMAIL

Probleemoplossing

  • Als de bot verbinding maakt maar nooit antwoordt in kanalen, controleer dan channels.irc.groups en of mention-gating berichten dropt (missing-mention). Als je wilt dat de bot antwoordt zonder pings, stel dan requireMention:false in voor het kanaal.
  • Als inloggen mislukt, controleer dan de beschikbaarheid van de nick en het serverwachtwoord.
  • Als TLS mislukt op een aangepast netwerk, controleer dan host/poort en certificaatinstellingen.