Sandbox مقابل سياسة الأدوات مقابل Elevated
يحتوي OpenClaw على ثلاثة عناصر تحكم مترابطة (لكنها مختلفة):- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) يحدد أين تعمل الأدوات (Docker أم المضيف). - سياسة الأدوات (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) تحدد أي الأدوات متاحة/مسموح بها. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) هو منفذ هروب خاص بـ exec فقط للتشغيل خارج sandbox عندما تكون في وضع sandbox (gatewayافتراضيًا، أوnodeعندما يكون هدف exec مضبوطًا علىnode).
تصحيح سريع
استخدم أداة الفحص لمعرفة ما الذي يفعله OpenClaw فعليًا:- وضع sandbox/النطاق/وصول مساحة العمل الفعّال
- ما إذا كانت الجلسة حاليًا داخل sandbox (الرئيسية مقابل غير الرئيسية)
- سياسة السماح/الحظر الفعالة لأدوات sandbox (وما إذا كانت جاءت من الوكيل/الإعدادات العامة/الافتراضية)
- بوابات elevated ومسارات مفاتيح الإصلاح
Sandbox: أين تعمل الأدوات
يُتحكم في sandboxing عبرagents.defaults.sandbox.mode:
"off": كل شيء يعمل على المضيف."non-main": تُعزل الجلسات غير الرئيسية فقط داخل sandbox (وهذا سبب “المفاجأة” الشائع للمجموعات/القنوات)."all": كل شيء داخل sandbox.
ربط Bind mounts (فحص أمني سريع)
- يخترق
docker.bindsنظام ملفات sandbox: كل ما تقوم بربطه يصبح مرئيًا داخل الحاوية بالنمط الذي تعيّنه (:roأو:rw). - الوضع الافتراضي هو القراءة والكتابة إذا حذفت النمط؛ ويفضل استخدام
:roللمصدر/الأسرار. - يتجاهل
scope: "shared"عمليات الربط الخاصة بكل وكيل (تنطبق عمليات الربط العامة فقط). - يتحقق OpenClaw من مصادر الربط مرتين: أولًا على مسار المصدر المُطبّع، ثم مرة أخرى بعد الحل عبر أعمق أصل موجود. لا تتجاوز عمليات الهروب عبر أصل الرابط الرمزي عمليات التحقق من المسارات المحظورة أو الجذور المسموح بها.
- تظل مسارات الأوراق غير الموجودة خاضعة للتحقق بشكل آمن. إذا تم حل
/workspace/alias-out/new-fileعبر أصل مرتبط رمزيًا إلى مسار محظور أو إلى خارج الجذور المسموح بها المُهيأة، فسيُرفض الربط. - إن ربط
/var/run/docker.sockيمنح فعليًا التحكم بالمضيف إلى sandbox؛ ولا تفعل ذلك إلا عن قصد. - وصول مساحة العمل (
workspaceAccess: "ro"/"rw") مستقل عن أوضاع الربط.
سياسة الأدوات: ما الأدوات الموجودة/القابلة للاستدعاء
هناك مستويان مهمان:- ملف تعريف الأداة:
tools.profileوagents.list[].tools.profile(قائمة السماح الأساسية) - ملف تعريف أداة الموفر:
tools.byProvider[provider].profileوagents.list[].tools.byProvider[provider].profile - سياسة الأدوات العامة/لكل وكيل:
tools.allow/tools.denyوagents.list[].tools.allow/agents.list[].tools.deny - سياسة أداة الموفر:
tools.byProvider[provider].allow/denyوagents.list[].tools.byProvider[provider].allow/deny - سياسة أدوات sandbox (تنطبق فقط عند العمل داخل sandbox):
tools.sandbox.tools.allow/tools.sandbox.tools.denyوagents.list[].tools.sandbox.tools.*
- يفوز
denyدائمًا. - إذا كان
allowغير فارغ، فسيُعامل كل ما عداه على أنه محظور. - سياسة الأدوات هي نقطة التوقف الصارمة: لا يمكن لـ
/execتجاوز أداةexecمحظورة. - يغيّر
/execالإعدادات الافتراضية للجلسة فقط للمرسلين المصرح لهم؛ ولا يمنح وصولًا إلى الأدوات. تقبل مفاتيح أدوات الموفر إماprovider(مثلgoogle-antigravity) أوprovider/model(مثلopenai/gpt-5.4).
مجموعات الأدوات (اختصارات)
تدعم سياسات الأدوات (العامة، والوكيل، وsandbox) إدخالاتgroup:* التي تتوسع إلى أدوات متعددة:
group:runtime:exec,process,code_execution(يُقبلbashكاسم مستعار لـexec)group:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,sessions_yield,subagents,session_statusgroup:memory:memory_search,memory_getgroup:web:web_search,x_search,web_fetchgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:agents:agents_listgroup:media:image,image_generate,video_generate,ttsgroup:openclaw: جميع أدوات OpenClaw المضمنة (باستثناء إضافات الموفر)
Elevated: “التشغيل على المضيف” الخاص بـ exec فقط
لا يمنح Elevated أدوات إضافية؛ بل يؤثر فقط فيexec.
- إذا كنت داخل sandbox، فإن
/elevated on(أوexecمعelevated: true) يُشغَّل خارج sandbox (وقد تظل الموافقات مطلوبة). - استخدم
/elevated fullلتخطي موافقات exec للجلسة. - إذا كنت تعمل مباشرة بالفعل، فإن elevated يكون فعليًا بلا تأثير (مع بقائه خاضعًا للبوابات).
- Elevated ليس محصورًا بنطاق skill ولا يتجاوز سياسة السماح/الحظر للأدوات.
- لا يمنح Elevated تجاوزات عشوائية عبر المضيف من
host=auto؛ بل يتبع قواعد هدف exec العادية ويحافظ علىnodeفقط عندما يكون الهدف المُهيأ/الخاص بالجلسة مضبوطًا بالفعل علىnode. /execمنفصل عن elevated. فهو يضبط فقط إعدادات exec الافتراضية لكل جلسة للمرسلين المصرح لهم.
- التمكين:
tools.elevated.enabled(واختياريًاagents.list[].tools.elevated.enabled) - قوائم سماح المرسلين:
tools.elevated.allowFrom.<provider>(واختياريًاagents.list[].tools.elevated.allowFrom.<provider>)
إصلاحات شائعة لـ “سجن sandbox"
"Tool X blocked by sandbox tool policy”
مفاتيح الإصلاح (اختر واحدًا):- تعطيل sandbox:
agents.defaults.sandbox.mode=off(أو لكل وكيلagents.list[].sandbox.mode=off) - السماح بالأداة داخل sandbox:
- أزلها من
tools.sandbox.tools.deny(أو لكل وكيلagents.list[].tools.sandbox.tools.deny) - أو أضفها إلى
tools.sandbox.tools.allow(أو إلى قائمة السماح لكل وكيل)
- أزلها من
“I thought this was main, why is it sandboxed?”
في وضع"non-main"، لا تُعد مفاتيح المجموعة/القناة جلسات رئيسية. استخدم مفتاح الجلسة الرئيسية (المعروض بواسطة sandbox explain) أو بدّل الوضع إلى "off".
راجع أيضًا
- Sandboxing — المرجع الكامل لـ sandbox (الأوضاع، والنطاقات، والواجهات الخلفية، والصور)
- Sandbox والأدوات في الوكلاء المتعددين — التجاوزات لكل وكيل وترتيب الأولوية
- Elevated Mode