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.*) هو مخرج تنفيذ فقط للتشغيل على المضيف عندما تكون داخل sandbox.
تصحيح سريع¶
استخدم أداة الفحص لمعرفة ما يفعله OpenClaw فعليًا:
openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --json
ستطبع:
- وضع/نطاق sandbox الفعّال وإتاحة مساحة العمل
- ما إذا كانت الجلسة مُسَندبَكَة حاليًا (الرئيسية مقابل غير الرئيسية)
- السماح/المنع الفعّال لأدوات sandbox (وهل جاء من الوكيل/العالمي/الافتراضي)
- بوابات elevated ومسارات مفاتيح الإصلاح
Sandbox: أين تعمل الأدوات¶
يتم التحكّم في sandboxing عبر agents.defaults.sandbox.mode:
"off": كل شيء يعمل على المضيف."non-main": تُسَندبَك فقط الجلسات غير الرئيسية (مفاجأة شائعة للمجموعات/القنوات)."all": كل شيء داخل sandbox.
انظر Sandboxing للمصفوفة الكاملة (النطاق، ربط مساحات العمل، الصور).
Bind mounts (فحص أمني سريع)¶
docker.binds«يخترق» نظام ملفات sandbox: كل ما تربطه يصبح مرئيًا داخل الحاوية مع الوضع الذي تحدّده (:roأو:rw).- الافتراضي قراءة-كتابة إذا حذفت الوضع؛ يُفضَّل
:roللمصدر/الأسرار. scope: "shared"يتجاهل الروابط الخاصة بكل وكيل (تُطبَّق الروابط العالمية فقط).- ربط
/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 (تُطبَّق فقط عند التسنيد):
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.2).
مجموعات الأدوات (اختصارات)¶
تدعم سياسات الأدوات (العالمية، الوكيل، sandbox) إدخالات group:* التي تتوسّع إلى عدة أدوات:
{
tools: {
sandbox: {
tools: {
allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"],
},
},
},
}
المجموعات المتاحة:
group:runtime:exec,bash,processgroup:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,session_statusgroup:memory:memory_search,memory_getgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw: جميع أدوات OpenClaw المضمّنة (يستثني إضافات الموفّرين)
Elevated: تنفيذ فقط «التشغيل على المضيف»¶
لا يمنح Elevated أدوات إضافية؛ بل يؤثّر فقط على exec.
- إذا كنت داخل sandbox، فإن
/elevated on(أوexecمعelevated: true) يعمل على المضيف (وقد تظل الموافقات مطلوبة). - استخدم
/elevated fullلتجاوز موافقات التنفيذ للجلسة. - إذا كنت تعمل مباشرة بالفعل، فـ Elevated عمليًا بلا أثر (ولا يزال مُقيّدًا).
- Elevated غير محصور بنطاق Skill ولا يتجاوز السماح/المنع للأدوات.
/execمنفصل عن Elevated. يضبط فقط افتراضات التنفيذ لكل جلسة للمرسلين المخوّلين.
البوابات:
- التمكين:
tools.elevated.enabled(واختياريًاagents.list[].tools.elevated.enabled) - قوائم سماح المرسلين:
tools.elevated.allowFrom.<provider>(واختياريًاagents.list[].tools.elevated.allowFrom.<provider>)
انظر Elevated Mode.
إصلاحات شائعة لـ «سجن sandbox»¶
«تم حظر الأداة X بواسطة سياسة أدوات sandbox»¶
مفاتيح الإصلاح (اختر واحدًا):
- تعطيل 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(أو السماح لكل وكيل)
«ظننت أن هذه جلسة رئيسية، لماذا هي داخل sandbox؟»¶
في وضع "non-main"، مفاتيح المجموعات/القنوات ليست رئيسية. استخدم مفتاح الجلسة الرئيسية (المعروض بواسطة sandbox explain) أو بدّل الوضع إلى "off".