OpenShell एक प्रबंधित सैंडबॉक्स बैकएंड है: Docker कंटेनरों को स्थानीय रूप से चलाने के बजाय,
OpenClaw सैंडबॉक्स जीवनचक्र openshell CLI को सौंपता है, जो
रिमोट परिवेशों का प्रावधान करता है और SSH के माध्यम से कमांड निष्पादित करता है।
Plugin सामान्य SSH बैकएंड के समान SSH ट्रांसपोर्ट और
रिमोट फ़ाइल-सिस्टम ब्रिज का पुनः उपयोग करता है और इसमें OpenShell
जीवनचक्र (sandbox create/get/delete/ssh-config) के साथ वैकल्पिक mirror
वर्कस्पेस सिंक मोड जोड़ता है।
पूर्वापेक्षाएँ
- OpenShell Plugin इंस्टॉल हो (
openclaw plugins install @openclaw/openshell-sandbox)
openshell CLI, PATH पर उपलब्ध हो (या
plugins.entries.openshell.config.command के माध्यम से कस्टम पथ दिया गया हो)
- सैंडबॉक्स एक्सेस वाला OpenShell खाता
- होस्ट पर OpenClaw Gateway चल रहा हो
त्वरित शुरुआत
Gateway को पुनः आरंभ करें। अगले एजेंट टर्न पर OpenClaw एक OpenShell
सैंडबॉक्स बनाता है और टूल निष्पादन को उसके माध्यम से रूट करता है। इनसे सत्यापित करें:
वर्कस्पेस मोड
यह OpenShell से संबंधित सबसे महत्वपूर्ण निर्णय है।
mirror (डिफ़ॉल्ट)
plugins.entries.openshell.config.mode: "mirror" स्थानीय वर्कस्पेस को
कैनोनिकल रखता है:
exec से पहले, OpenClaw स्थानीय वर्कस्पेस को सैंडबॉक्स में सिंक करता है।
exec के बाद, OpenClaw रिमोट वर्कस्पेस को वापस स्थानीय वर्कस्पेस में सिंक करता है।
- फ़ाइल टूल सैंडबॉक्स ब्रिज से होकर जाते हैं, लेकिन टर्न के बीच स्थानीय वर्कस्पेस
सत्य का स्रोत बना रहता है।
डेवलपमेंट वर्कफ़्लो के लिए सर्वोत्तम: OpenClaw के बाहर किए गए स्थानीय संपादन
अगले निष्पादन में दिखाई देते हैं और सैंडबॉक्स का व्यवहार Docker बैकएंड के काफ़ी निकट होता है।
समझौता: प्रत्येक निष्पादन टर्न पर अपलोड + डाउनलोड लागत।
remote
mode: "remote" OpenShell वर्कस्पेस को कैनोनिकल बनाता है:
- पहली बार सैंडबॉक्स बनाते समय, OpenClaw स्थानीय वर्कस्पेस से रिमोट वर्कस्पेस में
केवल एक बार प्रारंभिक डेटा भरता है।
- उसके बाद,
exec, read, write, edit, और apply_patch
सीधे रिमोट वर्कस्पेस पर काम करते हैं। OpenClaw रिमोट परिवर्तनों को
वापस स्थानीय वर्कस्पेस में सिंक नहीं करता।
- प्रॉम्प्ट के समय मीडिया पढ़ना फिर भी काम करता है (फ़ाइल/मीडिया टूल
सैंडबॉक्स ब्रिज के माध्यम से पढ़ते हैं)।
लंबे समय तक चलने वाले एजेंट और CI के लिए सर्वोत्तम: प्रति टर्न कम ओवरहेड,
और होस्ट के स्थानीय संपादन रिमोट स्थिति को चुपचाप अधिलेखित नहीं कर सकते।
आरंभिक डेटा भरने के बाद OpenClaw के बाहर होस्ट पर फ़ाइलों में किए गए संपादन रिमोट सैंडबॉक्स को दिखाई नहीं देते। दोबारा आरंभिक डेटा भरने के लिए openclaw sandbox recreate चलाएँ।
मोड चुनना
कॉन्फ़िगरेशन संदर्भ
OpenShell का पूरा कॉन्फ़िगरेशन plugins.entries.openshell.config के अंतर्गत रहता है:
remoteWorkspaceDir और remoteAgentWorkspaceDir निरपेक्ष पथ होने चाहिए और
प्रबंधित रूट /sandbox या /agent के अंतर्गत रहने चाहिए; अन्य निरपेक्ष पथ
अस्वीकार कर दिए जाते हैं।
सैंडबॉक्स-स्तरीय सेटिंग (mode, scope, workspaceAccess) किसी भी बैकएंड की तरह
agents.defaults.sandbox के अंतर्गत रहती हैं। पूरी मैट्रिक्स के लिए
सैंडबॉक्सिंग देखें।
उदाहरण
न्यूनतम रिमोट सेटअप
GPU के साथ मिरर मोड
कस्टम गेटवे के साथ प्रति-एजेंट OpenShell
जीवनचक्र प्रबंधन
remote मोड के लिए दोबारा बनाना विशेष रूप से महत्वपूर्ण है: यह उस स्कोप के
कैनोनिकल रिमोट वर्कस्पेस को मिटा देता है और अगला उपयोग स्थानीय वर्कस्पेस से
एक नया वर्कस्पेस भरता है। mirror मोड के लिए दोबारा बनाना मुख्य रूप से रिमोट निष्पादन
परिवेश को रीसेट करता है, क्योंकि स्थानीय वर्कस्पेस कैनोनिकल बना रहता है।
इनमें से किसी को बदलने के बाद दोबारा बनाएँ:
agents.defaults.sandbox.backend
plugins.entries.openshell.config.from
plugins.entries.openshell.config.mode
plugins.entries.openshell.config.policy
सुरक्षा सुदृढ़ीकरण
मिरर-मोड फ़ाइल-सिस्टम ब्रिज स्थानीय वर्कस्पेस रूट को स्थिर करता है और प्रत्येक पढ़ने,
लिखने, mkdir, हटाने और नाम बदलने से पहले कैनोनिकल पथों की (realpath के माध्यम से) पुनः जाँच करता है,
और मध्य-पथ सिमलिंक को अस्वीकार करता है। सिमलिंक की अदला-बदली या दोबारा माउंट किया गया वर्कस्पेस
फ़ाइल एक्सेस को मिरर किए गए ट्री के बाहर रीडायरेक्ट नहीं कर सकता।
वर्तमान सीमाएँ
- OpenShell बैकएंड पर सैंडबॉक्स ब्राउज़र समर्थित नहीं है।
sandbox.docker.binds OpenShell पर लागू नहीं होता; यदि बाइंड कॉन्फ़िगर किए गए हों,
तो सैंडबॉक्स बनाना विफल हो जाता है।
sandbox.docker.* के अंतर्गत Docker-विशिष्ट रनटाइम नॉब (env के अलावा)
केवल Docker बैकएंड पर लागू होते हैं।
यह कैसे काम करता है
- OpenClaw सैंडबॉक्स नाम के लिए
sandbox get चलाता है (कॉन्फ़िगर किए गए किसी भी
--gateway/--gateway-endpoint के साथ); यदि वह विफल होता है, तो यह
sandbox create से एक सैंडबॉक्स बनाता है, और सेट होने पर --name, --from, --policy, सक्षम होने पर --gpu,
--auto-providers/--no-auto-providers, और प्रत्येक कॉन्फ़िगर किए गए प्रोवाइडर के लिए एक
--provider फ़्लैग पास करता है।
- OpenClaw SSH कनेक्शन विवरण प्राप्त करने के लिए सैंडबॉक्स नाम हेतु
sandbox ssh-config चलाता है।
- कोर SSH कॉन्फ़िगरेशन को एक अस्थायी फ़ाइल में लिखता है और सामान्य SSH बैकएंड वाले
उसी रिमोट फ़ाइल-सिस्टम ब्रिज के माध्यम से SSH सत्र खोलता है।
mirror मोड में: निष्पादन से पहले स्थानीय से रिमोट में सिंक करें, चलाएँ, फिर बाद में वापस सिंक करें।
remote मोड में: बनाते समय एक बार आरंभिक डेटा भरें, फिर सीधे रिमोट
वर्कस्पेस पर काम करें।
संबंधित