Multi-agent
उपस्थिति
OpenClaw "उपस्थिति" इसका एक हल्का, सर्वोत्तम-प्रयास दृश्य है:
- स्वयं Gateway, और
- Gateway से जुड़े उपयोगकर्ता को दिखाई देने वाले क्लाइंट (Mac ऐप, WebChat, नोड आदि)
उपस्थिति का लाइव कनेक्शन मेटाडेटा Control UI के डिवाइस पृष्ठ (सेटिंग्स → डिवाइस के अंतर्गत) और macOS ऐप के इंस्टेंस टैब में दिखाई देता है।
यह पृष्ठ Gateway क्लाइंट सूची के बारे में है। सबसे हाल में उपयोग किए गए Mac का पता लगाने और नोड अलर्ट को वहाँ रूट करने के लिए, सक्रिय कंप्यूटर उपस्थिति देखें।
उपस्थिति फ़ील्ड (क्या दिखाई देता है)
उपस्थिति प्रविष्टियाँ इन जैसे फ़ील्ड वाली संरचित ऑब्जेक्ट होती हैं:
instanceId(वैकल्पिक, लेकिन इसकी दृढ़ता से अनुशंसा की जाती है): स्थायी क्लाइंट पहचान (आमतौर परconnect.client.instanceId)host: मानव-पठनीय होस्ट नामip: सर्वोत्तम-प्रयास IP पताversion: क्लाइंट संस्करण स्ट्रिंगdeviceFamily/modelIdentifier: हार्डवेयर संकेतmode:ui,webchat,cli,backend,node,probe,testlastInputSeconds: यदि ज्ञात हो, तो अंतिम उपयोगकर्ता इनपुट के बाद से बीते सेकंडreason: क्लाइंट द्वारा प्रदान की गई मुक्त-रूप स्ट्रिंग; स्वयं Gateway केवलself,connect, औरdisconnectउत्सर्जित करता हैdeviceId,roles,scopes: कनेक्ट हैंडशेक से प्राप्त डिवाइस पहचान और भूमिका/स्कोप संकेतts: अंतिम अपडेट का टाइमस्टैम्प (युगारंभ के बाद से मिलीसेकंड)
उत्पादक (उपस्थिति कहाँ से आती है)
उपस्थिति प्रविष्टियाँ कई स्रोतों द्वारा बनाई और मर्ज की जाती हैं।
1) Gateway की स्वयं की प्रविष्टि
Gateway स्टार्टअप पर हमेशा एक "स्वयं" प्रविष्टि बनाता है, ताकि किसी क्लाइंट के कनेक्ट होने से पहले भी UI में Gateway होस्ट दिखाई दे।
2) WebSocket कनेक्ट
प्रत्येक WS क्लाइंट एक connect अनुरोध से शुरू होता है। सफल हैंडशेक पर
Gateway उस कनेक्शन की उपस्थिति प्रविष्टि को अपसर्ट करता है।
अल्पकालिक नियंत्रण-प्लेन कनेक्शन क्यों दिखाई नहीं देते
CLI कमांड, बैकएंड RPC क्लाइंट और प्रोब अक्सर थोड़े समय के लिए कनेक्ट होते हैं। उस
बार-बार होने वाले बदलाव को पूरे उपस्थिति TTL तक बनाए रखने से बचने के लिए, cli, backend,
या probe मोड वाले क्लाइंट को उपस्थिति प्रविष्टियों में नहीं बदला जाता। परीक्षण-मोड क्लाइंट
ट्रैक किए जाते हैं, क्योंकि परीक्षण सुइट उन्हें वास्तविक क्लाइंट के प्रतिनिधि के रूप में उपयोग करते हैं।
3) system-event बीकन
क्लाइंट system-event विधि के माध्यम से अधिक विस्तृत आवधिक बीकन भेज सकते हैं। Mac
ऐप इसका उपयोग होस्ट नाम, IP, संस्करण और सक्रियता मेटाडेटा रिपोर्ट करने के लिए करता है। भौतिक
इनपुट गतिविधि इस सामान्य बीकन का हिस्सा नहीं है; सक्रिय कंप्यूटर उपस्थिति में वर्णित
विशिष्ट-उद्देश्य वाला मूल नोड इवेंट इसका स्वामी है। Mac इन बीकन को
system-presence-clear-last-input से टैग करता है; वर्तमान Gateway उस पश्चगामी-संगत
मार्कर का उपयोग किसी पुराने ऐप द्वारा बनाए रखी गई इनपुट नवीनता को हटाने के लिए करते हैं।
बीकन में 30-दिन का एक निश्चित मान भी होता है, ताकि टैग को अनदेखा करने वाले पुराने Gateway
सटीक नवीनता को बनाए रखने के बजाय उसे अधिलेखित कर दें। इस संगतता मान के लिए
कोई नई गतिविधि सैंपल नहीं की जाती।
4) नोड कनेक्शन (भूमिका: नोड)
जब कोई नोड role: node के साथ Gateway WebSocket पर कनेक्ट होता है, तो Gateway
उस नोड के लिए उपस्थिति प्रविष्टि को अपसर्ट करता है (अन्य WS क्लाइंट के समान प्रवाह)।
मर्ज + डीडुप्लिकेशन नियम (instanceId क्यों महत्त्वपूर्ण है)
उपस्थिति प्रविष्टियाँ एकल इन-मेमोरी मैप में संग्रहीत होती हैं, जिसकी कुंजी क्रमशः पहले उपलब्ध
युग्मित डिवाइस ID, connect.client.instanceId,
या अंतिम विकल्प के रूप में प्रति-कनेक्शन ID होती है; कुंजी में अक्षरों के केस का भेद नहीं किया जाता।
अल्पकालिक नियंत्रण-प्लेन क्लाइंट को ट्रैकिंग से पूरी तरह बाहर रखा जाता है (ऊपर देखें),
इसलिए उनके कनेक्शन ID कभी कुंजी नहीं बनते। प्रत्येक अन्य क्लाइंट के लिए,
कनेक्शन ID फ़ॉलबैक का अर्थ है कि स्थायी
instanceId के बिना पुनः कनेक्ट होने वाला क्लाइंट एक डुप्लिकेट पंक्ति के रूप में दिखाई देता है।
TTL और सीमित आकार
उपस्थिति जानबूझकर अल्पकालिक है:
- TTL: 5 मिनट से पुरानी प्रविष्टियाँ हटा दी जाती हैं
- अधिकतम प्रविष्टियाँ: 200 (सबसे पुरानी पहले हटाई जाती हैं)
इससे सूची ताज़ा रहती है और मेमोरी की असीमित वृद्धि से बचाव होता है।
रिमोट/टनल सावधानी (लूपबैक IP)
जब कोई क्लाइंट SSH टनल / स्थानीय पोर्ट फ़ॉरवर्ड के माध्यम से कनेक्ट होता है, तो Gateway
रिमोट पते को 127.0.0.1 के रूप में देख सकता है। उस टनल
पते को क्लाइंट के IP के रूप में रिकॉर्ड करने से बचने के लिए, कनेक्ट हैंडलिंग पहचाने गए स्थानीय
(लूपबैक) क्लाइंट के लिए प्रविष्टि में लूपबैक पता लिखने के बजाय ip को पूरी तरह छोड़ देती है।
उपभोक्ता
Control UI का डिवाइस पृष्ठ
डिवाइस पृष्ठ system-presence को स्थायी पेयरिंग और नोड
रिकॉर्ड के साथ जोड़ता है। यह Gateway के स्वयं के बीकन को सबसे पहले पिन करता है और लाइव प्लेटफ़ॉर्म,
संस्करण, मॉडल और इनपुट-नवीनता मेटाडेटा के लिए मेल खाने वाले डिवाइस या इंस्टेंस ID का उपयोग करता है।
macOS इंस्टेंस टैब
macOS ऐप system-presence के आउटपुट को रेंडर करता है और अंतिम अपडेट की आयु के आधार पर
एक छोटा स्थिति संकेतक (सक्रिय/निष्क्रिय/पुराना) लागू करता है।
डीबगिंग सुझाव
- असंसाधित सूची देखने के लिए, Gateway पर
system-presenceको कॉल करें। - यदि आपको डुप्लिकेट दिखाई दें:
- पुष्टि करें कि क्लाइंट हैंडशेक में स्थायी
client.instanceIdभेजते हैं - पुष्टि करें कि आवधिक बीकन समान
instanceIdका उपयोग करते हैं - जाँचें कि कनेक्शन से प्राप्त प्रविष्टि में
instanceIdअनुपस्थित तो नहीं है (डुप्लिकेट अपेक्षित हैं)
- पुष्टि करें कि क्लाइंट हैंडशेक में स्थायी
संबंधित
भौतिक Mac इनपुट किस प्रकार सक्रिय नोड चुनता है और कनेक्शन अलर्ट रूट करता है।
टाइपिंग संकेतक कब भेजे जाते हैं और उन्हें कैसे समायोजित करें।
आउटबाउंड स्ट्रीमिंग, चंकिंग और प्रति-चैनल फ़ॉर्मेटिंग।
Gateway घटक और उपस्थिति अपडेट संचालित करने वाला WebSocket प्रोटोकॉल।
connect, system-event, और system-presence के लिए वायर प्रोटोकॉल।