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": يُعزل كل شيء.
يتحكم agents.defaults.sandbox.workspaceAccess في ما يمكن لبيئة العزل رؤيته: "none" أو "ro" أو "rw".
راجع العزل للاطلاع على المصفوفة الكاملة (النطاق، وعمليات وصل مساحة العمل، والصور).
عمليات الوصل المقيّدة (فحص أمني سريع)
- يخترق
docker.bindsنظام ملفات العزل: كل ما توصله يصبح مرئيًا داخل الحاوية بالوضع الذي تحدده (:roأو:rw). - الوضع الافتراضي هو القراءة والكتابة إذا حذفت الوضع؛ يُفضّل استخدام
:roللمصدر/الأسرار. - يتجاهل
scope: "shared"عمليات الوصل الخاصة بكل وكيل (ولا تُطبّق سوى عمليات الوصل العامة). - يتحقق OpenClaw من مصادر الوصل مرتين: أولًا على مسار المصدر الموحّد، ثم مجددًا بعد حله عبر أعمق سلف موجود. لا تتجاوز عمليات الهروب عبر الأصل ذي الرابط الرمزي فحوصات المسارات المحظورة أو الجذور المسموح بها.
- يستمر التحقق الآمن من المسارات الطرفية غير الموجودة. إذا كان
/workspace/alias-out/new-fileيُحل عبر أصل ذي رابط رمزي إلى مسار محظور أو إلى خارج الجذور المسموح بها المضبوطة، فستُرفض عملية الوصل. - يؤدي وصل
/var/run/docker.sockفعليًا إلى منح بيئة العزل التحكم في المضيف؛ لا تفعل ذلك إلا عن قصد. - الوصول إلى مساحة العمل (
workspaceAccess) مستقل عن أوضاع الوصل.
سياسة الأدوات: الأدوات الموجودة/القابلة للاستدعاء
هناك طبقتان مهمتان:
- ملف الأدوات التعريفي:
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:sessions |
sessions_list، وsessions_history، وsessions_send، وsessions_spawn، وsessions_yield، وsubagents، وsession_status |
group:memory |
memory_search، وmemory_get |
group:web |
web_search، وx_search، وweb_fetch |
group:ui |
browser، وcanvas |
group:automation |
heartbeat_respond، وcron، وgateway |
group:messaging |
message |
group:nodes |
nodes، وcomputer |
group:agents |
agents_list، وget_goal، وcreate_goal، وupdate_goal، وupdate_plan، وskill_workshop |
group:media |
image، وimage_generate، وmusic_generate، وvideo_generate، وtts |
group:openclaw |
معظم أدوات OpenClaw المدمجة (باستثناء أساسيات نظام الملفات ووقت التشغيل read/write/edit/apply_patch/exec/process، وcanvas، وإضافات المزوّد) |
group:plugins |
جميع الأدوات المملوكة للإضافات المحمّلة، بما فيها خوادم MCP المضبوطة والمكشوفة عبر bundle-mcp |
بالنسبة إلى الوكلاء المخصصين للقراءة فقط، احظر group:runtime إلى جانب أدوات نظام الملفات التي تُجري تعديلات، ما لم تفرض سياسة نظام ملفات العزل أو حدود منفصلة للمضيف قيد القراءة فقط.
بالنسبة إلى خوادم 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 المحمّلة من بيانات إضافات مدمجة أو من ملف 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".
ذو صلة
- العزل -- مرجع العزل الكامل (الأوضاع، والنطاقات، والواجهات الخلفية، والصور)
- عزل الوكلاء المتعددين وأدواتهم -- عمليات التجاوز الخاصة بكل وكيل وترتيب الأولوية
- الوضع المرتفع