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 explainopenclaw sandbox explain --session agent:main:mainopenclaw sandbox explain --agent workopenclaw 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. إذا كانexecمسموحًا، فإن حظرwriteأوeditأوapply_patchلا يجعل أوامر الصدفة للقراءة فقط. - يغيّر
/execافتراضات الجلسة فقط للمرسلين المصرح لهم؛ ولا يمنح وصولًا إلى الأدوات. تقبل مفاتيح أدوات المزوّد إماprovider(مثلgoogle-antigravity) أوprovider/model(مثلopenai/gpt-5.4). - تتضمن سجلات Gateway إدخالات تدقيق
agents/tool-policyعندما تزيل خطوة من سياسة الأدوات أدوات أو عندما تحظر سياسة أدوات صندوق العزل استدعاءً. استخدمopenclaw logsلرؤية تسمية القاعدة ومفتاح التهيئة وأسماء الأدوات المتأثرة.
مجموعات الأدوات (اختصارات)
تدعم سياسات الأدوات (العامة، الوكيل، صندوق العزل) إدخالات 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_patchللوكلاء المخصصين للقراءة فقط، احظرgroup:runtimeوكذلك أدوات نظام الملفات المعدّلة ما لم تفرض سياسة نظام ملفات صندوق العزل أو حد مضيف منفصل قيد القراءة فقط.group: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 الخاصة بالمزوّدين)group:plugins: كل الأدوات المحملة والمملوكة لـ Plugin، بما في ذلك خوادم MCP المهيأة المعروضة عبرbundle-mcp
بالنسبة إلى خوادم MCP المعزولة، تكون سياسة أدوات صندوق العزل بوابة سماح ثانية. إذا كان mcp.servers مهيأً لكن الأدوار المعزولة لا تعرض إلا الأدوات المدمجة، فأضف bundle-mcp أو group:plugins أو اسم/نمط أداة MCP مسبوقًا باسم الخادم مثل outlook__send_mail أو outlook__* إلى tools.sandbox.tools.alsoAllow، ثم أعد تشغيل/إعادة تحميل Gateway وأعد التقاط قائمة الأدوات. تستخدم أنماط الخوادم بادئة خادم MCP الآمنة للمزوّد: تتحول الأحرف غير [A-Za-z0-9_-] إلى -، والأسماء التي لا تبدأ بحرف تحصل على بادئة mcp-، وقد تُختصر البادئات الطويلة أو المكررة أو تُلحق بلاحقة.
يفحص openclaw doctor حاليًا هذا الشكل للخوادم التي يديرها OpenClaw في mcp.servers. تستخدم خوادم MCP المحملة من بيانات Plugins المدمجة أو Claude .mcp.json بوابة صندوق العزل نفسها، لكن هذا التشخيص لا يحصي تلك المصادر بعد؛ استخدم إدخالات قائمة السماح نفسها إذا اختفت أدواتها في الأدوار المعزولة.
الوضع المرتفع: "التشغيل على المضيف" الخاص بـ 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(أو سماح لكل وكيل)
- أزلها من
- افحص
openclaw logsبحثًا عن إدخالagents/tool-policy. فهو يسجل وضع صندوق العزل وما إذا كانت قاعدة السماح أو الحظر هي التي حظرت الأداة.
"ظننت أن هذه جلسة رئيسية، فلماذا هي معزولة؟"
في وضع "non-main"، لا تكون مفاتيح المجموعة/القناة رئيسية. استخدم مفتاح الجلسة الرئيسية (المعروض بواسطة sandbox explain) أو غيّر الوضع إلى "off".
ذات صلة
- العزل -- مرجع صندوق العزل الكامل (الأوضاع، النطاقات، الخلفيات، الصور)
- صندوق عزل وأدوات الوكلاء المتعددين -- تجاوزات كل وكيل على حدة والأسبقية
- الوضع المرتفع