Developer and self-hosted
IRC
Використовуйте IRC, коли хочете працювати з OpenClaw у класичних каналах (#room) і приватних повідомленнях.
Установіть офіційний Plugin IRC, а потім налаштуйте його в channels.irc.
Швидкий початок
- Установіть Plugin:
openclaw plugins install @openclaw/irc- Укажіть у
~/.openclaw/openclaw.jsonщонайменше хост, нік і канали, до яких потрібно приєднатися:
{ channels: { irc: { enabled: true, host: "irc.example.com", port: 6697, tls: true, nick: "openclaw-bot", channels: ["#openclaw"], }, },}- Запустіть або перезапустіть Gateway:
openclaw gateway runДля координації ботів віддавайте перевагу приватному серверу IRC. Якщо ви свідомо використовуєте загальнодоступну мережу IRC, поширеними варіантами є Libera.Chat, OFTC і Snoonet. Не використовуйте передбачувані загальнодоступні канали для службового обміну даними між ботами або роєм.
Налаштування з’єднання
| Ключ | Типове значення | Примітки |
|---|---|---|
host |
немає (обов’язково) | Ім’я хоста сервера IRC |
port |
6697 із TLS, 6667 без шифрування |
1–65535 |
tls |
true |
Установлюйте false лише для навмисного використання незашифрованого з’єднання |
nick |
немає (обов’язково) | Нік бота |
username |
нік, інакше openclaw |
Ім’я користувача IRC |
realname |
OpenClaw |
Поле справжнього імені/GECOS |
password / passwordFile |
немає | Пароль сервера; файл має бути звичайним файлом |
channels |
немає | Канали, до яких потрібно приєднатися (["#openclaw"]) |
accounts / defaultAccount |
немає | Налаштування кількох облікових записів; змінні середовища заповнюють лише типовий обліковий запис |
Типові налаштування безпеки
- IRC використовує необроблені сокети TCP/TLS поза маршрутизацією через керований оператором OpenClaw прямий проксі-сервер. У розгортаннях, де весь вихідний трафік має проходити через цей прямий проксі-сервер, установіть
channels.irc.enabled=false, якщо прямий вихідний трафік IRC явно не схвалено. - Типове значення
channels.irc.dmPolicy—"pairing": невідомі відправники приватних повідомлень отримують код сполучення, який ви схвалюєте командоюopenclaw pairing approve irc <code>. - Типове значення
channels.irc.groupPolicy—"allowlist". - Якщо задано
groupPolicy="allowlist", налаштуйтеchannels.irc.groups, щоб визначити дозволені канали. - Використовуйте TLS (
channels.irc.tls=true), якщо ви свідомо не погоджуєтеся на передавання даних без шифрування.
Керування доступом
Для каналів IRC є два окремі «шлюзи»:
- Доступ до каналу (
groupPolicy+groups): чи приймає бот узагалі повідомлення з каналу. - Доступ відправника (
groupAllowFrom/groups["#channel"].allowFromдля окремого каналу): хто може активувати бота в цьому каналі.
Ключі конфігурації:
- Список дозволених для приватних повідомлень (доступ відправників приватних повідомлень):
channels.irc.allowFrom - Список дозволених відправників у групах (доступ відправників каналу):
channels.irc.groupAllowFrom - Налаштування окремого каналу (правила каналу, відправників і згадок):
channels.irc.groups["#channel"]ізrequireMention,allowFrom,enabled,tools,toolsBySender,skillsіsystemPrompt channels.irc.groupPolicy="open"дозволяє неналаштовані канали (але типово все одно вимагає згадки)
Записи списку дозволених мають використовувати стабільні ідентифікатори відправників (nick!user@host).
Зіставлення лише за ніком ненадійне й вмикається тільки за умови channels.irc.dangerouslyAllowNameMatching: true.
Поширена помилка: allowFrom призначено для приватних повідомлень, а не каналів
Якщо в журналах з’являються записи на кшталт:
irc: drop group sender alice!ident@host (policy=allowlist)
...це означає, що відправнику не дозволено надсилати групові повідомлення або повідомлення каналу. Виправити це можна одним із таких способів:
- установити
channels.irc.groupAllowFrom(глобально для всіх каналів) або - налаштувати списки дозволених відправників для окремих каналів:
channels.irc.groups["#channel"].allowFrom
Приклад (дозволити всім у #openclaw спілкуватися з ботом):
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { allowFrom: ["*"] }, }, }, },}Умови відповіді (згадки)
Навіть якщо канал дозволено (через groupPolicy + groups) і відправник має доступ, OpenClaw типово вимагає згадки в групових контекстах. Бот вважається згаданим, якщо повідомлення містить нік підключеного бота або відповідає налаштованим вами шаблонам згадки.
Тому в журналах можуть з’являтися записи на кшталт drop channel … (missing-mention), якщо повідомлення не містить шаблону згадки, що відповідає боту.
Щоб бот відповідав у каналі IRC без потреби в згадці, вимкніть вимогу згадки для цього каналу:
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { requireMention: false, allowFrom: ["*"], }, }, }, },}Або, щоб дозволити всі канали IRC (без списку дозволених для окремих каналів) і водночас відповідати без згадок:
{ channels: { irc: { groupPolicy: "open", groups: { "*": { requireMention: false, allowFrom: ["*"] }, }, }, },}Примітка щодо безпеки (рекомендовано для загальнодоступних каналів)
Якщо в загальнодоступному каналі дозволити allowFrom: ["*"], будь-хто зможе надсилати боту запити.
Щоб зменшити ризик, обмежте інструменти для цього каналу.
Однакові інструменти для всіх учасників каналу
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], tools: { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, }, }, }, },}Різні інструменти для різних відправників (власник має більше повноважень)
Використовуйте toolsBySender, щоб застосувати суворішу політику до "*" і м’якшу — до свого ніка:
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], toolsBySender: { "*": { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, "id:alice": { deny: ["gateway", "nodes", "cron"], }, }, }, }, }, },}Примітки:
- Ключі
toolsBySenderмають використовувати явні префікси (channel:,id:,e164:,username:,name:). Для IRC використовуйтеid:зі значенням ідентифікатора відправника:id:aliceабоid:alice!~alice@203.0.113.7для точнішого зіставлення. - Застарілі ключі без префіксів усе ще приймаються, зіставляються лише як
id:і спричиняють попередження про припинення підтримки. - Застосовується перша політика відправника, що збігається;
"*"є універсальним резервним варіантом.
Докладніше про різницю між груповим доступом і вимогою згадки, а також про їхню взаємодію див. у розділі /channels/groups.
NickServ
Щоб ідентифікуватися в NickServ після підключення:
{ channels: { irc: { nickserv: { enabled: true, service: "NickServ", password: "your-nickserv-password", }, }, },}Ідентифікація NickServ типово виконується щоразу, коли задано пароль (enabled потрібно встановити в false лише для відмови від неї). Типове значення service — NickServ; passwordFile є альтернативою вбудованому значенню password.
Необов’язкова одноразова реєстрація під час підключення (register: true потребує registerEmail):
{ channels: { irc: { nickserv: { register: true, registerEmail: "bot@example.com", }, }, },}Після реєстрації ніка вимкніть register, щоб уникнути повторних спроб REGISTER.
Змінні середовища
Типовий обліковий запис підтримує:
IRC_HOSTIRC_PORTIRC_TLSIRC_NICKIRC_USERNAMEIRC_REALNAMEIRC_PASSWORDIRC_CHANNELS(значення, розділені комами)IRC_NICKSERV_PASSWORDIRC_NICKSERV_REGISTER_EMAIL
IRC_HOST не можна задавати у файлі .env робочого простору; див. Файли .env робочого простору.
Усунення несправностей
- Якщо бот підключається, але ніколи не відповідає в каналах, перевірте
channels.irc.groupsі чи не відхиляються повідомлення через вимогу згадки (missing-mention). Якщо бот має відповідати без згадок, установіть для каналуrequireMention:false. - Якщо вхід не вдається, перевірте доступність ніка й пароль сервера.
- Якщо TLS не працює у власній мережі, перевірте хост, порт і налаштування сертифіката.
Пов’язані матеріали
- Огляд каналів — усі підтримувані канали
- Сполучення — автентифікація приватних повідомлень і процес сполучення
- Групи — поведінка групових чатів і вимога згадки
- Маршрутизація каналів — маршрутизація сеансів для повідомлень
- Безпека — модель доступу та посилення захисту