Developer and self-hosted
IRC
Klasik kanallarda (#oda) ve doğrudan mesajlarda OpenClaw kullanmak istediğinizde IRC'yi kullanın.
Resmî IRC Plugin'ini yükleyin, ardından channels.irc altında yapılandırın.
Hızlı başlangıç
- Plugin'i yükleyin:
openclaw plugins install @openclaw/irc~/.openclaw/openclaw.jsoniçinde en az sunucuyu, takma adı ve katılınacak kanalları ayarlayın:
{ channels: { irc: { enabled: true, host: "irc.example.com", port: 6697, tls: true, nick: "openclaw-bot", channels: ["#openclaw"], }, },}- Gateway'i başlatın/yeniden başlatın:
openclaw gateway runBot koordinasyonu için özel bir IRC sunucusunu tercih edin. Bilerek herkese açık bir IRC ağı kullanıyorsanız yaygın seçenekler arasında Libera.Chat, OFTC ve Snoonet bulunur. Bot veya sürü arka kanal trafiği için tahmin edilebilir herkese açık kanallardan kaçının.
Bağlantı ayarları
| Anahtar | Varsayılan | Notlar |
|---|---|---|
host |
yok (zorunlu) | IRC sunucusunun ana bilgisayar adı |
port |
TLS ile 6697, düz 6667 |
1-65535 |
tls |
true |
Yalnızca düz metni bilerek kullanıyorsanız false olarak ayarlayın |
nick |
yok (zorunlu) | Bot takma adı |
username |
takma ad, yoksa openclaw |
IRC kullanıcı adı |
realname |
OpenClaw |
Gerçek ad/GECOS alanı |
password / passwordFile |
yok | Sunucu parolası; dosya normal bir dosya olmalıdır |
channels |
yok | Katılınacak kanallar (["#openclaw"]) |
accounts / defaultAccount |
yok | Çoklu hesap kurulumu; ortam değişkenleri yalnızca varsayılan hesabı doldurur |
Güvenlik varsayılanları
- IRC, OpenClaw operatörü tarafından yönetilen ileri proxy yönlendirmesinin dışında ham TCP/TLS soketleri kullanır. Tüm çıkış trafiğinin bu ileri proxy üzerinden geçmesini gerektiren dağıtımlarda, doğrudan IRC çıkışına açıkça izin verilmediği sürece
channels.irc.enabled=falseayarlayın. channels.irc.dmPolicyvarsayılan olarak"pairing"değerini kullanır: bilinmeyen doğrudan mesaj gönderenler,openclaw pairing approve irc <code>komutuyla onaylayacağınız bir eşleştirme kodu alır.channels.irc.groupPolicyvarsayılan olarak"allowlist"değerini kullanır.groupPolicy="allowlist"ile izin verilen kanalları tanımlamak içinchannels.irc.groupsayarlayın.- Düz metin aktarımını bilerek kabul etmediğiniz sürece TLS (
channels.irc.tls=true) kullanın.
Erişim denetimi
IRC kanalları için iki ayrı "kapı" vardır:
- Kanal erişimi (
groupPolicy+groups): botun bir kanaldan gelen mesajları kabul edip etmeyeceği. - Gönderen erişimi (
groupAllowFrom/ kanal başınagroups["#channel"].allowFrom): o kanal içinde botu kimlerin tetiklemesine izin verildiği.
Yapılandırma anahtarları:
- Doğrudan mesaj izin listesi (doğrudan mesaj gönderen erişimi):
channels.irc.allowFrom - Grup gönderen izin listesi (kanal gönderen erişimi):
channels.irc.groupAllowFrom - Kanal başına denetimler (kanal + gönderen + bahsetme kuralları):
requireMention,allowFrom,enabled,tools,toolsBySender,skillsvesystemPromptilechannels.irc.groups["#channel"] channels.irc.groupPolicy="open"yapılandırılmamış kanallara izin verir (yine de varsayılan olarak bahsetme gerektirir)
İzin listesi girdileri kararlı gönderen kimliklerini (nick!user@host) kullanmalıdır.
Yalnızca takma adla eşleştirme değişkendir ve ancak channels.irc.dangerouslyAllowNameMatching: true olduğunda etkinleştirilir.
Yaygın sorun: allowFrom kanallar için değil, doğrudan mesajlar içindir
Şuna benzer günlükler görüyorsanız:
irc: drop group sender alice!ident@host (policy=allowlist)
...bu, gönderenin grup/kanal mesajları için izinli olmadığı anlamına gelir. Şunlardan birini yaparak düzeltin:
channels.irc.groupAllowFromayarlayın (tüm kanallar için genel) veya- kanal başına gönderen izin listeleri ayarlayın:
channels.irc.groups["#channel"].allowFrom
Örnek (#openclaw içindeki herkesin botla konuşmasına izin verin):
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { allowFrom: ["*"] }, }, }, },}Yanıt tetikleme (bahsetmeler)
Bir kanala (groupPolicy + groups aracılığıyla) ve gönderene izin verilmiş olsa bile OpenClaw, grup bağlamlarında varsayılan olarak bahsetme koşulu uygular. Mesaj, bağlı botun takma adını içerdiğinde veya yapılandırılmış bahsetme kalıplarınızla eşleştiğinde bottan bahsedilmiş sayılır.
Bu, mesaj botla eşleşen bir bahsetme kalıbı içermedikçe drop channel … (missing-mention) gibi günlükler görebileceğiniz anlamına gelir.
Botun bir IRC kanalında bahsetme gerektirmeden yanıt vermesini sağlamak için o kanalda bahsetme koşulunu devre dışı bırakın:
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { requireMention: false, allowFrom: ["*"], }, }, }, },}Alternatif olarak, kanal başına izin listesi olmadan tüm IRC kanallarına izin vermek ve yine de bahsetme olmadan yanıtlamak için:
{ channels: { irc: { groupPolicy: "open", groups: { "*": { requireMention: false, allowFrom: ["*"] }, }, }, },}Güvenlik notu (herkese açık kanallar için önerilir)
Herkese açık bir kanalda allowFrom: ["*"] kullanımına izin verirseniz herkes bota istem gönderebilir.
Riski azaltmak için o kanala yönelik araçları kısıtlayın.
Kanaldaki herkes için aynı araçlar
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], tools: { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, }, }, }, },}Gönderen başına farklı araçlar (sahip daha fazla yetkiye sahip olur)
"*" için daha katı, kendi takma adınız için daha esnek bir politika uygulamak üzere toolsBySender kullanın:
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], toolsBySender: { "*": { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, "id:alice": { deny: ["gateway", "nodes", "cron"], }, }, }, }, }, },}Notlar:
toolsBySenderanahtarları açık önekler (channel:,id:,e164:,username:,name:) kullanmalıdır. IRC için gönderen kimliği değeriyleid:kullanın: daha güçlü eşleştirme içinid:aliceveyaid:alice!~alice@203.0.113.7.- Öneksiz eski anahtarlar hâlâ kabul edilir, yalnızca
id:olarak eşleştirilir ve kullanımdan kaldırma uyarısı oluşturur. - Eşleşen ilk gönderen politikası geçerli olur;
"*"joker geri dönüşüdür.
Grup erişimi ile bahsetme koşulu (ve bunların nasıl etkileştiği) hakkında daha fazla bilgi için bkz.: /channels/groups.
NickServ
Bağlandıktan sonra NickServ ile kimliğinizi doğrulamak için:
{ channels: { irc: { nickserv: { enabled: true, service: "NickServ", password: "your-nickserv-password", }, }, },}Bir parola ayarlandığında NickServ kimlik doğrulaması varsayılan olarak her zaman çalışır (devre dışı bırakmak için yalnızca enabled değerinin false olması gerekir). service varsayılan olarak NickServ değerini kullanır; passwordFile, satır içi password için bir alternatiftir.
Bağlantıda isteğe bağlı tek seferlik kayıt (register: true, registerEmail gerektirir):
{ channels: { irc: { nickserv: { register: true, registerEmail: "bot@example.com", }, }, },}Yinelenen REGISTER girişimlerini önlemek için takma ad kaydedildikten sonra register seçeneğini devre dışı bırakın.
Ortam değişkenleri
Varsayılan hesap şunları destekler:
IRC_HOSTIRC_PORTIRC_TLSIRC_NICKIRC_USERNAMEIRC_REALNAMEIRC_PASSWORDIRC_CHANNELS(virgülle ayrılmış)IRC_NICKSERV_PASSWORDIRC_NICKSERV_REGISTER_EMAIL
IRC_HOST, çalışma alanı .env dosyasından ayarlanamaz; bkz. Çalışma alanı .env dosyaları.
Sorun giderme
- Bot bağlanıyor ancak kanallarda hiç yanıt vermiyorsa
channels.irc.groupsayarını ve bahsetme koşulunun mesajları düşürüp düşürmediğini (missing-mention) doğrulayın. Botun bahsetme olmadan yanıt vermesini istiyorsanız kanal içinrequireMention:falseayarlayın. - Oturum açma başarısız olursa takma adın kullanılabilirliğini ve sunucu parolasını doğrulayın.
- Özel bir ağda TLS başarısız olursa ana bilgisayar/port ve sertifika kurulumunu doğrulayın.
İlgili
- Kanallara Genel Bakış — desteklenen tüm kanallar
- Eşleştirme — doğrudan mesaj kimlik doğrulaması ve eşleştirme akışı
- Gruplar — grup sohbeti davranışı ve bahsetme koşulu
- Kanal Yönlendirme — mesajlar için oturum yönlendirmesi
- Güvenlik — erişim modeli ve sıkılaştırma