Community translations by veiseule.ai — Help improve them on Crowdin
Skip to main content

OpenClaw macOS IPC आर्किटेक्चर

वर्तमान मॉडल: एक लोकल Unix socket node host service को macOS app से जोड़ता है, ताकि exec approvals और system.run संभव हो सकें। डिस्कवरी/कनेक्ट जाँच के लिए एक openclaw-mac debug CLI उपलब्ध है; एजेंट की कार्रवाइयाँ अभी भी Gateway WebSocket और node.invoke के माध्यम से प्रवाहित होती हैं। UI ऑटोमेशन के लिए PeekabooBridge का उपयोग किया जाता है।

लक्ष्य

  • एकल GUI ऐप इंस्टेंस जो सभी TCC-सामना करने वाले कार्यों का स्वामित्व रखता है (नोटिफ़िकेशन, स्क्रीन रिकॉर्डिंग, माइक, स्पीच, AppleScript)।
  • ऑटोमेशन के लिए छोटा सतह क्षेत्र: Gateway + node कमांड्स, तथा UI ऑटोमेशन के लिए PeekabooBridge।
  • पूर्वानुमेय अनुमतियाँ: हमेशा वही साइन किया हुआ बंडल ID, launchd द्वारा लॉन्च किया गया, ताकि TCC ग्रांट्स स्थिर रहें।

यह कैसे काम करता है

Gateway + node ट्रांसपोर्ट

  • ऐप Gateway (local mode) चलाता है और node के रूप में उससे कनेक्ट होता है।
  • एजेंट क्रियाएँ node.invoke के माध्यम से की जाती हैं (जैसे system.run, system.notify, canvas.*)।

Node service + ऐप IPC

  • एक हेडलेस node host service Gateway WebSocket से कनेक्ट होता है।
  • system.run अनुरोधों को एक स्थानीय Unix सॉकेट के माध्यम से macOS ऐप तक अग्रेषित किया जाता है।
  • ऐप UI संदर्भ में exec करता है, आवश्यकता होने पर प्रॉम्प्ट दिखाता है, और आउटपुट लौटाता है।

आरेख (SCI):

Agent -> Gateway -> Node Service (WS)
                      |  IPC (UDS + token + HMAC + TTL)
                      v
                  Mac App (UI + TCC + system.run)

PeekabooBridge (UI ऑटोमेशन)

  • UI ऑटोमेशन एक अलग UNIX सॉकेट का उपयोग करता है जिसका नाम bridge.sock है और PeekabooBridge JSON प्रोटोकॉल।
  • होस्ट वरीयता क्रम (क्लाइंट-साइड): Peekaboo.app → Claude.app → OpenClaw.app → स्थानीय निष्पादन।
  • सुरक्षा: ब्रिज होस्ट्स के लिए एक अनुमत TeamID आवश्यक है; DEBUG-केवल same-UID एस्केप हैच PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1 (Peekaboo परंपरा) द्वारा संरक्षित है।
  • विवरण के लिए देखें: PeekabooBridge usage

परिचालन प्रवाह

  • Restart/rebuild: SIGN_IDENTITY="Apple Development: <Developer Name> (<TEAMID>)" scripts/restart-mac.sh
  • मौजूदा इंस्टेंस को समाप्त करता है
  • Swift बिल्ड + पैकेज
  • LaunchAgent को लिखता/बूटस्ट्रैप/किकस्टार्ट करता है
  • एकल इंस्टेंस: यदि समान बंडल ID वाला कोई अन्य इंस्टेंस चल रहा हो तो ऐप प्रारंभ में ही बाहर निकल जाता है।

हार्डनिंग नोट्स

  • सभी विशेषाधिकारयुक्त सतहों के लिए TeamID मिलान की आवश्यकता को प्राथमिकता दें।
  • PeekabooBridge: PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1 (केवल DEBUG) स्थानीय विकास के लिए same-UID कॉलर्स की अनुमति दे सकता है।
  • सभी संचार केवल स्थानीय रहते हैं; कोई नेटवर्क सॉकेट उजागर नहीं किए जाते।
  • TCC प्रॉम्प्ट केवल GUI ऐप बंडल से उत्पन्न होते हैं; पुनर्निर्माणों के बीच साइन किया हुआ बंडल ID स्थिर रखें।
  • IPC हार्डनिंग: सॉकेट मोड 0600, टोकन, peer-UID जाँच, HMAC चैलेंज/रिस्पॉन्स, छोटा TTL।