Gateway
OpenShell
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) openshellCLI,PATHपर उपलब्ध हो (याplugins.entries.openshell.config.commandके माध्यम से कस्टम पथ दिया गया हो)- सैंडबॉक्स एक्सेस वाला OpenShell खाता
- होस्ट पर OpenClaw Gateway चल रहा हो
त्वरित शुरुआत
openclaw plugins install @openclaw/openshell-sandbox{ agents: { defaults: { sandbox: { mode: "all", backend: "openshell", scope: "session", workspaceAccess: "rw", }, }, }, plugins: { entries: { openshell: { enabled: true, config: { from: "openclaw", mode: "remote", }, }, }, },}Gateway को पुनः आरंभ करें। अगले एजेंट टर्न पर OpenClaw एक OpenShell सैंडबॉक्स बनाता है और टूल निष्पादन को उसके माध्यम से रूट करता है। इनसे सत्यापित करें:
openclaw sandbox listopenclaw sandbox explainवर्कस्पेस मोड
यह 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 के लिए सर्वोत्तम: प्रति टर्न कम ओवरहेड, और होस्ट के स्थानीय संपादन रिमोट स्थिति को चुपचाप अधिलेखित नहीं कर सकते।
मोड चुनना
mirror |
remote |
|
|---|---|---|
| कैनोनिकल वर्कस्पेस | स्थानीय होस्ट | रिमोट OpenShell |
| सिंक दिशा | द्विदिशात्मक (प्रत्येक निष्पादन पर) | एक बार आरंभिक डेटा भरना |
| प्रति-टर्न ओवरहेड | अधिक (अपलोड + डाउनलोड) | कम (सीधे रिमोट ऑपरेशन) |
| स्थानीय संपादन दिखाई देते हैं? | हाँ, अगले निष्पादन पर | नहीं, दोबारा बनाए जाने तक |
| इसके लिए सर्वोत्तम | डेवलपमेंट वर्कफ़्लो | लंबे समय तक चलने वाले एजेंट, CI |
कॉन्फ़िगरेशन संदर्भ
OpenShell का पूरा कॉन्फ़िगरेशन plugins.entries.openshell.config के अंतर्गत रहता है:
| कुंजी | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
mode |
"mirror" या "remote" |
"mirror" |
वर्कस्पेस सिंक मोड |
command |
string |
"openshell" |
openshell CLI का पथ या नाम |
from |
string |
"openclaw" |
पहली बार बनाने के लिए सैंडबॉक्स स्रोत |
gateway |
string |
सेट नहीं | OpenShell गेटवे नाम (शीर्ष-स्तरीय --gateway) |
gatewayEndpoint |
string |
सेट नहीं | OpenShell गेटवे एंडपॉइंट (शीर्ष-स्तरीय --gateway-endpoint) |
policy |
string |
सेट नहीं | सैंडबॉक्स बनाने के लिए OpenShell नीति ID |
providers |
string[] |
[] |
सैंडबॉक्स बनाते समय संलग्न किए गए प्रोवाइडर नाम (डुप्लिकेट हटाकर, प्रत्येक प्रविष्टि पर एक --provider फ़्लैग) |
gpu |
boolean |
false |
GPU संसाधनों का अनुरोध करें (--gpu) |
autoProviders |
boolean |
true |
बनाते समय --auto-providers (या false होने पर --no-auto-providers) पास करें |
remoteWorkspaceDir |
string |
"/sandbox" |
सैंडबॉक्स के भीतर प्राथमिक लिखने योग्य वर्कस्पेस |
remoteAgentWorkspaceDir |
string |
"/agent" |
एजेंट वर्कस्पेस माउंट पथ (वर्कस्पेस एक्सेस rw न होने पर केवल-पढ़ने योग्य) |
timeoutSeconds |
number |
120 |
openshell CLI ऑपरेशनों के लिए टाइमआउट |
remoteWorkspaceDir और remoteAgentWorkspaceDir निरपेक्ष पथ होने चाहिए और
प्रबंधित रूट /sandbox या /agent के अंतर्गत रहने चाहिए; अन्य निरपेक्ष पथ
अस्वीकार कर दिए जाते हैं।
सैंडबॉक्स-स्तरीय सेटिंग (mode, scope, workspaceAccess) किसी भी बैकएंड की तरह
agents.defaults.sandbox के अंतर्गत रहती हैं। पूरी मैट्रिक्स के लिए
सैंडबॉक्सिंग देखें।
उदाहरण
न्यूनतम रिमोट सेटअप
{ agents: { defaults: { sandbox: { mode: "all", backend: "openshell", }, }, }, plugins: { entries: { openshell: { enabled: true, config: { from: "openclaw", mode: "remote", }, }, }, },}GPU के साथ मिरर मोड
{ agents: { defaults: { sandbox: { mode: "all", backend: "openshell", scope: "agent", workspaceAccess: "rw", }, }, }, plugins: { entries: { openshell: { enabled: true, config: { from: "openclaw", mode: "mirror", gpu: true, providers: ["openai"], timeoutSeconds: 180, }, }, }, },}कस्टम गेटवे के साथ प्रति-एजेंट OpenShell
{ agents: { defaults: { sandbox: { mode: "off" }, }, list: [ { id: "researcher", sandbox: { mode: "all", backend: "openshell", scope: "agent", workspaceAccess: "rw", }, }, ], }, plugins: { entries: { openshell: { enabled: true, config: { from: "openclaw", mode: "remote", gateway: "lab", gatewayEndpoint: "https://lab.example", policy: "strict", }, }, }, },}जीवनचक्र प्रबंधन
# सभी सैंडबॉक्स रनटाइम सूचीबद्ध करें (Docker + OpenShell)openclaw sandbox list # प्रभावी नीति का निरीक्षण करेंopenclaw sandbox explain # दोबारा बनाएँ (रिमोट वर्कस्पेस मिटाता है, अगले उपयोग पर फिर आरंभिक डेटा भरता है)openclaw sandbox recreate --allremote मोड के लिए दोबारा बनाना विशेष रूप से महत्वपूर्ण है: यह उस स्कोप के
कैनोनिकल रिमोट वर्कस्पेस को मिटा देता है और अगला उपयोग स्थानीय वर्कस्पेस से
एक नया वर्कस्पेस भरता है। mirror मोड के लिए दोबारा बनाना मुख्य रूप से रिमोट निष्पादन
परिवेश को रीसेट करता है, क्योंकि स्थानीय वर्कस्पेस कैनोनिकल बना रहता है।
इनमें से किसी को बदलने के बाद दोबारा बनाएँ:
agents.defaults.sandbox.backendplugins.entries.openshell.config.fromplugins.entries.openshell.config.modeplugins.entries.openshell.config.policy
सुरक्षा सुदृढ़ीकरण
मिरर-मोड फ़ाइल-सिस्टम ब्रिज स्थानीय वर्कस्पेस रूट को स्थिर करता है और प्रत्येक पढ़ने, लिखने, mkdir, हटाने और नाम बदलने से पहले कैनोनिकल पथों की (realpath के माध्यम से) पुनः जाँच करता है, और मध्य-पथ सिमलिंक को अस्वीकार करता है। सिमलिंक की अदला-बदली या दोबारा माउंट किया गया वर्कस्पेस फ़ाइल एक्सेस को मिरर किए गए ट्री के बाहर रीडायरेक्ट नहीं कर सकता।
वर्तमान सीमाएँ
- OpenShell बैकएंड पर सैंडबॉक्स ब्राउज़र समर्थित नहीं है।
sandbox.docker.bindsOpenShell पर लागू नहीं होता; यदि बाइंड कॉन्फ़िगर किए गए हों, तो सैंडबॉक्स बनाना विफल हो जाता है।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मोड में: बनाते समय एक बार आरंभिक डेटा भरें, फिर सीधे रिमोट वर्कस्पेस पर काम करें।
संबंधित
- सैंडबॉक्सिंग - मोड, स्कोप और बैकएंड की तुलना
- सैंडबॉक्स बनाम टूल नीति बनाम उन्नत - अवरुद्ध टूल की डीबगिंग
- मल्टी-एजेंट सैंडबॉक्स और टूल - प्रति-एजेंट ओवरराइड
- सैंडबॉक्स CLI -
openclaw sandboxकमांड