Developer and self-hosted
IRC
Gebruik IRC wanneer je OpenClaw wilt inzetten in klassieke kanalen (#room) en privéberichten.
Installeer de officiële IRC-plugin en configureer deze vervolgens onder channels.irc.
Snel aan de slag
- Installeer de plugin:
openclaw plugins install @openclaw/irc- Stel in
~/.openclaw/openclaw.jsonten minste de host, nick en kanalen in waaraan moet worden deelgenomen:
{ channels: { irc: { enabled: true, host: "irc.example.com", port: 6697, tls: true, nick: "openclaw-bot", channels: ["#openclaw"], }, },}- Start of herstart de Gateway:
openclaw gateway runGeef voor botcoördinatie de voorkeur aan een privé-IRC-server. Als je bewust een openbaar IRC-netwerk gebruikt, zijn Libera.Chat, OFTC en Snoonet gangbare keuzes. Vermijd voorspelbare openbare kanalen voor backchannelverkeer van bots of zwermen.
Duurzaamheid van inkomende berichten
OpenClaw schrijft elk geaccepteerd IRC-PRIVMSG naar zijn duurzame wachtrij voor inkomende berichten voordat de normale beleidscontroles en agentdispatch plaatsvinden. Openstaande of opnieuw te proberen berichten blijven behouden na een herstart van de Gateway en blijven per kanaal of gesprekspartner voor privéberichten geserialiseerd.
IRC biedt geen herbruikbare leverings-ID en verzendt geen berichten opnieuw die een niet-verbonden client heeft gemist. Daarom wijst OpenClaw een lokale ID toe die alleen binnen de huidige TCP-verbinding stabiel is. De wachtrij beschermt het lokale venster tussen acceptatie en dispatch; een bericht dat OpenClaw nooit heeft bereikt, kan hiermee niet worden hersteld, en een opnieuw verzonden serverbericht kan niet over verbindingen heen worden gededupliceerd.
Verbindingsinstellingen
| Sleutel | Standaard | Opmerkingen |
|---|---|---|
host |
geen (verplicht) | Hostnaam van de IRC-server |
port |
6697 met TLS, 6667 onbeveiligd |
1-65535 |
tls |
true |
Stel false alleen in voor bewust gebruik van platte tekst |
nick |
geen (verplicht) | Nick van de bot |
username |
nick, anders openclaw |
IRC-gebruikersnaam |
realname |
OpenClaw |
Realname-/GECOS-veld |
password / passwordFile |
geen | Serverwachtwoord; het bestand moet een regulier bestand zijn |
channels |
geen | Kanalen om aan deel te nemen (["#openclaw"]) |
accounts / defaultAccount |
geen | Configuratie met meerdere accounts; omgevingsvariabelen vullen alleen het standaardaccount in |
Standaardbeveiliging
- IRC gebruikt onbewerkte TCP-/TLS-sockets buiten de door de OpenClaw-operator beheerde routering via de forward proxy. Stel bij implementaties waarin al het uitgaande verkeer via die forward proxy moet lopen
channels.irc.enabled=falsein, tenzij direct uitgaand IRC-verkeer uitdrukkelijk is goedgekeurd. channels.irc.dmPolicyis standaard"pairing": onbekende afzenders van privéberichten krijgen een koppelcode die je goedkeurt metopenclaw pairing approve irc <code>.channels.irc.groupPolicyis standaard"allowlist".- Stel bij
groupPolicy="allowlist"channels.irc.groupsin om toegestane kanalen te definiëren. - Gebruik TLS (
channels.irc.tls=true), tenzij je bewust transport in platte tekst accepteert.
Toegangsbeheer
Er zijn twee afzonderlijke 'poorten' voor IRC-kanalen:
- Kanaaltoegang (
groupPolicy+groups): of de bot überhaupt berichten uit een kanaal accepteert. - Afzendertoegang (
groupAllowFrom/groups["#channel"].allowFromper kanaal): wie de bot binnen dat kanaal mag activeren.
Configuratiesleutels:
- Toestaanlijst voor privéberichten (toegang voor afzenders van privéberichten):
channels.irc.allowFrom - Toestaanlijst voor groepsafzenders (toegang voor kanaalafzenders):
channels.irc.groupAllowFrom - Besturing per kanaal (regels voor kanaal, afzender en vermeldingen):
channels.irc.groups["#channel"]metrequireMention,allowFrom,enabled,tools,toolsBySender,skillsensystemPrompt channels.irc.groupPolicy="open"staat niet-geconfigureerde kanalen toe (standaard geldt nog steeds een vermeldingsvereiste)
Vermeldingen in de toestaanlijst moeten stabiele afzenderidentiteiten gebruiken (nick!user@host).
Overeenkomst op basis van alleen de nick is veranderlijk en wordt alleen ingeschakeld wanneer channels.irc.dangerouslyAllowNameMatching: true.
Veelvoorkomende valkuil: allowFrom is voor privéberichten, niet voor kanalen
Als je logboekregels 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.groupAllowFromin te stellen (globaal voor alle kanalen), of- toestaanlijsten voor afzenders per kanaal in te stellen:
channels.irc.groups["#channel"].allowFrom
Voorbeeld (iedereen in #openclaw toestaan met de bot te praten):
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { allowFrom: ["*"] }, }, }, },}Antwoorden activeren (vermeldingen)
Zelfs als een kanaal is toegestaan (via groupPolicy + groups) en de afzender is toegestaan, past OpenClaw in groepscontexten standaard een vermeldingsvereiste toe. De bot geldt als vermeld wanneer het bericht de verbonden botnick bevat of overeenkomt met je geconfigureerde vermeldingspatronen.
Dit betekent dat je logboekregels zoals drop channel … (missing-mention) kunt zien, tenzij het bericht een vermeldingspatroon bevat dat met de bot overeenkomt.
Schakel de vermeldingsvereiste voor dat kanaal uit om de bot zonder vereiste vermelding in een IRC-kanaal te laten antwoorden:
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { requireMention: false, allowFrom: ["*"], }, }, }, },}Of om alle IRC-kanalen toe te staan (zonder toestaanlijst per kanaal) en toch zonder vermeldingen te antwoorden:
{ channels: { irc: { groupPolicy: "open", groups: { "*": { requireMention: false, allowFrom: ["*"] }, }, }, },}Beveiligingsopmerking (aanbevolen voor openbare kanalen)
Als je allowFrom: ["*"] in een openbaar kanaal toestaat, kan iedereen de bot een prompt geven.
Beperk de tools voor dat kanaal om het risico te verkleinen.
Dezelfde tools voor iedereen in het kanaal
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], tools: { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, }, }, }, },}Verschillende tools per afzender (de eigenaar krijgt meer bevoegdheden)
Gebruik toolsBySender om een strenger beleid toe te passen op "*" en een minder streng beleid op je nick:
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], toolsBySender: { "*": { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, "id:alice": { deny: ["gateway", "nodes", "cron"], }, }, }, }, }, },}Opmerkingen:
- Sleutels voor
toolsBySendermoeten expliciete voorvoegsels gebruiken (channel:,id:,e164:,username:,name:). Gebruik voor IRCid:met de identiteitswaarde van de afzender:id:aliceofid:alice!~alice@203.0.113.7voor een sterkere overeenkomst. - Verouderde sleutels zonder voorvoegsel worden nog steeds geaccepteerd, uitsluitend als
id:gematcht en geven een afschrijvingswaarschuwing. - Het eerste overeenkomende afzenderbeleid heeft voorrang;
"*"is de jokertekenfallback.
Zie voor meer informatie over groepstoegang versus vermeldingsvereisten (en hun onderlinge wisselwerking): /channels/groups.
NickServ
Identificeren bij NickServ na het verbinden:
{ channels: { irc: { nickserv: { enabled: true, service: "NickServ", password: "your-nickserv-password", }, }, },}Identificatie bij NickServ wordt standaard uitgevoerd wanneer een wachtwoord is ingesteld (enabled hoeft alleen false te zijn om dit uit te schakelen). service is standaard NickServ; passwordFile is een alternatief voor inline password.
Optionele eenmalige registratie bij het verbinden (register: true vereist registerEmail):
{ channels: { irc: { nickserv: { register: true, registerEmail: "bot@example.com", }, }, },}Schakel register uit nadat de nick is geregistreerd om herhaalde REGISTER-pogingen te voorkomen.
Omgevingsvariabelen
Het standaardaccount ondersteunt:
IRC_HOSTIRC_PORTIRC_TLSIRC_NICKIRC_USERNAMEIRC_REALNAMEIRC_PASSWORDIRC_CHANNELS(door komma's gescheiden)IRC_NICKSERV_PASSWORDIRC_NICKSERV_REGISTER_EMAIL
IRC_HOST kan niet worden ingesteld vanuit een .env van een werkruimte; zie .env-bestanden van werkruimten.
Problemen oplossen
- Als de bot verbinding maakt maar nooit in kanalen antwoordt, controleer dan
channels.irc.groupsen of berichten door de vermeldingsvereiste worden geweigerd (missing-mention). StelrequireMention:falsevoor het kanaal in als je wilt dat de bot zonder pings antwoordt. - Als aanmelden mislukt, controleer dan de beschikbaarheid van de nick en het serverwachtwoord.
- Als TLS op een aangepast netwerk mislukt, controleer dan de host, poort en certificaatconfiguratie.
Gerelateerd
- Overzicht van kanalen — alle ondersteunde kanalen
- Koppelen — authenticatie van privéberichten en koppelingsflow
- Groepen — gedrag van groepschats en vermeldingsvereisten
- Kanaalroutering — sessieroutering voor berichten
- Beveiliging — toegangsmodel en versterking