Gateway
بيئة العزل مقابل سياسة الأدوات مقابل الصلاحيات المرتفعة
لدى OpenClaw ثلاثة عناصر تحكم مرتبطة (لكنها مختلفة):
- العزل (
agents.defaults.sandbox.*/agents.list[].sandbox.*) يحدد أين تعمل الأدوات (واجهة العزل الخلفية أم المضيف). - سياسة الأدوات (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) تحدد أي الأدوات متاحة/مسموح بها. - الوضع المرتفع (
tools.elevated.*,agents.list[].tools.elevated.*) هو منفذ هروب مخصص لـ exec فقط للتشغيل خارج العزل عندما تكون معزولًا (gatewayافتراضيًا، أوnodeعندما يكون هدف exec مهيأً إلىnode).
تصحيح سريع
استخدم أداة الفحص لترى ما يفعله OpenClaw فعليًا:
openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --json
يطبع:
- وضع/نطاق العزل الفعّال ووصول مساحة العمل
- ما إذا كانت الجلسة معزولة حاليًا (رئيسية مقابل غير رئيسية)
- السماح/الرفض الفعّال لأدوات العزل (وما إذا كان مصدره الوكيل/العمومي/الافتراضي)
- بوابات الوضع المرتفع ومسارات مفاتيح الإصلاح
العزل: أين تعمل الأدوات
يتحكم agents.defaults.sandbox.mode بالعزل:
"off": يعمل كل شيء على المضيف."non-main": الجلسات غير الرئيسية فقط تكون معزولة (سبب "مفاجأة" شائع للمجموعات/القنوات)."all": يكون كل شيء معزولًا.
راجع العزل للاطلاع على المصفوفة الكاملة (النطاق، وتركيبات مساحة العمل، والصور).
تركيبات الربط (فحص أمني سريع)
docker.bindsيخترق نظام ملفات العزل: كل ما تركبه يكون مرئيًا داخل الحاوية بالوضع الذي تحدده (:roأو:rw).- الافتراضي هو القراءة والكتابة إذا حذفت الوضع؛ فضّل
:roللمصدر/الأسرار. scope: "shared"يتجاهل تركيبات كل وكيل على حدة (تُطبّق التركيبات العمومية فقط).- يتحقق OpenClaw من مصادر الربط مرتين: أولًا على مسار المصدر المطبّع، ثم مرة أخرى بعد الحل عبر أعمق أصل موجود. لا تتجاوز عمليات الخروج عبر أصل رابط رمزي فحوصات المسارات المحظورة أو الجذور المسموح بها.
- تُفحص مسارات الأوراق غير الموجودة بأمان أيضًا. إذا كان
/workspace/alias-out/new-fileيُحل عبر أصل مرتبط رمزيًا إلى مسار محظور أو خارج الجذور المسموح بها المهيأة، يُرفض الربط. - ربط
/var/run/docker.sockيمنح العزل فعليًا تحكمًا بالمضيف؛ لا تفعل ذلك إلا عن قصد. - وصول مساحة العمل (
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 - سياسة أدوات العزل (تُطبّق فقط عند العزل):
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).
مجموعات الأدوات (اختصارات)
تدعم سياسات الأدوات (العمومية، الوكيل، العزل) إدخالات group:* التي تتوسع إلى عدة أدوات:
{
tools: {
sandbox: {
tools: {
allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"],
},
},
},
}
المجموعات المتاحة:
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:heartbeat_respond,cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:agents:agents_list,update_plangroup:media:image,image_generate,music_generate,video_generate,ttsgroup:openclaw: كل أدوات OpenClaw المضمنة (باستثناء Plugins المزوّد)
الوضع المرتفع: "التشغيل على المضيف" لـ exec فقط
لا يمنح الوضع المرتفع أدوات إضافية؛ إنه يؤثر فقط في exec.
- إذا كنت معزولًا، فإن
/elevated on(أوexecمعelevated: true) يعمل خارج العزل (قد تظل الموافقات مطلوبة). - استخدم
/elevated fullلتخطي موافقات exec للجلسة. - إذا كنت تعمل مباشرة بالفعل، فالوضع المرتفع بلا أثر عمليًا (مع أنه ما زال محكومًا ببوابات).
- الوضع المرتفع ليس محدد النطاق حسب Skills ولا يتجاوز السماح/الرفض للأدوات.
- لا يمنح الوضع المرتفع تجاوزات عشوائية بين المضيفات من
host=auto؛ بل يتبع قواعد هدف exec العادية ولا يحافظ علىnodeإلا عندما يكون الهدف المهيأ/هدف الجلسة هوnodeبالفعل. /execمنفصل عن الوضع المرتفع. إنه يضبط فقط افتراضات exec لكل جلسة للمرسلين المصرح لهم.
البوابات:
- التمكين:
tools.elevated.enabled(واختياريًاagents.list[].tools.elevated.enabled) - قوائم السماح للمرسلين:
tools.elevated.allowFrom.<provider>(واختياريًاagents.list[].tools.elevated.allowFrom.<provider>)
راجع الوضع المرتفع.
إصلاحات "سجن العزل" الشائعة
"الأداة X محظورة بواسطة سياسة أدوات العزل"
مفاتيح الإصلاح (اختر واحدًا):
- تعطيل العزل:
agents.defaults.sandbox.mode=off(أو لكل وكيلagents.list[].sandbox.mode=off) - السماح بالأداة داخل العزل:
- أزلها من
tools.sandbox.tools.deny(أو لكل وكيلagents.list[].tools.sandbox.tools.deny) - أو أضفها إلى
tools.sandbox.tools.allow(أو قائمة السماح لكل وكيل)
- أزلها من
"ظننت أن هذه رئيسية، فلماذا هي معزولة؟"
في وضع "non-main"، مفاتيح المجموعة/القناة ليست رئيسية. استخدم مفتاح الجلسة الرئيسية (الذي يعرضه sandbox explain) أو بدّل الوضع إلى "off".
ذو صلة
- العزل -- مرجع العزل الكامل (الأوضاع، النطاقات، الواجهات الخلفية، الصور)
- العزل والأدوات متعددة الوكلاء -- التجاوزات لكل وكيل والأسبقية
- الوضع المرتفع