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