تهيئة Sandbox والأدوات متعددة الوكلاء
نظرة عامة
يمكن لكل وكيل في إعداد متعدد الوكلاء أن يمتلك الآن ما يلي:- تهيئة Sandbox (
agents.list[].sandboxتتجاوزagents.defaults.sandbox) - قيود الأدوات (
tools.allow/tools.deny، بالإضافة إلىagents.list[].tools)
- مساعد شخصي بصلاحيات وصول كاملة
- وكلاء للعائلة/العمل مع أدوات مقيّدة
- وكلاء موجهون للعامة داخل sandboxes
setupCommand ضمن sandbox.docker (عالمي أو لكل وكيل) ويعمل مرة واحدة
عند إنشاء الحاوية.
المصادقة لكل وكيل: يقرأ كل وكيل من مخزن المصادقة الخاص به agentDir الموجود في:
agentDir عبر الوكلاء.
إذا أردت مشاركة بيانات الاعتماد، انسخ auth-profiles.json إلى agentDir الخاص بالوكيل الآخر.
لمعرفة كيفية عمل sandboxing أثناء التشغيل، راجع Sandboxing.
ولتصحيح سبب «لماذا هذا محظور؟»، راجع Sandbox vs Tool Policy vs Elevated و openclaw sandbox explain.
أمثلة على التهيئة
المثال 1: وكيل شخصي + وكيل عائلي مقيّد
- وكيل
main: يعمل على المضيف، وصول كامل للأدوات - وكيل
family: يعمل داخل Docker (حاوية واحدة لكل وكيل)، أداةreadفقط
المثال 2: وكيل عمل مع Sandbox مشتركة
المثال 2ب: ملف ترميز عالمي + وكيل مراسلة فقط
- الوكلاء الافتراضيون يحصلون على أدوات الترميز
- وكيل
supportمخصّص للمراسلة فقط (+ أداة Slack)
المثال 3: أوضاع Sandbox مختلفة لكل وكيل
سابقة الإعدادات
عند وجود تهيئات عالمية (agents.defaults.*) وخاصة بالوكيل (agents.list[].*):
تهيئة Sandbox
تتجاوز إعدادات الوكيل الإعدادات العالمية:agents.list[].sandbox.{docker,browser,prune}.*يتجاوزagents.defaults.sandbox.{docker,browser,prune}.*لذلك الوكيل (يُتجاهل عندما يُحلّ نطاق sandbox إلى"shared").
قيود الأدوات
ترتيب التصفية هو:- ملف تعريف الأدوات (
tools.profileأوagents.list[].tools.profile) - ملف تعريف أدوات الموفّر (
tools.byProvider[provider].profileأوagents.list[].tools.byProvider[provider].profile) - سياسة الأدوات العالمية (
tools.allow/tools.deny) - سياسة أدوات الموفّر (
tools.byProvider[provider].allow/deny) - سياسة أدوات خاصة بالوكيل (
agents.list[].tools.allow/deny) - سياسة موفّر الوكيل (
agents.list[].tools.byProvider[provider].allow/deny) - سياسة أدوات Sandbox (
tools.sandbox.toolsأوagents.list[].tools.sandbox.tools) - سياسة أدوات الوكيل الفرعي (
tools.subagents.tools، إن وُجدت)
agents.list[].tools.sandbox.tools، فإنه يستبدل tools.sandbox.tools لذلك الوكيل.
إذا تم تعيين agents.list[].tools.profile، فإنه يتجاوز tools.profile لذلك الوكيل.
تقبل مفاتيح أدوات الموفّر إما provider (مثل google-antigravity) أو provider/model (مثل openai/gpt-5.2).
مجموعات الأدوات (اختصارات)
تدعم سياسات الأدوات (العالمية، الخاصة بالوكيل، وSandbox) إدخالاتgroup:* التي تتوسع إلى عدة أدوات ملموسة:
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
tools.elevated هو الأساس العالمي (قائمة سماح تعتمد على المُرسِل). يمكن لـ agents.list[].tools.elevated تقييد الوضع المُرتفع أكثر لوكلاء محددين (يجب أن يسمح كلاهما).
أنماط التخفيف:
- منع
execللوكلاء غير الموثوقين (agents.list[].tools.deny: ["exec"]) - تجنب إدراج المُرسِلين في قائمة السماح الذين يوجّهون إلى وكلاء مقيّدين
- تعطيل الوضع المُرتفع عالميًا (
tools.elevated.enabled: false) إذا كنت تريد التنفيذ داخل sandbox فقط - تعطيل الوضع المُرتفع لكل وكيل (
agents.list[].tools.elevated.enabled: false) للملفات الحساسة
الترحيل من وكيل واحد
قبل (وكيل واحد):agent.* القديمة بواسطة openclaw doctor؛ ويُفضّل استخدام agents.defaults + agents.list مستقبلًا.
أمثلة على قيود الأدوات
وكيل للقراءة فقط
وكيل تنفيذ آمن (من دون تعديل الملفات)
وكيل للتواصل فقط
مأزق شائع: «non-main»
يعتمدagents.defaults.sandbox.mode: "non-main" على session.mainKey (الافتراضي "main")،
وليس على معرّف الوكيل. تحصل جلسات المجموعات/القنوات دائمًا على مفاتيحها الخاصة،
لذا تُعامَل على أنها non-main وتُوضَع داخل sandbox. إذا أردت ألا يُفعَّل sandbox لوكيل ما أبدًا،
فعيّن agents.list[].sandbox.mode: "off".
الاختبار
بعد تهيئة Sandbox والأدوات متعددة الوكلاء:-
التحقق من حلّ الوكيل:
-
التحقق من حاويات Sandbox:
-
اختبار قيود الأدوات:
- أرسل رسالة تتطلب أدوات مقيّدة
- تحقّق من أن الوكيل لا يستطيع استخدام الأدوات الممنوعة
-
مراقبة السجلات:
استكشاف الأخطاء وإصلاحها
الوكيل غير مُوضَع داخل sandbox رغم mode: "all"
- تحقّق مما إذا كانت هناك
agents.defaults.sandbox.modeعالمية تتجاوز ذلك - تهيئة الوكيل لها أسبقية، لذا عيّن
agents.list[].sandbox.mode: "all"
ما تزال الأدوات متاحة رغم قائمة المنع
- تحقّق من ترتيب تصفية الأدوات: عالمي → وكيل → sandbox → وكيل فرعي
- يمكن لكل مستوى التضييق فقط، وليس إعادة المنح
- تحقّق عبر السجلات:
[tools] filtering tools for agent:${agentId}
الحاوية غير معزولة لكل وكيل
- عيّن
scope: "agent"في تهيئة Sandbox الخاصة بالوكيل - القيمة الافتراضية هي
"session"التي تُنشئ حاوية واحدة لكل جلسة