Developer and self-hosted
IRC
Klasik kanallarda (#room) ve doğrudan mesajlarda OpenClaw kullanmak istediğinizde IRC 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 ana bilgisayarı, 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 genel 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 genel kanallardan kaçının.
Gelen iletilerin dayanıklılığı
OpenClaw, kabul edilen her IRC PRIVMSG öğesini normal politika kontrollerinden ve ajan yönlendirmesinden önce kalıcı giriş kuyruğuna yazar. Bekleyen veya yeniden denenebilir mesajlar Gateway yeniden başlatıldığında korunur ve kanal ya da doğrudan mesaj eşine göre sıralı kalır.
IRC, yeniden oynatılabilir bir teslimat kimliği sağlamaz veya bağlantısı kesilmiş bir istemcinin kaçırdığı mesajları yeniden göndermez. Bu nedenle OpenClaw, yalnızca mevcut TCP bağlantısı içinde kararlı olan yerel bir kimlik atar. Kuyruk, yerel kabulden yönlendirmeye kadar olan aralığı korur; OpenClaw'a hiç ulaşmamış bir mesajı kurtaramaz veya sunucunun bağlantılar arasında yeniden gönderdiği bir mesajı tekilleştiremez.
Bağlantı ayarları
| Anahtar | Varsayılan | Notlar |
|---|---|---|
host |
yok (gerekli) | IRC sunucusunun ana bilgisayar adı |
port |
TLS ile 6697, düz metin için 6667 |
1-65535 |
tls |
true |
Yalnızca bilerek düz metin kullanmak için false olarak ayarlayın |
nick |
yok (gerekli) | 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 | Çok hesaplı kurulum; 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 yuvaları 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 onay verilmediği sürece
channels.irc.enabled=falseayarını kullanın. channels.irc.dmPolicyvarsayılan olarak"pairing"değerini kullanır: bilinmeyen doğrudan mesaj gönderenler,openclaw pairing approve irc <code>ile onaylayacağınız bir eşleştirme kodu alır.channels.irc.groupPolicyvarsayılan olarak"allowlist"değerini kullanır.groupPolicy="allowlist"kullanırken izin verilen kanalları tanımlamak içinchannels.irc.groupsayarını belirleyin.- Bilerek düz metin aktarımını kabul etmediğiniz sürece TLS (
channels.irc.tls=true) kullanın.
Erişim denetimi
IRC kanalları için iki ayrı "geçit" 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 (varsayılan olarak yine de bahsetme geçidi uygulanır)
İzin listesi girdileri kararlı gönderen kimlikleri (nick!user@host) kullanmalıdır.
Yalın takma ad eşleştirmesi değişkendir ve yalnızca channels.irc.dangerouslyAllowNameMatching: true olduğunda etkinleştirilir.
Yaygın sorun: allowFrom doğrudan mesajlar içindir, kanallar için değil
Şuna benzer günlükler görürseniz:
irc: drop group sender alice!ident@host (policy=allowlist)
...bu, gönderenin grup/kanal mesajları için izinli olmadığı anlamına gelir. Şunlardan biriyle düzeltin:
channels.irc.groupAllowFromayarını belirleyerek (tüm kanallar için genel) veya- kanal başına gönderen izin listelerini belirleyerek:
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 geçidi 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 botun adından bahsedilmiş sayılır.
Bu, mesaj botla eşleşen bir bahsetme kalıbı içermedikçe drop channel … (missing-mention) benzeri günlükler görebileceğiniz anlamına gelir.
Botun bir IRC kanalında bahsetme gerektirmeden yanıt vermesini sağlamak için o kanalın bahsetme geçidini devre dışı bırakın:
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { requireMention: false, allowFrom: ["*"], }, }, }, },}Veya tüm IRC kanallarına izin vermek (kanal başına izin listesi olmadan) ve yine de bahsetme olmadan yanıtlamak için:
{ channels: { irc: { groupPolicy: "open", groups: { "*": { requireMention: false, allowFrom: ["*"] }, }, }, },}Güvenlik notu (genel kanallar için önerilir)
Genel bir kanalda allowFrom: ["*"] ayarına izin verirseniz herkes bota istem gönderebilir.
Riski azaltmak için o kanalın araçlarını 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önderene göre farklı araçlar (sahip daha fazla yetki alır)
"*" için daha katı, kendi takma adınız için daha gevşek 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.- Eski öneksiz anahtarlar hâlâ kabul edilir, yalnızca
id:olarak eşleştirilir ve kullanımdan kaldırma uyarısı verir. - İlk eşleşen gönderen politikası geçerli olur;
"*"joker karakterli geri dönüş seçeneğidir.
Grup erişimi ile bahsetme geçidi (ve bunların etkileşimi) hakkında daha fazla bilgi için bkz. /channels/groups.
NickServ
Bağlantıdan sonra NickServ ile kimlik 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 ayarına 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", }, }, },}Tekrarlanan REGISTER denemelerini önlemek için takma ad kaydedildikten sonra register ayarını 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ındaki bir .env üzerinden 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 geçidinin mesajları düşürüp düşürmediğini (missing-mention) doğrulayın. Botun pingleme olmadan yanıt vermesini istiyorsanız kanal içinrequireMention:falseayarını belirleyin. - 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 geçidi
- Kanal Yönlendirme — mesajların oturum yönlendirmesi
- Güvenlik — erişim modeli ve sağlamlaştırma