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

  1. Wlacz konfiguracje IRC w ~/.openclaw/openclaw.json.
  2. Ustaw co najmniej:
{
  "channels": {
    "irc": {
      "enabled": true,
      "host": "irc.libera.chat",
      "port": 6697,
      "tls": true,
      "nick": "openclaw-bot",
      "channels": ["#openclaw"]
    }
  }
}
  1. Uruchom/zrestartuj gateway:
openclaw gateway run

Domyslne bezpieczenstwa

  • channels.irc.dmPolicy domyslnie "pairing".
  • channels.irc.groupPolicy domyslnie "allowlist".
  • Przy groupPolicy="allowlist" ustaw channels.irc.groups aby zdefiniowac dozwolone kanaly.
  • Uzywaj TLS (channels.irc.tls=true), chyba ze celowo akceptujesz transport nieszyfrowany.

Kontrola dostepu

Istnieja dwie oddzielne “bramki” dla kanalow IRC:

  1. Dostep do kanalu (groupPolicy + groups): czy bot w ogole akceptuje wiadomosci z kanalu.
  2. Dostep nadawcy (groupAllowFrom / per-kanal groups["#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 toolsBySender powinny uzywac id: dla wartosci tozsamosci nadawcow IRC: id:eigen lub id:[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_HOST
  • IRC_PORT
  • IRC_TLS
  • IRC_NICK
  • IRC_USERNAME
  • IRC_REALNAME
  • IRC_PASSWORD
  • IRC_CHANNELS (rozdzielone przecinkami)
  • IRC_NICKSERV_PASSWORD
  • IRC_NICKSERV_REGISTER_EMAIL

Rozwiazywanie problemow

  • Jesli bot sie laczy, ale nigdy nie odpowiada na kanalach, zweryfikuj channels.irc.groups i czy bramkowanie wzmiankami odrzuca wiadomosci (missing-mention). Jesli chcesz, zeby odpowiadal bez pingow, ustaw requireMention:false dla 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.