Uzyj IRC, gdy chcesz OpenClaw na klasycznych kanalach (#room) i w wiadomosciach bezposrednich.
IRC jest dostarczany jako plugin rozszerzenia, ale jest konfigurowany w glownej konfiguracji pod channels.irc.
Szybki start
- Wlacz konfiguracje IRC w
~/.openclaw/openclaw.json. - Ustaw co najmniej:
{
"channels": {
"irc": {
"enabled": true,
"host": "irc.libera.chat",
"port": 6697,
"tls": true,
"nick": "openclaw-bot",
"channels": ["#openclaw"]
}
}
}
- Uruchom/zrestartuj gateway:
openclaw gateway run
Domyslne bezpieczenstwa
channels.irc.dmPolicydomyslnie"pairing".channels.irc.groupPolicydomyslnie"allowlist".- Przy
groupPolicy="allowlist"ustawchannels.irc.groupsaby zdefiniowac dozwolone kanaly. - Uzywaj TLS (
channels.irc.tls=true), chyba ze celowo akceptujesz transport nieszyfrowany.
Kontrola dostepu
Istnieja dwie oddzielne “bramki” dla kanalow IRC:
- Dostep do kanalu (
groupPolicy+groups): czy bot w ogole akceptuje wiadomosci z kanalu. - Dostep nadawcy (
groupAllowFrom/ per-kanalgroups["#channel"].allowFrom): kto moze wyzwalac bota wewnatrz tego kanalu.
Klucze konfiguracji:
- Lista dozwolonych DM (dostep nadawcy DM):
channels.irc.allowFrom - Lista dozwolonych nadawcow grupowych (dostep nadawcy kanalu):
channels.irc.groupAllowFrom - Kontrole per kanal (kanal + nadawca + reguly wzmianek):
channels.irc.groups["#channel"] channels.irc.groupPolicy="open"zezwala na nieskonfigurowane kanaly (nadal domyslnie bramkowane wzmiankami)
Wpisy listy dozwolonych powinny uzywac stabilnych tozsamosci nadawcow (nick!user@host).
Dopasowywanie po samym nicku jest zmienne i wlaczane tylko gdy channels.irc.dangerouslyAllowNameMatching: true.
Czesta pulapka: allowFrom dotyczy DM, nie kanalow
Jesli widzisz logi takie jak:
irc: drop group sender alice!ident@host (policy=allowlist)
…oznacza to, ze nadawca nie mial uprawnien do wiadomosci grupowych/kanalowych. Napraw to:
- ustawiajac
channels.irc.groupAllowFrom(globalnie dla wszystkich kanalow), lub - ustawiajac listy dozwolonych nadawcow per kanal:
channels.irc.groups["#channel"].allowFrom
Przyklad (zezwol komukolwiek na #tuirc-dev rozmawiac z botem):
{
channels: {
irc: {
groupPolicy: "allowlist",
groups: {
"#tuirc-dev": { allowFrom: ["*"] },
},
},
},
}
Wyzwalanie odpowiedzi (wzmianki)
Nawet jesli kanal jest dozwolony (przez groupPolicy + groups) i nadawca jest dozwolony, OpenClaw domyslnie stosuje bramkowanie wzmiankami w kontekstach grupowych.
Oznacza to, ze mozesz widziec logi takie jak drop channel … (missing-mention), chyba ze wiadomosc zawiera wzorzec wzmianki pasujacy do bota.
Aby bot odpowiadal na kanale IRC bez koniecznosci wzmianki, wylacz bramkowanie wzmiankami dla tego kanalu:
{
channels: {
irc: {
groupPolicy: "allowlist",
groups: {
"#tuirc-dev": {
requireMention: false,
allowFrom: ["*"],
},
},
},
},
}
Lub aby zezwolic na wszystkie kanaly IRC (bez listy dozwolonych per kanal) i nadal odpowiadac bez wzmianek:
{
channels: {
irc: {
groupPolicy: "open",
groups: {
"*": { requireMention: false, allowFrom: ["*"] },
},
},
},
}
Uwaga bezpieczenstwa (zalecana dla publicznych kanalow)
Jesli zezwalasz na allowFrom: ["*"] na publicznym kanale, kazdy moze promptowac bota.
Aby zmniejszyc ryzyko, ogranicz narzedzia dla tego kanalu.
Te same narzedzia dla wszystkich na kanale
{
channels: {
irc: {
groups: {
"#tuirc-dev": {
allowFrom: ["*"],
tools: {
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
},
},
},
},
},
}
Rozne narzedzia per nadawca (wlasciciel ma wiecej uprawnien)
Uzyj toolsBySender aby zastosowac bardziej restrykcyjna polityke dla "*" i luzniejsza dla twojego nicku:
{
channels: {
irc: {
groups: {
"#tuirc-dev": {
allowFrom: ["*"],
toolsBySender: {
"*": {
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
},
"id:eigen": {
deny: ["gateway", "nodes", "cron"],
},
},
},
},
},
},
}
Uwagi:
- Klucze
toolsBySenderpowinny uzywacid:dla wartosci tozsamosci nadawcow IRC:id:eigenlubid:[email protected]dla silniejszego dopasowania. - Starsze klucze bez prefiksu sa nadal akceptowane i dopasowywane tylko jako
id:. - Pierwsza pasujaca polityka nadawcy wygrywa;
"*"jest zastepczym wildcard.
Wiecej o dostepie grupowym vs bramkowaniu wzmiankami (i ich interakcji) zobacz: /channels/groups.
NickServ
Identyfikacja z NickServ po polaczeniu:
{
"channels": {
"irc": {
"nickserv": {
"enabled": true,
"service": "NickServ",
"password": "your-nickserv-password"
}
}
}
}
Opcjonalna jednorazowa rejestracja przy polaczeniu:
{
"channels": {
"irc": {
"nickserv": {
"register": true,
"registerEmail": "[email protected]"
}
}
}
}
Wylacz register po zarejestrowaniu nicku, aby uniknac powtarzanych prob REGISTER.
Zmienne srodowiskowe
Domyslne konto obsluguje:
IRC_HOSTIRC_PORTIRC_TLSIRC_NICKIRC_USERNAMEIRC_REALNAMEIRC_PASSWORDIRC_CHANNELS(rozdzielone przecinkami)IRC_NICKSERV_PASSWORDIRC_NICKSERV_REGISTER_EMAIL
Rozwiazywanie problemow
- Jesli bot sie laczy, ale nigdy nie odpowiada na kanalach, zweryfikuj
channels.irc.groupsi czy bramkowanie wzmiankami odrzuca wiadomosci (missing-mention). Jesli chcesz, zeby odpowiadal bez pingow, ustawrequireMention:falsedla kanalu. - Jesli logowanie nie powiodlo sie, sprawdz dostepnosc nicku i haslo serwera.
- Jesli TLS nie dziala w niestandardowej sieci, zweryfikuj host/port i konfiguracje certyfikatu.