يمكن لـ OpenClaw تشغيل الأدوات داخل خلفيات بيئات معزولة لتقليل نطاق التأثير. هذا اختياري وتتحكم به الإعدادات (Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
agents.defaults.sandbox أو agents.list[].sandbox). إذا كان العزل متوقفًا، تعمل الأدوات على المضيف. يبقى Gateway على المضيف؛ وينفذ تشغيل الأدوات داخل بيئة معزولة عند التمكين.
هذا ليس حدًا أمنيًا مثاليًا، لكنه يحد ماديًا من الوصول إلى نظام الملفات والعمليات عندما يقوم النموذج بشيء غير مناسب.
ما الذي يُعزل
- تنفيذ الأدوات (
exec،read،write،edit،apply_patch،process، وما إلى ذلك). - متصفح معزول اختياري (
agents.defaults.sandbox.browser).
تفاصيل المتصفح المعزول
تفاصيل المتصفح المعزول
- افتراضيًا، يبدأ المتصفح المعزول تلقائيًا (لضمان إمكانية الوصول إلى CDP) عندما تحتاجه أداة المتصفح. اضبط ذلك عبر
agents.defaults.sandbox.browser.autoStartوagents.defaults.sandbox.browser.autoStartTimeoutMs. - افتراضيًا، تستخدم حاويات المتصفح المعزول شبكة Docker مخصصة (
openclaw-sandbox-browser) بدلًا من شبكةbridgeالعامة. اضبط ذلك باستخدامagents.defaults.sandbox.browser.network. - يقيّد الخيار
agents.defaults.sandbox.browser.cdpSourceRangeالاختياري دخول CDP عند حافة الحاوية باستخدام قائمة سماح CIDR (مثل172.21.0.1/32). - وصول مراقب noVNC محمي بكلمة مرور افتراضيًا؛ يصدر OpenClaw عنوان URL برمز قصير العمر يخدم صفحة تمهيد محلية ويفتح noVNC مع كلمة المرور في جزء URL (وليس في سجلات الاستعلام/الرؤوس).
- يسمح
agents.defaults.sandbox.browser.allowHostControlللجلسات المعزولة باستهداف متصفح المضيف صراحةً. - تتحكم قوائم السماح الاختيارية في
target: "custom":allowedControlUrls، وallowedControlHosts، وallowedControlPorts.
- عملية Gateway نفسها.
- أي أداة يُسمح لها صراحةً بالعمل خارج البيئة المعزولة (مثل
tools.elevated).- يتجاوز تنفيذ exec المرتفع العزل ويستخدم مسار الخروج المضبوط (
gatewayافتراضيًا، أوnodeعندما يكون هدف exec هوnode). - إذا كان العزل متوقفًا، فإن
tools.elevatedلا يغيّر التنفيذ (لأنه يعمل أصلًا على المضيف). راجع الوضع المرتفع.
- يتجاوز تنفيذ exec المرتفع العزل ويستخدم مسار الخروج المضبوط (
الأوضاع
يتحكمagents.defaults.sandbox.mode في وقت استخدام العزل:
- off
- non-main
- all
لا يوجد عزل.
النطاق
يتحكمagents.defaults.sandbox.scope في عدد الحاويات التي تُنشأ:
"agent"(افتراضي): حاوية واحدة لكل وكيل."session": حاوية واحدة لكل جلسة."shared": حاوية واحدة تشترك فيها كل الجلسات المعزولة.
الخلفية
يتحكمagents.defaults.sandbox.backend في بيئة التشغيل التي توفر العزل:
"docker"(الافتراضي عند تمكين العزل): بيئة تشغيل عزل محلية مدعومة بـ Docker."ssh": بيئة تشغيل عزل بعيدة عامة مدعومة بـ SSH."openshell": بيئة تشغيل عزل مدعومة بـ OpenShell.
agents.defaults.sandbox.ssh. وتوجد إعدادات OpenShell الخاصة تحت plugins.entries.openshell.config.
اختيار خلفية
| Docker | SSH | OpenShell | |
|---|---|---|---|
| مكان التشغيل | حاوية محلية | أي مضيف يمكن الوصول إليه عبر SSH | بيئة معزولة مُدارة من OpenShell |
| الإعداد | scripts/sandbox-setup.sh | مفتاح SSH + المضيف الهدف | Plugin OpenShell مُمكّن |
| نموذج مساحة العمل | ربط تحميل أو نسخ | مرجعية بعيدة (تهيئة أولية مرة واحدة) | mirror أو remote |
| التحكم في الشبكة | docker.network (الافتراضي: لا شيء) | يعتمد على المضيف البعيد | يعتمد على OpenShell |
| عزل المتصفح | مدعوم | غير مدعوم | غير مدعوم بعد |
| ربط التحميلات | docker.binds | N/A | N/A |
| الأفضل لـ | التطوير المحلي، العزل الكامل | إسناد الحمل إلى جهاز بعيد | بيئات معزولة بعيدة مُدارة مع مزامنة اختيارية باتجاهين |
خلفية Docker
العزل متوقف افتراضيًا. إذا فعّلت العزل ولم تختر خلفية، يستخدم OpenClaw خلفية Docker. تنفذ هذه الخلفية الأدوات والمتصفحات المعزولة محليًا عبر مقبس Docker daemon (/var/run/docker.sock). يتحدد عزل حاوية البيئة المعزولة بواسطة namespaces الخاصة بـ Docker.
لكشف وحدات GPU في المضيف لبيئات Docker المعزولة، اضبط agents.defaults.sandbox.docker.gpus أو التجاوز لكل وكيل agents.list[].sandbox.docker.gpus. تُمرر القيمة إلى علم Docker --gpus كوسيط منفصل، مثل "all" أو "device=GPU-uuid"، وتتطلب بيئة تشغيل مضيف متوافقة مثل NVIDIA Container Toolkit.
خلفية SSH
استخدمbackend: "ssh" عندما تريد من OpenClaw عزل exec، وأدوات الملفات، وقراءات الوسائط على أي جهاز يمكن الوصول إليه عبر SSH.
كيف يعمل
كيف يعمل
- ينشئ OpenClaw جذرًا بعيدًا لكل نطاق تحت
sandbox.ssh.workspaceRoot. - عند أول استخدام بعد الإنشاء أو إعادة الإنشاء، يهيئ OpenClaw مساحة العمل البعيدة تلك من مساحة العمل المحلية مرة واحدة.
- بعد ذلك، تعمل
exec، وread، وwrite، وedit، وapply_patch، وقراءات وسائط الموجه، وتجهيز الوسائط الواردة مباشرةً على مساحة العمل البعيدة عبر SSH. - لا يزامن OpenClaw التغييرات البعيدة مرة أخرى إلى مساحة العمل المحلية تلقائيًا.
مواد المصادقة
مواد المصادقة
identityFile، وcertificateFile، وknownHostsFile: استخدم الملفات المحلية الموجودة ومررها عبر إعدادات OpenSSH.identityData، وcertificateData، وknownHostsData: استخدم سلاسل مضمنة أو SecretRefs. يحلها OpenClaw عبر لقطة بيئة تشغيل الأسرار العادية، ويكتبها إلى ملفات مؤقتة بأذونات0600، ثم يحذفها عند انتهاء جلسة SSH.- إذا عُيّن كل من
*Fileو*Dataللعنصر نفسه، تكون الأولوية لـ*Dataفي جلسة SSH تلك.
تبعات المرجعية البعيدة
تبعات المرجعية البعيدة
هذا نموذج مرجعي بعيد. تصبح مساحة عمل SSH البعيدة حالة البيئة المعزولة الحقيقية بعد التهيئة الأولية.
- لا تظهر التعديلات المحلية على المضيف التي تُجرى خارج OpenClaw بعد خطوة التهيئة على البعيد حتى تعيد إنشاء البيئة المعزولة.
- يحذف
openclaw sandbox recreateالجذر البعيد لكل نطاق ويعيد التهيئة من المحلي عند الاستخدام التالي. - عزل المتصفح غير مدعوم في خلفية SSH.
- لا تنطبق إعدادات
sandbox.docker.*على خلفية SSH.
خلفية OpenShell
استخدمbackend: "openshell" عندما تريد من OpenClaw عزل الأدوات في بيئة بعيدة مُدارة من OpenShell. للاطلاع على دليل الإعداد الكامل، ومرجع الإعدادات، ومقارنة أوضاع مساحة العمل، راجع صفحة OpenShell المخصصة.
يعيد OpenShell استخدام نقل SSH الأساسي نفسه وجسر نظام الملفات البعيد نفسه كخلفية SSH العامة، ويضيف دورة حياة خاصة بـ OpenShell (sandbox create/get/delete، وsandbox ssh-config) بالإضافة إلى وضع مساحة العمل الاختياري mirror.
mirror(افتراضي): تبقى مساحة العمل المحلية مرجعية. يزامن OpenClaw الملفات المحلية إلى OpenShell قبل exec ويزامن مساحة العمل البعيدة مرة أخرى بعد exec.remote: تكون مساحة عمل OpenShell هي المرجع بعد إنشاء البيئة المعزولة. يهيئ OpenClaw مساحة العمل البعيدة مرة واحدة من مساحة العمل المحلية، ثم تعمل أدوات الملفات وexec مباشرةً على البيئة المعزولة البعيدة دون مزامنة التغييرات مرة أخرى.
تفاصيل النقل البعيد
تفاصيل النقل البعيد
- يطلب OpenClaw من OpenShell إعدادات SSH الخاصة بالبيئة المعزولة عبر
openshell sandbox ssh-config <name>. - يكتب Core إعدادات SSH تلك إلى ملف مؤقت، ويفتح جلسة SSH، ويعيد استخدام جسر نظام الملفات البعيد نفسه المستخدم بواسطة
backend: "ssh". - في وضع
mirrorتختلف دورة الحياة فقط: مزامنة المحلي إلى البعيد قبل exec، ثم المزامنة مرة أخرى بعد exec.
قيود OpenShell الحالية
قيود OpenShell الحالية
- المتصفح المعزول غير مدعوم بعد
sandbox.docker.bindsغير مدعوم في خلفية OpenShell- تظل مفاتيح بيئة التشغيل الخاصة بـ Docker تحت
sandbox.docker.*منطبقة على خلفية Docker فقط
أوضاع مساحة العمل
لدى OpenShell نموذجان لمساحة العمل. هذا هو الجزء الأكثر أهمية عمليًا.- mirror (local canonical)
- remote (OpenShell canonical)
استخدم
plugins.entries.openshell.config.mode: "mirror" عندما تريد أن تبقى مساحة العمل المحلية هي المرجع.السلوك:- قبل
exec، يزامن OpenClaw مساحة العمل المحلية إلى صندوق رمل OpenShell. - بعد
exec، يزامن OpenClaw مساحة العمل البعيدة مرة أخرى إلى مساحة العمل المحلية. - تظل أدوات الملفات تعمل عبر جسر صندوق الرمل، لكن مساحة العمل المحلية تبقى مصدر الحقيقة بين الأدوار.
- تعدّل الملفات محليًا خارج OpenClaw وتريد أن تظهر تلك التغييرات في صندوق الرمل تلقائيًا
- تريد أن يتصرف صندوق رمل OpenShell بأكبر قدر ممكن مثل واجهة Docker الخلفية
- تريد أن تعكس مساحة عمل المضيف عمليات الكتابة في صندوق الرمل بعد كل دور exec
mirror إذا كنت تفكر في صندوق الرمل كبيئة تنفيذ مؤقتة. اختر remote إذا كنت تفكر في صندوق الرمل كمساحة العمل الحقيقية.
دورة حياة OpenShell
ما زالت صناديق رمل OpenShell تُدار عبر دورة حياة صندوق الرمل العادية:- يعرض
openclaw sandbox listبيئات تشغيل OpenShell بالإضافة إلى بيئات تشغيل Docker - يحذف
openclaw sandbox recreateبيئة التشغيل الحالية ويتيح لـ OpenClaw إعادة إنشائها عند الاستخدام التالي - منطق التنظيف واعٍ بواجهة الخلفية أيضًا
remote، تكون إعادة الإنشاء مهمة خصوصًا:
- تحذف إعادة الإنشاء مساحة العمل البعيدة المعتمدة لذلك النطاق
- الاستخدام التالي يملأ مساحة عمل بعيدة جديدة من مساحة العمل المحلية
mirror، تعيد إعادة الإنشاء ضبط بيئة التنفيذ البعيدة أساسًا لأن مساحة العمل المحلية تظل معتمدة على أي حال.
الوصول إلى مساحة العمل
يتحكمagents.defaults.sandbox.workspaceAccess في ما يمكن لصندوق الرمل رؤيته:
- none (default)
- ro
- rw
ترى الأدوات مساحة عمل صندوق رمل تحت
~/.openclaw/sandboxes.- ما زال وضع
mirrorيستخدم مساحة العمل المحلية كمصدر معتمد بين أدوار exec - يستخدم وضع
remoteمساحة عمل OpenShell البعيدة كمصدر معتمد بعد الملء الأولي - ما زال
workspaceAccess: "ro"و"none"يقيّدان سلوك الكتابة بالطريقة نفسها
media/inbound/*).
ملاحظة Skills: أداة
read متجذرة في صندوق الرمل. مع workspaceAccess: "none"، يعكس OpenClaw المهارات المؤهلة إلى مساحة عمل صندوق الرمل (.../skills) حتى يمكن قراءتها. مع "rw"، يمكن قراءة مهارات مساحة العمل من /workspace/skills.عمليات التثبيت المخصصة عبر bind
يثبّتagents.defaults.sandbox.docker.binds أدلة مضيف إضافية داخل الحاوية. التنسيق: host:container:mode (مثل "/home/user/source:/source:rw").
تُدمج عمليات bind العامة والخاصة بكل وكيل ولا تُستبدل. تحت scope: "shared"، تُتجاهل عمليات bind الخاصة بكل وكيل.
يثبّت agents.defaults.sandbox.browser.binds أدلة مضيف إضافية داخل حاوية متصفح صندوق الرمل فقط.
- عند تعيينه (بما في ذلك
[])، يستبدلagents.defaults.sandbox.docker.bindsلحاوية المتصفح. - عند حذفه، تعود حاوية المتصفح إلى
agents.defaults.sandbox.docker.binds(متوافق مع الإصدارات السابقة).
الصور والإعداد
صورة Docker الافتراضية:openclaw-sandbox:bookworm-slim
نسخة المصدر مقابل تثبيت npmتتوفر سكربتات المساعدة
scripts/sandbox-setup.sh وscripts/sandbox-common-setup.sh وscripts/sandbox-browser-setup.sh فقط عند التشغيل من نسخة مصدر. لا تُضمّن في حزمة npm.إذا ثبّت OpenClaw عبر npm install -g openclaw، فاستخدم أوامر docker build المضمنة المعروضة أدناه بدلًا من ذلك.Build the default image
من نسخة مصدر:من تثبيت npm (لا حاجة إلى نسخة مصدر):لا تتضمن الصورة الافتراضية Node. إذا احتاجت مهارة إلى Node (أو بيئات تشغيل أخرى)، فإما أن تبني صورة مخصصة أو تثبّت عبر
sandbox.docker.setupCommand (يتطلب خروجًا إلى الشبكة + جذرًا قابلًا للكتابة + مستخدم root).لا يستبدل OpenClaw بصمت debian:bookworm-slim العادي عندما تكون openclaw-sandbox:bookworm-slim مفقودة. تفشل عمليات تشغيل صندوق الرمل التي تستهدف الصورة الافتراضية بسرعة مع تعليمات بناء إلى أن تبنيها، لأن الصورة المرفقة تحمل python3 لمساعدات الكتابة/التحرير في صندوق الرمل.Optional: build the common image
للحصول على صورة صندوق رمل أكثر وظيفية مع أدوات شائعة (على سبيل المثال من تثبيت npm، ابنِ الصورة الافتراضية أولًا (انظر أعلاه)، ثم ابنِ الصورة المشتركة فوقها باستخدام
curl وjq وnodejs وpython3 وgit):من نسخة مصدر:scripts/docker/sandbox/Dockerfile.common من المستودع.ثم اضبط agents.defaults.sandbox.docker.image على openclaw-sandbox-common:bookworm-slim.Optional: build the sandbox browser image
agents.defaults.sandbox.docker.network.
Sandbox browser Chromium defaults
Sandbox browser Chromium defaults
تطبّق صورة متصفح صندوق الرمل المرفقة أيضًا إعدادات بدء Chromium محافظة لأحمال العمل داخل الحاويات. تتضمن الإعدادات الافتراضية الحالية للحاوية:
--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-dev-shm-usage--disable-background-networking--disable-extensions--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--disable-software-rasterizer--no-zygote--metrics-recording-only--renderer-process-limit=2--no-sandboxعندما يكونnoSandboxمفعّلًا.- علامات تعزيز الرسوميات الثلاث (
--disable-3d-apisو--disable-software-rasterizerو--disable-gpu) اختيارية ومفيدة عندما تفتقر الحاويات إلى دعم GPU. اضبطOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0إذا كان حمل عملك يتطلب WebGL أو ميزات 3D/متصفح أخرى. --disable-extensionsمفعّل افتراضيًا ويمكن تعطيله باستخدامOPENCLAW_BROWSER_DISABLE_EXTENSIONS=0للتدفقات المعتمدة على الإضافات.- يتحكم
OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>في--renderer-process-limit=2، حيث يُبقي0إعداد Chromium الافتراضي.
browser.extraArgs لإلحاق علامات بدء إضافية.Network security defaults
Network security defaults
network: "host"محظور.network: "container:<id>"محظور افتراضيًا (خطر تجاوز عبر الانضمام إلى namespace).- تجاوز الطوارئ:
agents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true.
scripts/docker/setup.sh تمهيد إعدادات صندوق الرمل. اضبط OPENCLAW_SANDBOX=1 (أو true/yes/on) لتمكين ذلك المسار. يمكنك تجاوز موقع المقبس باستخدام OPENCLAW_DOCKER_SOCKET. مرجع الإعداد الكامل والبيئة: Docker.
setupCommand (إعداد الحاوية لمرة واحدة)
يعملsetupCommand مرة واحدة بعد إنشاء حاوية صندوق الرمل (وليس في كل تشغيل). يُنفّذ داخل الحاوية عبر sh -lc.
المسارات:
- عام:
agents.defaults.sandbox.docker.setupCommand - لكل وكيل:
agents.list[].sandbox.docker.setupCommand
المزالق الشائعة
المزالق الشائعة
- القيمة الافتراضية لـ
docker.networkهي"none"(بلا اتصال صادر)، لذلك ستفشل عمليات تثبيت الحزم. - يتطلب
docker.network: "container:<id>"ضبطdangerouslyAllowContainerNamespaceJoin: trueوهو مخصص لحالات الطوارئ فقط. - يمنع
readOnlyRoot: trueعمليات الكتابة؛ اضبطreadOnlyRoot: falseأو ابنِ صورة مخصصة. - يجب أن يكون
userهو الجذر لتثبيت الحزم (احذفuserأو اضبطuser: "0:0"). - لا يرث تنفيذ Sandbox متغيرات
process.envمن المضيف. استخدمagents.defaults.sandbox.docker.env(أو صورة مخصصة) لمفاتيح API الخاصة بالمهارات.
سياسة الأدوات ومخارج الطوارئ
تظل سياسات السماح/المنع للأدوات مطبقة قبل قواعد Sandbox. إذا كانت أداة ممنوعة عمومًا أو لكل وكيل، فلن يعيدها Sandbox.tools.elevated هو مخرج طوارئ صريح يشغّل exec خارج Sandbox (gateway افتراضيًا، أو node عندما يكون هدف التنفيذ هو node). لا تنطبق توجيهات /exec إلا على المرسلين المصرح لهم وتستمر لكل جلسة؛ لتعطيل exec بشكل صارم، استخدم منع سياسة الأدوات (راجع Sandbox مقابل سياسة الأدوات مقابل Elevated).
تصحيح الأخطاء:
- استخدم
openclaw sandbox explainلفحص وضع Sandbox الفعال، وسياسة الأدوات، ومفاتيح تكوين الإصلاح. - راجع Sandbox مقابل سياسة الأدوات مقابل Elevated للحصول على النموذج الذهني لسؤال “لماذا هذا محظور؟”.
تجاوزات الوكلاء المتعددين
يمكن لكل وكيل تجاوز Sandbox + الأدوات:agents.list[].sandbox وagents.list[].tools (بالإضافة إلى agents.list[].tools.sandbox.tools لسياسة أدوات Sandbox). راجع Sandbox والأدوات للوكلاء المتعددين لمعرفة الأسبقية.
مثال تفعيل أدنى
ذات صلة
- Sandbox والأدوات للوكلاء المتعددين — تجاوزات لكل وكيل والأسبقية
- OpenShell — إعداد خلفية Sandbox المُدارة، وأوضاع مساحة العمل، ومرجع التكوين
- تكوين Sandbox
- Sandbox مقابل سياسة الأدوات مقابل Elevated — تصحيح “لماذا هذا محظور؟”
- الأمان