Gateway
OpenShell
OpenShell, OpenClaw के लिए एक प्रबंधित सैंडबॉक्स बैकएंड है। Docker
कंटेनर स्थानीय रूप से चलाने के बजाय, OpenClaw सैंडबॉक्स लाइफ़साइकल को openshell CLI को सौंपता है,
जो SSH-आधारित कमांड निष्पादन के साथ रिमोट परिवेश उपलब्ध कराता है।
OpenShell Plugin वही मूल SSH ट्रांसपोर्ट और रिमोट फ़ाइल सिस्टम
ब्रिज दोबारा उपयोग करता है जो सामान्य SSH बैकएंड में है। यह
OpenShell-विशिष्ट लाइफ़साइकल (sandbox create/get/delete, sandbox ssh-config)
और एक वैकल्पिक mirror कार्यस्थान मोड जोड़ता है।
पूर्वापेक्षाएँ
- OpenShell Plugin इंस्टॉल हो (
openclaw plugins install @openclaw/openshell-sandbox) openshellCLI इंस्टॉल हो औरPATHपर हो (याplugins.entries.openshell.config.commandके ज़रिए कस्टम पथ सेट करें)- सैंडबॉक्स एक्सेस वाला OpenShell खाता
- होस्ट पर OpenClaw Gateway चल रहा हो
त्वरित शुरुआत
- Plugin इंस्टॉल और सक्षम करें, फिर सैंडबॉक्स बैकएंड सेट करें:
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
जब आप चाहते हैं कि स्थानीय
कार्यस्थान canonical बना रहे, तब plugins.entries.openshell.config.mode: "mirror" का उपयोग करें।
व्यवहार:
execसे पहले, OpenClaw स्थानीय कार्यस्थान को OpenShell सैंडबॉक्स में सिंक करता है।execके बाद, OpenClaw रिमोट कार्यस्थान को वापस स्थानीय कार्यस्थान में सिंक करता है।- फ़ाइल टूल अब भी सैंडबॉक्स ब्रिज के ज़रिए काम करते हैं, लेकिन स्थानीय कार्यस्थान टर्न के बीच सत्य का स्रोत बना रहता है।
इसके लिए सर्वोत्तम:
- आप OpenClaw के बाहर स्थानीय रूप से फ़ाइलें संपादित करते हैं और चाहते हैं कि वे बदलाव सैंडबॉक्स में अपने-आप दिखें।
- आप चाहते हैं कि OpenShell सैंडबॉक्स Docker बैकएंड जैसा अधिकतम व्यवहार करे।
- आप चाहते हैं कि प्रत्येक exec टर्न के बाद होस्ट कार्यस्थान में सैंडबॉक्स लिखाइयाँ दिखें।
ट्रेडऑफ़: प्रत्येक exec से पहले और बाद अतिरिक्त सिंक लागत।
remote
जब आप चाहते हैं कि
OpenShell कार्यस्थान canonical बन जाए, तब plugins.entries.openshell.config.mode: "remote" का उपयोग करें।
व्यवहार:
- जब सैंडबॉक्स पहली बार बनाया जाता है, OpenClaw स्थानीय कार्यस्थान से रिमोट कार्यस्थान को एक बार सीड करता है।
- उसके बाद,
exec,read,write,edit, औरapply_patchसीधे रिमोट OpenShell कार्यस्थान पर काम करते हैं। - OpenClaw रिमोट बदलावों को स्थानीय कार्यस्थान में वापस सिंक नहीं करता।
- प्रॉम्प्ट-समय मीडिया रीड अब भी काम करते हैं क्योंकि फ़ाइल और मीडिया टूल सैंडबॉक्स ब्रिज के ज़रिए पढ़ते हैं।
इसके लिए सर्वोत्तम:
- सैंडबॉक्स मुख्यतः रिमोट पक्ष पर रहना चाहिए।
- आप प्रति-टर्न सिंक ओवरहेड कम चाहते हैं।
- आप नहीं चाहते कि होस्ट-स्थानीय संपादन चुपचाप रिमोट सैंडबॉक्स स्थिति को ओवरराइट करें।
मोड चुनना
mirror |
remote |
|
|---|---|---|
| Canonical कार्यस्थान | स्थानीय होस्ट | रिमोट OpenShell |
| सिंक दिशा | द्विदिश (प्रत्येक exec) | एक-बार सीड |
| प्रति-टर्न ओवरहेड | अधिक (अपलोड + डाउनलोड) | कम (सीधे रिमोट ऑपरेशन) |
| स्थानीय संपादन दिखते हैं? | हाँ, अगले exec पर | नहीं, recreate तक |
| इसके लिए सर्वोत्तम | विकास वर्कफ़्लो | लंबे समय तक चलने वाले एजेंट, CI |
कॉन्फ़िगरेशन संदर्भ
सभी OpenShell कॉन्फ़िगरेशन plugins.entries.openshell.config के अंतर्गत रहते हैं:
| कुंजी | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
mode |
"mirror" या "remote" |
"mirror" |
कार्यस्थान सिंक मोड |
command |
string |
"openshell" |
openshell CLI का पथ या नाम |
from |
string |
"openclaw" |
पहली बार बनाने के लिए सैंडबॉक्स स्रोत |
gateway |
string |
— | OpenShell Gateway नाम (--gateway) |
gatewayEndpoint |
string |
— | OpenShell Gateway एंडपॉइंट URL (--gateway-endpoint) |
policy |
string |
— | सैंडबॉक्स निर्माण के लिए OpenShell नीति ID |
providers |
string[] |
[] |
सैंडबॉक्स बनाते समय संलग्न करने के लिए प्रदाता नाम |
gpu |
boolean |
false |
GPU संसाधन अनुरोध करें |
autoProviders |
boolean |
true |
सैंडबॉक्स बनाते समय --auto-providers पास करें |
remoteWorkspaceDir |
string |
"/sandbox" |
सैंडबॉक्स के भीतर प्राथमिक लिखने योग्य कार्यस्थान |
remoteAgentWorkspaceDir |
string |
"/agent" |
एजेंट कार्यस्थान माउंट पथ (रीड-ओनली एक्सेस के लिए) |
timeoutSeconds |
number |
120 |
openshell CLI ऑपरेशन के लिए टाइमआउट |
सैंडबॉक्स-स्तर सेटिंग्स (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, }, }, }, },}कस्टम Gateway के साथ प्रति-एजेंट 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", }, }, }, },}लाइफ़साइकल प्रबंधन
OpenShell सैंडबॉक्स सामान्य सैंडबॉक्स CLI के ज़रिए प्रबंधित किए जाते हैं:
# List all sandbox runtimes (Docker + OpenShell)openclaw sandbox list # Inspect effective policyopenclaw sandbox explain # Recreate (deletes remote workspace, re-seeds on next use)openclaw sandbox recreate --allremote मोड के लिए, recreate विशेष रूप से महत्वपूर्ण है: यह उस स्कोप के लिए canonical
रिमोट कार्यस्थान मिटा देता है। अगला उपयोग स्थानीय कार्यस्थान से एक नया रिमोट कार्यस्थान
सीड करता है।
mirror मोड के लिए, recreate मुख्य रूप से रिमोट निष्पादन परिवेश रीसेट करता है क्योंकि
स्थानीय कार्यस्थान canonical बना रहता है।
कब recreate करें
इनमें से कोई भी बदलने के बाद recreate करें:
agents.defaults.sandbox.backendplugins.entries.openshell.config.fromplugins.entries.openshell.config.modeplugins.entries.openshell.config.policy
openclaw sandbox recreate --allसुरक्षा सख्ती
OpenShell कार्यस्थान root fd को pin करता है और प्रत्येक read से पहले सैंडबॉक्स पहचान दोबारा जाँचता है, इसलिए symlink swaps या फिर से माउंट किया गया कार्यस्थान रीड को इच्छित रिमोट कार्यस्थान से बाहर redirect नहीं कर सकता।
मौजूदा सीमाएँ
- सैंडबॉक्स ब्राउज़र OpenShell बैकएंड पर समर्थित नहीं है।
sandbox.docker.bindsOpenShell पर लागू नहीं होता।sandbox.docker.*के अंतर्गत Docker-विशिष्ट रनटाइम knobs केवल Docker बैकएंड पर लागू होते हैं।
यह कैसे काम करता है
- OpenClaw
openshell sandbox createको कॉल करता है (कॉन्फ़िगर किए अनुसार--from,--gateway,--policy,--providers,--gpuफ़्लैग के साथ)। - OpenClaw सैंडबॉक्स के लिए SSH कनेक्शन
विवरण पाने हेतु
openshell sandbox ssh-config <name>कॉल करता है। - Core SSH कॉन्फ़िग को एक अस्थायी फ़ाइल में लिखता है और सामान्य SSH बैकएंड जैसे उसी रिमोट फ़ाइल सिस्टम ब्रिज का उपयोग करके SSH सत्र खोलता है।
mirrorमोड में: exec से पहले स्थानीय को रिमोट पर सिंक करें, चलाएँ, exec के बाद वापस सिंक करें।remoteमोड में: create पर एक बार सीड करें, फिर सीधे रिमोट कार्यस्थान पर काम करें।
संबंधित
- सैंडबॉक्सिंग -- मोड, स्कोप, और बैकएंड तुलना
- सैंडबॉक्स बनाम टूल नीति बनाम Elevated -- ब्लॉक किए गए टूल डीबग करना
- मल्टी-एजेंट सैंडबॉक्स और टूल -- प्रति-एजेंट ओवरराइड
- सैंडबॉक्स CLI --
openclaw sandboxकमांड