Gateway
ब्रिज प्रोटोकॉल
यह क्यों मौजूद था
- सुरक्षा सीमा: संपूर्ण Gateway API सतह के बजाय एक छोटी अनुमतिसूची उपलब्ध कराता था।
- पेयरिंग + Node पहचान: Node का प्रवेश Gateway के स्वामित्व में था और प्रत्येक Node के अलग टोकन से जुड़ा था।
- डिस्कवरी UX: Node, LAN पर Bonjour के माध्यम से Gateway खोज सकते थे या किसी टेलनेट पर सीधे कनेक्ट कर सकते थे।
- लूपबैक WS: SSH के माध्यम से टनल किए जाने के अलावा, संपूर्ण WS नियंत्रण तल स्थानीय रहता था।
ट्रांसपोर्ट
- TCP, प्रत्येक पंक्ति में एक JSON ऑब्जेक्ट (JSONL)।
- वैकल्पिक TLS (
bridge.tls.enabled: true)। - डिफ़ॉल्ट लिसनर पोर्ट
18790था।
TLS सक्षम होने पर, डिस्कवरी TXT रिकॉर्ड में bridgeTls=1 के साथ एक गैर-गोपनीय संकेत के रूप में bridgeTlsSha256 शामिल होता था। Bonjour/mDNS TXT रिकॉर्ड अप्रमाणित होते हैं; क्लाइंट अन्य आउट-ऑफ़-बैंड सत्यापन के बिना विज्ञापित फ़िंगरप्रिंट को आधिकारिक पिन नहीं मान सकते थे।
हैंडशेक और पेयरिंग
- क्लाइंट Node मेटाडेटा और टोकन (यदि पहले से पेयर किया गया हो) के साथ
helloभेजता है। - यदि पेयर नहीं किया गया है, तो Gateway
error(NOT_PAIRED/UNAUTHORIZED) के साथ उत्तर देता है। - क्लाइंट
pair-requestभेजता है। - Gateway अनुमोदन की प्रतीक्षा करता है, फिर
pair-okऔरhello-okभेजता है।
hello-ok पहले serverName लौटाता था; वर्तमान Gateway प्रोटोकॉल में होस्ट की गई Plugin सतहें अब pluginSurfaceUrls के माध्यम से विज्ञापित की जाती हैं (Canvas/A2UI, pluginSurfaceUrls.canvas का उपयोग करता है)।
फ़्रेम
क्लाइंट से Gateway:
req/res: सीमित-क्षेत्र वाला Gateway RPC (चैट, सत्र, कॉन्फ़िगरेशन, स्वास्थ्य, वॉइसवेक, skills.bins)।event: Node संकेत (वॉइस ट्रांसक्रिप्ट, एजेंट अनुरोध, चैट सदस्यता, exec जीवनचक्र)।
Gateway से क्लाइंट:
invoke/invoke-res: Node कमांड (canvas.*,camera.*,screen.record,location.get,sms.send)।event: सदस्यता वाले सत्रों के लिए चैट अपडेट।ping/pong: कनेक्शन सक्रिय रखना।
अनुमतिसूची का प्रवर्तन src/gateway/server-bridge.ts में होता था (हटा दिया गया)।
Exec जीवनचक्र इवेंट
Node, पूर्ण हुई system.run गतिविधि प्रदर्शित करने के लिए exec.finished उत्सर्जित करते थे, जिसे Gateway सिस्टम इवेंट में मैप करता था (पुराने Node exec.started भी उत्सर्जित कर सकते थे)। exec.denied, अस्वीकृत system.run प्रयास को सिस्टम इवेंट को कतार में डाले या एजेंट कार्य को सक्रिय किए बिना अंतिम अस्वीकृति के रूप में चिह्नित करता था।
पेलोड फ़ील्ड (उल्लेख किए जाने के अलावा सभी वैकल्पिक):
| फ़ील्ड | टिप्पणियाँ |
|---|---|
sessionKey |
आवश्यक। इवेंट सहसंबंध और exec.finished के लिए सिस्टम इवेंट वितरण हेतु एजेंट सत्र। |
runId |
समूहीकरण के लिए अद्वितीय exec आईडी। |
command |
अपरिष्कृत या स्वरूपित कमांड स्ट्रिंग। |
exitCode, timedOut, output |
पूर्णता विवरण (केवल समाप्त होने पर)। |
reason |
अस्वीकृति का कारण (केवल अस्वीकृत होने पर)। |
ऐतिहासिक टेलनेट उपयोग
- ब्रिज को किसी टेलनेट IP से बाइंड करें:
~/.openclaw/openclaw.jsonमेंbridge.bind: "tailnet"(केवल ऐतिहासिक;bridge.*अब मान्य कॉन्फ़िगरेशन नहीं है)। - क्लाइंट MagicDNS नाम या टेलनेट IP के माध्यम से कनेक्ट होते थे।
- Bonjour नेटवर्कों के पार काम नहीं करता; अन्यथा वाइड-एरिया DNS-SD या मैन्युअल होस्ट/पोर्ट आवश्यक था।
संस्करण निर्धारण
ब्रिज बिना किसी न्यूनतम/अधिकतम नेगोशिएशन के अंतर्निहित v1 था। वर्तमान Node/ऑपरेटर क्लाइंट WebSocket Gateway प्रोटोकॉल का उपयोग करते हैं, जो प्रोटोकॉल संस्करण सीमा पर नेगोशिएशन करता है।