Developer and self-hosted
IRC
Gunakan IRC ketika Anda menginginkan OpenClaw di kanal klasik (#room) dan pesan langsung.
Instal plugin IRC resmi, lalu konfigurasikan di bawah channels.irc.
Mulai cepat
- Instal plugin:
openclaw plugins install @openclaw/irc- Tetapkan setidaknya host, nick, dan kanal yang akan diikuti di
~/.openclaw/openclaw.json:
{ channels: { irc: { enabled: true, host: "irc.example.com", port: 6697, tls: true, nick: "openclaw-bot", channels: ["#openclaw"], }, },}- Mulai/mulai ulang Gateway:
openclaw gateway runUtamakan server IRC privat untuk koordinasi bot. Jika Anda sengaja menggunakan jaringan IRC publik, pilihan umum mencakup Libera.Chat, OFTC, dan Snoonet. Hindari kanal publik yang mudah ditebak untuk lalu lintas kanal belakang bot atau swarm.
Ketahanan pesan masuk
OpenClaw menulis setiap PRIVMSG IRC yang diterima ke antrean masuk durabelnya sebelum pemeriksaan kebijakan normal dan pengiriman agen. Pesan yang tertunda atau dapat dicoba ulang tetap tersedia setelah Gateway dimulai ulang dan tetap diserialkan per kanal atau rekan pesan langsung.
IRC tidak menyediakan ID pengiriman yang dapat diputar ulang atau mengirim ulang pesan yang terlewat oleh klien yang terputus. Oleh karena itu, OpenClaw menetapkan ID lokal yang stabil hanya dalam koneksi TCP saat ini. Antrean melindungi rentang waktu lokal dari penerimaan hingga pengiriman; antrean tidak dapat memulihkan pesan yang tidak pernah mencapai OpenClaw atau mendeduplikasi pengiriman ulang server antar-koneksi.
Pengaturan koneksi
| Kunci | Bawaan | Catatan |
|---|---|---|
host |
tidak ada (wajib) | Nama host server IRC |
port |
6697 dengan TLS, 6667 tanpa TLS |
1-65535 |
tls |
true |
Tetapkan false hanya jika sengaja menggunakan teks biasa |
nick |
tidak ada (wajib) | Nick bot |
username |
nick, jika tidak openclaw |
Nama pengguna IRC |
realname |
OpenClaw |
Kolom realname/GECOS |
password / passwordFile |
tidak ada | Kata sandi server; berkas harus berupa berkas reguler |
channels |
tidak ada | Kanal yang akan diikuti (["#openclaw"]) |
accounts / defaultAccount |
tidak ada | Penyiapan multiakun; variabel lingkungan hanya mengisi akun bawaan |
Bawaan keamanan
- IRC menggunakan soket TCP/TLS mentah di luar perutean proksi penerusan yang dikelola operator OpenClaw. Dalam penerapan yang mengharuskan semua lalu lintas keluar melalui proksi penerusan tersebut, tetapkan
channels.irc.enabled=falsekecuali lalu lintas keluar IRC langsung disetujui secara eksplisit. channels.irc.dmPolicysecara bawaan adalah"pairing": pengirim DM yang tidak dikenal memperoleh kode pemasangan yang Anda setujui denganopenclaw pairing approve irc <code>.channels.irc.groupPolicysecara bawaan adalah"allowlist".- Dengan
groupPolicy="allowlist", tetapkanchannels.irc.groupsuntuk menentukan kanal yang diizinkan. - Gunakan TLS (
channels.irc.tls=true) kecuali Anda sengaja menerima transportasi teks biasa.
Kontrol akses
Ada dua "gerbang" terpisah untuk kanal IRC:
- Akses kanal (
groupPolicy+groups): apakah bot menerima pesan dari suatu kanal atau tidak. - Akses pengirim (
groupAllowFrom/groups["#channel"].allowFromper kanal): siapa yang diizinkan memicu bot di dalam kanal tersebut.
Kunci konfigurasi:
- Daftar izin DM (akses pengirim DM):
channels.irc.allowFrom - Daftar izin pengirim grup (akses pengirim kanal):
channels.irc.groupAllowFrom - Kontrol per kanal (aturan kanal + pengirim + penyebutan):
channels.irc.groups["#channel"]denganrequireMention,allowFrom,enabled,tools,toolsBySender,skills, dansystemPrompt channels.irc.groupPolicy="open"mengizinkan kanal yang belum dikonfigurasi (secara bawaan tetap dibatasi oleh penyebutan)
Entri daftar izin sebaiknya menggunakan identitas pengirim yang stabil (nick!user@host).
Pencocokan nick tanpa awalan dapat berubah dan hanya diaktifkan ketika channels.irc.dangerouslyAllowNameMatching: true.
Kendala umum: allowFrom untuk DM, bukan kanal
Jika Anda melihat log seperti:
irc: drop group sender alice!ident@host (policy=allowlist)
...artinya pengirim tidak diizinkan untuk pesan grup/kanal. Perbaiki dengan salah satu cara berikut:
- menetapkan
channels.irc.groupAllowFrom(global untuk semua kanal), atau - menetapkan daftar izin pengirim per kanal:
channels.irc.groups["#channel"].allowFrom
Contoh (izinkan siapa pun di #openclaw berbicara dengan bot):
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { allowFrom: ["*"] }, }, }, },}Pemicu balasan (penyebutan)
Meskipun suatu kanal diizinkan (melalui groupPolicy + groups) dan pengirim diizinkan, OpenClaw secara bawaan menerapkan pembatasan berdasarkan penyebutan dalam konteks grup. Bot dianggap disebut ketika pesan memuat nick bot yang terhubung atau cocok dengan pola penyebutan yang Anda konfigurasi.
Artinya, Anda mungkin melihat log seperti drop channel … (missing-mention) kecuali pesan menyertakan pola penyebutan yang cocok dengan bot.
Agar bot membalas di kanal IRC tanpa memerlukan penyebutan, nonaktifkan pembatasan berdasarkan penyebutan untuk kanal tersebut:
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { requireMention: false, allowFrom: ["*"], }, }, }, },}Atau, untuk mengizinkan semua kanal IRC (tanpa daftar izin per kanal) dan tetap membalas tanpa penyebutan:
{ channels: { irc: { groupPolicy: "open", groups: { "*": { requireMention: false, allowFrom: ["*"] }, }, }, },}Catatan keamanan (disarankan untuk kanal publik)
Jika Anda mengizinkan allowFrom: ["*"] di kanal publik, siapa pun dapat memberi prompt kepada bot.
Untuk mengurangi risiko, batasi alat untuk kanal tersebut.
Alat yang sama untuk semua orang di kanal
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], tools: { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, }, }, }, },}Alat berbeda per pengirim (pemilik mendapat kewenangan lebih besar)
Gunakan toolsBySender untuk menerapkan kebijakan yang lebih ketat pada "*" dan kebijakan yang lebih longgar pada nick Anda:
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], toolsBySender: { "*": { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, "id:alice": { deny: ["gateway", "nodes", "cron"], }, }, }, }, }, },}Catatan:
- Kunci
toolsBySendersebaiknya menggunakan awalan eksplisit (channel:,id:,e164:,username:,name:). Untuk IRC, gunakanid:dengan nilai identitas pengirim:id:aliceatauid:alice!~alice@203.0.113.7untuk pencocokan yang lebih kuat. - Kunci lama tanpa awalan masih diterima, hanya dicocokkan sebagai
id:, dan memunculkan peringatan penghentian dukungan. - Kebijakan pengirim pertama yang cocok akan digunakan;
"*"adalah fallback karakter pengganti.
Untuk informasi selengkapnya tentang akses grup dibandingkan pembatasan berdasarkan penyebutan (dan cara keduanya berinteraksi), lihat: /channels/groups.
NickServ
Untuk mengidentifikasi diri dengan NickServ setelah terhubung:
{ channels: { irc: { nickserv: { enabled: true, service: "NickServ", password: "your-nickserv-password", }, }, },}Identifikasi NickServ dijalankan secara bawaan setiap kali kata sandi ditetapkan (enabled hanya perlu bernilai false untuk menonaktifkannya). service secara bawaan adalah NickServ; passwordFile merupakan alternatif untuk password sebaris.
Pendaftaran satu kali opsional saat terhubung (register: true memerlukan registerEmail):
{ channels: { irc: { nickserv: { register: true, registerEmail: "bot@example.com", }, }, },}Nonaktifkan register setelah nick terdaftar untuk menghindari percobaan REGISTER berulang.
Variabel lingkungan
Akun bawaan mendukung:
IRC_HOSTIRC_PORTIRC_TLSIRC_NICKIRC_USERNAMEIRC_REALNAMEIRC_PASSWORDIRC_CHANNELS(dipisahkan koma)IRC_NICKSERV_PASSWORDIRC_NICKSERV_REGISTER_EMAIL
IRC_HOST tidak dapat ditetapkan dari .env ruang kerja; lihat Berkas .env ruang kerja.
Pemecahan masalah
- Jika bot terhubung tetapi tidak pernah membalas di kanal, periksa
channels.irc.groupsdan apakah pembatasan berdasarkan penyebutan membuang pesan (missing-mention). Jika Anda ingin bot membalas tanpa ping, tetapkanrequireMention:falseuntuk kanal tersebut. - Jika proses masuk gagal, periksa ketersediaan nick dan kata sandi server.
- Jika TLS gagal pada jaringan khusus, periksa host/port dan penyiapan sertifikat.
Terkait
- Ikhtisar Kanal — semua kanal yang didukung
- Pemasangan — autentikasi DM dan alur pemasangan
- Grup — perilaku obrolan grup dan pembatasan berdasarkan penyebutan
- Perutean Kanal — perutean sesi untuk pesan
- Keamanan — model akses dan penguatan