Developer and self-hosted

IRC

जब आप OpenClaw को क्लासिक चैनलों (#room) और डायरेक्ट मैसेज में उपयोग करना चाहते हों, तब IRC का उपयोग करें। आधिकारिक IRC Plugin इंस्टॉल करें, फिर इसे channels.irc के अंतर्गत कॉन्फ़िगर करें।

त्वरित शुरुआत

  1. Plugin इंस्टॉल करें:
bash
openclaw plugins install @openclaw/irc
  1. ~/.openclaw/openclaw.json में कम-से-कम होस्ट, निक और शामिल होने वाले चैनल सेट करें:
json5
{  channels: {    irc: {      enabled: true,      host: "irc.example.com",      port: 6697,      tls: true,      nick: "openclaw-bot",      channels: ["#openclaw"],    },  },}
  1. Gateway शुरू/पुनः शुरू करें:
bash
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 चैनलों के लिए दो अलग-अलग "गेट" हैं:

  1. चैनल एक्सेस (groupPolicy + groups): बॉट किसी चैनल से मैसेज स्वीकार करता है या नहीं।
  2. प्रेषक एक्सेस (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 में किसी को भी बॉट से बात करने की अनुमति दें):

json5
{  channels: {    irc: {      groupPolicy: "allowlist",      groups: {        "#openclaw": { allowFrom: ["*"] },      },    },  },}

उत्तर ट्रिगर करना (उल्लेख)

भले ही कोई चैनल (groupPolicy + groups के माध्यम से) अनुमत हो और प्रेषक को भी अनुमति हो, OpenClaw समूह संदर्भों में डिफ़ॉल्ट रूप से उल्लेख आवश्यक रखता है। जब मैसेज में कनेक्ट किए गए बॉट का निक हो या वह आपके कॉन्फ़िगर किए गए उल्लेख पैटर्न से मेल खाए, तो बॉट इसे अपना उल्लेख मानता है।

इसका अर्थ है कि जब तक मैसेज में बॉट से मेल खाने वाला उल्लेख पैटर्न शामिल न हो, आपको drop channel … (missing-mention) जैसे लॉग दिखाई दे सकते हैं।

किसी IRC चैनल में बॉट से उल्लेख की आवश्यकता के बिना उत्तर दिलाने के लिए, उस चैनल हेतु उल्लेख की आवश्यकता अक्षम करें:

json5
{  channels: {    irc: {      groupPolicy: "allowlist",      groups: {        "#openclaw": {          requireMention: false,          allowFrom: ["*"],        },      },    },  },}

या सभी IRC चैनलों को अनुमति देने (प्रति-चैनल अनुमति-सूची के बिना) और फिर भी उल्लेख के बिना उत्तर पाने के लिए:

json5
{  channels: {    irc: {      groupPolicy: "open",      groups: {        "*": { requireMention: false, allowFrom: ["*"] },      },    },  },}

सुरक्षा टिप्पणी (सार्वजनिक चैनलों के लिए अनुशंसित)

यदि आप किसी सार्वजनिक चैनल में allowFrom: ["*"] को अनुमति देते हैं, तो कोई भी बॉट को प्रॉम्प्ट कर सकता है। जोखिम कम करने के लिए, उस चैनल के टूल प्रतिबंधित करें।

चैनल में सभी के लिए समान टूल

json5
{  channels: {    irc: {      groups: {        "#openclaw": {          allowFrom: ["*"],          tools: {            deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],          },        },      },    },  },}

प्रत्येक प्रेषक के लिए अलग टूल (स्वामी को अधिक अधिकार मिलते हैं)

"*" पर अधिक सख्त नीति और अपने निक पर अपेक्षाकृत ढीली नीति लागू करने के लिए toolsBySender का उपयोग करें:

json5
{  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 से पहचान सत्यापित करने के लिए:

json5
{  channels: {    irc: {      nickserv: {        enabled: true,        service: "NickServ",        password: "your-nickserv-password",      },    },  },}

जब भी पासवर्ड सेट हो, NickServ पहचान डिफ़ॉल्ट रूप से चलती है (ऑप्ट आउट करने के लिए केवल enabled को false करना आवश्यक है)। service का डिफ़ॉल्ट NickServ है; passwordFile, इनलाइन password का विकल्प है।

कनेक्ट होने पर वैकल्पिक एकबारगी पंजीकरण (register: true के लिए registerEmail आवश्यक है):

json5
{  channels: {    irc: {      nickserv: {        register: true,        registerEmail: "bot@example.com",      },    },  },}

बार-बार REGISTER प्रयासों से बचने के लिए निक पंजीकृत होने के बाद register अक्षम करें।

एनवायरनमेंट वेरिएबल

डिफ़ॉल्ट अकाउंट इनका समर्थन करता है:

  • IRC_HOST
  • IRC_PORT
  • IRC_TLS
  • IRC_NICK
  • IRC_USERNAME
  • IRC_REALNAME
  • IRC_PASSWORD
  • IRC_CHANNELS (अल्पविराम से अलग)
  • IRC_NICKSERV_PASSWORD
  • IRC_NICKSERV_REGISTER_EMAIL

IRC_HOST को किसी वर्कस्पेस .env से सेट नहीं किया जा सकता; वर्कस्पेस .env फ़ाइलें देखें।

समस्या निवारण

  • यदि बॉट कनेक्ट होता है लेकिन चैनलों में कभी उत्तर नहीं देता, तो channels.irc.groups और यह सत्यापित करें कि उल्लेख की आवश्यकता मैसेज को हटा तो नहीं रही (missing-mention)। यदि आप चाहते हैं कि यह पिंग के बिना उत्तर दे, तो चैनल के लिए requireMention:false सेट करें।
  • यदि लॉगिन विफल होता है, तो निक की उपलब्धता और सर्वर पासवर्ड सत्यापित करें।
  • यदि किसी कस्टम नेटवर्क पर TLS विफल होता है, तो होस्ट/पोर्ट और प्रमाणपत्र सेटअप सत्यापित करें।

संबंधित

Was this useful?
On this page

On this page