Developer and self-hosted

IRC

Używaj IRC, gdy chcesz korzystać z OpenClaw w klasycznych kanałach (#room) i wiadomościach bezpośrednich. Zainstaluj oficjalny Plugin IRC, a następnie skonfiguruj go w channels.irc.

Szybki start

  1. Zainstaluj Plugin:
bash
openclaw plugins install @openclaw/irc
  1. Włącz konfigurację IRC w ~/.openclaw/openclaw.json.
  2. Ustaw co najmniej:
json5
{  channels: {    irc: {      enabled: true,      host: "irc.example.com",      port: 6697,      tls: true,      nick: "openclaw-bot",      channels: ["#openclaw"],    },  },}

Do koordynacji botów preferuj prywatny serwer IRC. Jeśli celowo używasz publicznej sieci IRC, częste wybory to Libera.Chat, OFTC i Snoonet. Unikaj przewidywalnych publicznych kanałów dla ruchu zaplecza botów lub rojów.

  1. Uruchom/uruchom ponownie Gateway:
bash
openclaw gateway run

Domyślne ustawienia bezpieczeństwa

  • IRC używa surowych gniazd TCP/TLS poza routingiem przez przekazujący serwer proxy zarządzany przez operatora OpenClaw. We wdrożeniach, które wymagają całego ruchu wychodzącego przez ten przekazujący serwer proxy, ustaw channels.irc.enabled=false, chyba że bezpośredni ruch wychodzący IRC jest wyraźnie zatwierdzony.
  • channels.irc.dmPolicy domyślnie ma wartość "pairing".
  • channels.irc.groupPolicy domyślnie ma wartość "allowlist".
  • Przy groupPolicy="allowlist" ustaw channels.irc.groups, aby zdefiniować dozwolone kanały.
  • Używaj TLS (channels.irc.tls=true), chyba że celowo akceptujesz transport tekstem jawnym.

Kontrola dostępu

Dla kanałów IRC istnieją dwie osobne „bramki”:

  1. Dostęp do kanału (groupPolicy + groups): czy bot w ogóle przyjmuje wiadomości z kanału.
  2. Dostęp nadawcy (groupAllowFrom / groups["#channel"].allowFrom dla kanału): kto może wyzwalać bota w tym kanale.

Klucze konfiguracji:

  • Lista dozwolonych DM (dostęp nadawcy DM): channels.irc.allowFrom
  • Lista dozwolonych nadawców grupy (dostęp nadawcy w kanale): channels.irc.groupAllowFrom
  • Kontrole dla kanału (reguły kanału, nadawcy i wzmianek): channels.irc.groups["#channel"]
  • channels.irc.groupPolicy="open" zezwala na nieskonfigurowane kanały (nadal domyślnie wymagają wzmianki)

Wpisy listy dozwolonych powinny używać stabilnych tożsamości nadawców (nick!user@host). Dopasowywanie samego nicka jest zmienne i włączone tylko wtedy, gdy channels.irc.dangerouslyAllowNameMatching: true.

Częsta pułapka: allowFrom jest dla DM, nie dla kanałów

Jeśli widzisz logi takie jak:

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

...oznacza to, że nadawca nie był dozwolony dla wiadomości grupowych/kanałowych. Napraw to przez:

  • ustawienie channels.irc.groupAllowFrom (globalnie dla wszystkich kanałów) albo
  • ustawienie list dozwolonych nadawców dla kanału: channels.irc.groups["#channel"].allowFrom

Przykład (zezwól każdemu w #tuirc-dev na rozmowę z botem):

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

Wyzwalanie odpowiedzi (wzmianki)

Nawet jeśli kanał jest dozwolony (przez groupPolicy + groups) i nadawca jest dozwolony, OpenClaw domyślnie wymaga bramkowania wzmiankami w kontekstach grupowych.

Oznacza to, że możesz zobaczyć logi takie jak drop channel … (missing-mention), chyba że wiadomość zawiera wzorzec wzmianki pasujący do bota.

Aby bot odpowiadał w kanale IRC bez potrzeby wzmianki, wyłącz bramkowanie wzmiankami dla tego kanału:

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

Albo aby zezwolić na wszystkie kanały IRC (bez listy dozwolonych dla poszczególnych kanałów) i nadal odpowiadać bez wzmianek:

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

Uwaga bezpieczeństwa (zalecane dla kanałów publicznych)

Jeśli zezwolisz na allowFrom: ["*"] w kanale publicznym, każdy może wysłać prompt do bota. Aby zmniejszyć ryzyko, ogranicz narzędzia dla tego kanału.

Te same narzędzia dla wszystkich w kanale

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

Różne narzędzia dla poszczególnych nadawców (właściciel ma większe uprawnienia)

Użyj toolsBySender, aby zastosować surowszą politykę do "*" i luźniejszą do swojego nicka:

json5
{  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 używać id: dla wartości tożsamości nadawcy IRC: id:eigen albo id:eigen!~eigen@174.127.248.171 dla silniejszego dopasowania.
  • Starsze klucze bez prefiksu są nadal akceptowane i dopasowywane wyłącznie jako id:.
  • Wygrywa pierwsza pasująca polityka nadawcy; "*" jest awaryjnym symbolem wieloznacznym.

Więcej informacji o dostępie grupowym i bramkowaniu wzmiankami (oraz o ich współdziałaniu) znajdziesz tutaj: /channels/groups.

NickServ

Aby zidentyfikować się w NickServ po połączeniu:

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

Opcjonalna jednorazowa rejestracja przy połączeniu:

json5
{  channels: {    irc: {      nickserv: {        register: true,        registerEmail: "bot@example.com",      },    },  },}

Wyłącz register po zarejestrowaniu nicka, aby uniknąć powtarzanych prób REGISTER.

Zmienne środowiskowe

Konto domyślne obsługuje:

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

IRC_HOST nie może być ustawione z pliku .env w workspace; zobacz pliki .env workspace.

Rozwiązywanie problemów

  • Jeśli bot łączy się, ale nigdy nie odpowiada w kanałach, sprawdź channels.irc.groups oraz czy bramkowanie wzmiankami odrzuca wiadomości (missing-mention). Jeśli chcesz, aby odpowiadał bez pingów, ustaw requireMention:false dla kanału.
  • Jeśli logowanie się nie powiedzie, sprawdź dostępność nicka i hasło serwera.
  • Jeśli TLS nie działa w niestandardowej sieci, sprawdź host/port i konfigurację certyfikatu.

Powiązane

Was this useful?
On this page

On this page