Verwende IRC, wenn du OpenClaw in klassischen KanÀlen (#room) und Direktnachrichten nutzen möchtest.
IRC wird als Erweiterungs-Plugin geliefert, aber in der Hauptkonfiguration unter channels.irc konfiguriert.
Schnellstart
- Aktiviere die IRC-Konfiguration in
~/.openclaw/openclaw.json. - Setze mindestens:
{
"channels": {
"irc": {
"enabled": true,
"host": "irc.libera.chat",
"port": 6697,
"tls": true,
"nick": "openclaw-bot",
"channels": ["#openclaw"]
}
}
}
- Starte das Gateway (neu):
openclaw gateway run
Sicherheitsstandards
channels.irc.dmPolicyist standardmĂ€Ăig"pairing".channels.irc.groupPolicyist standardmĂ€Ăig"allowlist".- Bei
groupPolicy="allowlist"setzechannels.irc.groups, um erlaubte KanÀle zu definieren. - Verwende TLS (
channels.irc.tls=true), es sei denn, du akzeptierst bewusst Klartexttransport.
Zugriffssteuerung
Es gibt zwei separate âGatesâ fĂŒr IRC-KanĂ€le:
- Kanalzugriff (
groupPolicy+groups): ob der Bot ĂŒberhaupt Nachrichten aus einem Kanal akzeptiert. - Absenderzugriff (
groupAllowFrom/ pro-Kanalgroups["#channel"].allowFrom): wer den Bot innerhalb dieses Kanals auslösen darf.
KonfigurationsschlĂŒssel:
- DM-Allowlist (DM-Absenderzugriff):
channels.irc.allowFrom - Gruppen-Absender-Allowlist (Kanal-Absenderzugriff):
channels.irc.groupAllowFrom - Pro-Kanal-Steuerung (Kanal + Absender + Mention-Regeln):
channels.irc.groups["#channel"] channels.irc.groupPolicy="open"erlaubt unkonfigurierte KanĂ€le (standardmĂ€Ăig weiterhin mention-gated)
Allowlist-EintrÀge sollten stabile AbsenderidentitÀten verwenden (nick!user@host).
Einfaches Nick-Matching ist verÀnderlich und nur aktiviert wenn channels.irc.dangerouslyAllowNameMatching: true.
HĂ€ufiger Fehler: allowFrom ist fĂŒr DMs, nicht fĂŒr KanĂ€le
Wenn du Logs wie diese siehst:
irc: drop group sender alice!ident@host (policy=allowlist)
âŠbedeutet das, dass der Absender fĂŒr Gruppen-/Kanal-Nachrichten nicht erlaubt war. Behebe es durch:
- Setzen von
channels.irc.groupAllowFrom(global fĂŒr alle KanĂ€le), oder - Setzen von pro-Kanal-Absender-Allowlists:
channels.irc.groups["#channel"].allowFrom
Beispiel (erlaube jedem in #tuirc-dev, mit dem Bot zu sprechen):
{
channels: {
irc: {
groupPolicy: "allowlist",
groups: {
"#tuirc-dev": { allowFrom: ["*"] },
},
},
},
}
Antwortauslösung (Mentions)
Selbst wenn ein Kanal erlaubt ist (via groupPolicy + groups) und der Absender erlaubt ist, nutzt OpenClaw standardmĂ€Ăig Mention-Gating in Gruppenkontexten.
Das bedeutet, du siehst möglicherweise Logs wie drop channel ⊠(missing-mention), es sei denn, die Nachricht enthÀlt ein Mention-Muster, das zum Bot passt.
Um den Bot in einem IRC-Kanal ohne Mention antworten zu lassen, deaktiviere das Mention-Gating fĂŒr diesen Kanal:
{
channels: {
irc: {
groupPolicy: "allowlist",
groups: {
"#tuirc-dev": {
requireMention: false,
allowFrom: ["*"],
},
},
},
},
}
Oder um alle IRC-KanÀle zu erlauben (keine pro-Kanal-Allowlist) und dennoch ohne Mentions zu antworten:
{
channels: {
irc: {
groupPolicy: "open",
groups: {
"*": { requireMention: false, allowFrom: ["*"] },
},
},
},
}
Sicherheitshinweis (empfohlen fĂŒr öffentliche KanĂ€le)
Wenn du allowFrom: ["*"] in einem öffentlichen Kanal erlaubst, kann jeder den Bot prompten.
Um das Risiko zu reduzieren, beschrĂ€nke die Tools fĂŒr diesen Kanal.
Gleiche Tools fĂŒr alle im Kanal
{
channels: {
irc: {
groups: {
"#tuirc-dev": {
allowFrom: ["*"],
tools: {
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
},
},
},
},
},
}
Verschiedene Tools pro Absender (Besitzer bekommt mehr Rechte)
Verwende toolsBySender, um eine strengere Richtlinie fĂŒr "*" und eine lockerere fĂŒr deinen Nick anzuwenden:
{
channels: {
irc: {
groups: {
"#tuirc-dev": {
allowFrom: ["*"],
toolsBySender: {
"*": {
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
},
"id:eigen": {
deny: ["gateway", "nodes", "cron"],
},
},
},
},
},
},
}
Hinweise:
toolsBySender-SchlĂŒssel solltenid:fĂŒr IRC-AbsenderidentitĂ€tswerte verwenden:id:eigenoderid:eigen!~eigen@174.127.248.171fĂŒr stĂ€rkeres Matching.- Legacy-SchlĂŒssel ohne PrĂ€fix werden weiterhin akzeptiert und nur als
id:gematcht. - Die erste passende Absenderrichtlinie gewinnt;
"*"ist der Wildcard-Fallback.
Mehr zu Gruppenzugriff vs. Mention-Gating (und wie sie interagieren): /channels/groups.
NickServ
Um sich nach dem Verbinden bei NickServ zu identifizieren:
{
"channels": {
"irc": {
"nickserv": {
"enabled": true,
"service": "NickServ",
"password": "your-nickserv-password"
}
}
}
}
Optionale einmalige Registrierung beim Verbinden:
{
"channels": {
"irc": {
"nickserv": {
"register": true,
"registerEmail": "bot@example.com"
}
}
}
}
Deaktiviere register nach der Nick-Registrierung, um wiederholte REGISTER-Versuche zu vermeiden.
Umgebungsvariablen
Standardkonto unterstĂŒtzt:
IRC_HOSTIRC_PORTIRC_TLSIRC_NICKIRC_USERNAMEIRC_REALNAMEIRC_PASSWORDIRC_CHANNELS(kommagetrennt)IRC_NICKSERV_PASSWORDIRC_NICKSERV_REGISTER_EMAIL
Fehlerbehebung
- Wenn der Bot sich verbindet, aber nie in KanĂ€len antwortet, ĂŒberprĂŒfe
channels.irc.groupsund ob Mention-Gating Nachrichten verwirft (missing-mention). Wenn er ohne Pings antworten soll, setzerequireMention:falsefĂŒr den Kanal. - Wenn der Login fehlschlĂ€gt, ĂŒberprĂŒfe die Nick-VerfĂŒgbarkeit und das Server-Passwort.
- Wenn TLS in einem benutzerdefinierten Netzwerk fehlschlĂ€gt, ĂŒberprĂŒfe Host/Port und die Zertifikatkonfiguration.