Developer and self-hosted
IRC
जब आप OpenClaw को क्लासिक चैनलों (#room) और डायरेक्ट मैसेज में उपयोग करना चाहते हों, तब IRC का उपयोग करें।
आधिकारिक IRC Plugin इंस्टॉल करें, फिर इसे 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 शामिल हैं। बॉट या स्वॉर्म के बैकचैनल ट्रैफ़िक के लिए आसानी से अनुमान लगाए जा सकने वाले सार्वजनिक चैनलों से बचें।
इनबाउंड स्थायित्व
OpenClaw प्रत्येक स्वीकृत IRC PRIVMSG को सामान्य नीति जाँच और एजेंट डिस्पैच से पहले अपनी टिकाऊ इनग्रेस कतार में लिखता है। लंबित या पुनः प्रयास योग्य मैसेज Gateway पुनः शुरू होने के बाद भी बने रहते हैं और प्रत्येक चैनल या डायरेक्ट-मैसेज पीयर के अनुसार क्रमबद्ध रहते हैं।
IRC पुनः चलाने योग्य डिलीवरी ID प्रदान नहीं करता और डिस्कनेक्ट किए गए क्लाइंट से छूटे मैसेज दोबारा नहीं भेजता। इसलिए OpenClaw एक स्थानीय ID निर्दिष्ट करता है, जो केवल वर्तमान TCP कनेक्शन में स्थिर रहती है। कतार स्थानीय स्वीकृति-से-डिस्पैच अवधि की सुरक्षा करती है; यह ऐसे मैसेज को पुनर्प्राप्त नहीं कर सकती जो कभी OpenClaw तक पहुँचा ही नहीं, या विभिन्न कनेक्शनों के बीच सर्वर द्वारा दोबारा भेजे गए मैसेज की डुप्लिकेट प्रति नहीं हटा सकती।
कनेक्शन सेटिंग्स
| कुंजी | डिफ़ॉल्ट | टिप्पणियाँ |
|---|---|---|
host |
कोई नहीं (आवश्यक) | IRC सर्वर का होस्टनेम |
port |
TLS के साथ 6697, प्लेन के लिए 6667 |
1-65535 |
tls |
true |
केवल जानबूझकर प्लेनटेक्स्ट उपयोग करने के लिए false सेट करें |
nick |
कोई नहीं (आवश्यक) | बॉट निक |
username |
निक, अन्यथा openclaw |
IRC उपयोगकर्ता नाम |
realname |
OpenClaw |
वास्तविक नाम/GECOS फ़ील्ड |
password / passwordFile |
कोई नहीं | सर्वर पासवर्ड; फ़ाइल एक नियमित फ़ाइल होनी चाहिए |
channels |
कोई नहीं | शामिल होने वाले चैनल (["#openclaw"]) |
accounts / defaultAccount |
कोई नहीं | बहु-अकाउंट सेटअप; एनवायरनमेंट वेरिएबल केवल डिफ़ॉल्ट अकाउंट भरते हैं |
सुरक्षा डिफ़ॉल्ट
- IRC, OpenClaw ऑपरेटर द्वारा प्रबंधित फ़ॉरवर्ड प्रॉक्सी रूटिंग के बाहर रॉ TCP/TLS सॉकेट का उपयोग करता है। ऐसे डिप्लॉयमेंट में, जिनमें सभी आउटगोइंग ट्रैफ़िक को उस फ़ॉरवर्ड प्रॉक्सी से होकर जाना आवश्यक है,
channels.irc.enabled=falseसेट करें, जब तक कि सीधे IRC आउटगोइंग ट्रैफ़िक को स्पष्ट रूप से स्वीकृति न दी गई हो। channels.irc.dmPolicyका डिफ़ॉल्ट"pairing"है: अज्ञात DM प्रेषकों को एक पेयरिंग कोड मिलता है, जिसे आप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): उस चैनल में किसे बॉट ट्रिगर करने की अनुमति है।
कॉन्फ़िगरेशन कुंजियाँ:
- DM अनुमति-सूची (DM प्रेषक एक्सेस):
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 DM के लिए है, चैनलों के लिए नहीं
यदि आपको इस तरह के लॉग दिखाई दें:
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 विफल होता है, तो होस्ट/पोर्ट और प्रमाणपत्र सेटअप सत्यापित करें।
संबंधित
- चैनल अवलोकन — सभी समर्थित चैनल
- पेयरिंग — DM प्रमाणीकरण और पेयरिंग प्रवाह
- समूह — समूह चैट व्यवहार और उल्लेख की आवश्यकता
- चैनल रूटिंग — मैसेज के लिए सेशन रूटिंग
- सुरक्षा — एक्सेस मॉडल और सुरक्षा सुदृढ़ीकरण