الانتقال إلى المحتوى
الأدلة

نطاقات المشغّل في OpenClaw

النطاقات read وwrite وadmin وpairing وapprovals وquestions وtalk، وأدوار المشغّل المسماة مع سياسات الجلسات والوكلاء والنطاقات والبيئة المعزولة، ومنح النطاقات حسب الهوية، والحواجز على مستوى الطرق، وموافقات الإقران التي لا يمكنها إصدار أكثر مما يملكه الموافق

مدة القراءة: ⁨8⁩ د

يتصل كل عميل WebSocket في gateway بأحد دورين، operator أو node، ثم تتحقق كل طريقة من طرق operator من نطاق. وصفحة النطاقات هي خريطة ذلك الحاجز الثاني: ماذا يعني كل نطاق، وكيف تضع الأدوار المسماة سقفًا لها، وكيف تكتسبها هوية موثقة، ولماذا لا تمنح الموافقة على وصول شخص آخر أبدًا أكثر مما تملكه أنت. وهي تصرح أيضًا بأن لا شيء من ذلك يعد عزلًا بين المستأجرين.

الأدوار ومستويات النطاقات

  • الدور operator هو دور مستوى التحكم المخصص لسطر الأوامر (CLI) وControl UI والأتمتة والأدوات المساعدة الموثوقة، والدور node هو دور مضيف القدرات المخصص لأجهزة macOS وiOS وAndroid والأجهزة المضيفة بلا واجهة رسومية التي تعرض أوامر عبر node.invoke؛ وتتطلب طرق RPC الخاصة بالمشغّل الدور operator، وتتطلب الطرق الصادرة من العُقد الدور node.
  • يغطي operator.read الحالة والقوائم والكتالوج والسجلات وقراءة الجلسات وتشخيصات التدقيق المحفوظة؛ ويغطي operator.write إرسال الرسائل واستدعاء الأدوات وإعدادات talk والصوت وترحيل أوامر العُقد، ويفي أيضًا بمتطلبات read؛ ويفي operator.admin بكل نطاقات المشغّل، وهو مطلوب لتعديل الإعدادات والتحديثات والخطافات الأصلية ومساحات الأسماء المحجوزة والموافقات عالية الخطورة.
  • يدير operator.pairing إقران الأجهزة والعُقد، ويدير operator.approvals واجهات API لموافقات التنفيذ والمكونات الإضافية، ويدير operator.questions الأسئلة التفاعلية، وينشئ operator.talk جلسات Talk ويوجهها ويغلقها دون وصول عام للكتابة (ويفي write به أيضًا)، ويقرأ operator.talk.secrets إعدادات Talk مع أسرارها؛ وتحتاج النطاقات المستقبلية غير المعروفة إلى تطابق تام ما لم يكن المستدعي يملك admin مسبقًا.
  • إدارة اتصال GitHub الشخصي هي الاستثناء الوحيد ذو النطاق الذاتي من سلوك القراءة فقط: فهي تحتاج إلى operator.read إضافة إلى الملف الشخصي الدائم المصادق عليه بعينه، بحيث لا يستطيع الشخص الربط أو الاستطلاع أو الفصل إلا لحسابه الخاص، بينما تبقى تغييرات GitHub على مستوى النظام ولكل وكيل من صلاحيات admin، ويبقى النشر من صلاحيات write مع تفويض الجلسة.
تتحكم نطاقات المشغّل في ما يستطيع عميل Gateway فعله بعد المصادقة.

الأدوار المسماة ومنح الهوية

تربط gateways الخاصة بالفرق الملفات الشخصية الدائمة المصادق عليها بأدوار مسماة ضمن gateway.roles، ويجمع كل دور أربع سياسات مغلقة: الوصول إلى جلسات الآخرين (none أو view أو suggest أو write)، والوكلاء المتاحين لإنشاء الجلسات والتشغيل (قائمة أو نجمة أو مصفوفة فارغة)، ومجموعة النطاقات القصوى، وما إذا كانت الجلسات الجديدة تتطلب بيئة معزولة. يسند users.setRole دورًا ويغلق فورًا اتصالات ذلك الملف الشخصي، ويصبح gateway.roles.default إلزاميًا بمجرد وجود أدوار، وعندما تكون الأدوار مضبوطة لا يعود المشغّلون المصادق عليهم بالهوية يتلقون رموز أجهزة أو رموز تمهيد قابلة لإعادة الاستخدام، لأنها غير مرتبطة بشخص. والبيئة المعزولة الإلزامية معزولة لكل منشئ جلسة، وتخفض مساحة العمل من القراءة والكتابة إلى القراءة فقط مع تحذير، وتختم بهوية المنشئ ختمًا غير قابل للتغيير قبل التشغيل الأول، وترثها الجلسات الفرعية المفوضة، ولا ترجع أبدًا إلى gateway أو إلى عقدة، ولا يمكن تجاوزها بالوضع elevated أو بتجاوزات مضيف التنفيذ أو بأهداف المضيف المضبوطة. ثم يمنح gateway.auth.identityScopes النطاقات لهويات موثقة صادرة عن مصادقة الخادم الوسيط الموثوق أو عن Tailscale WhoIs، مع مطابقة مفاتيح البريد الإلكتروني دون تمييز لحالة الأحرف؛ أما اتصالات الرمز وكلمة المرور والاتصالات بلا مصادقة فلا تحمل هوية ولا تتلقى أي منح، واتصالات العُقد لا تتلقاها أبدًا.

حاجز الطريقة وما يليه

  • لكل RPC نطاق طريقة بأقل الامتيازات يستنتج قبل التوجيه: تحتاج الطريقة agent إلى write للجولات العادية وإلى admin لأوامر دورة الحياة new أو reset؛ وتحتاج node.invoke إلى write للترحيل العادي وإلى admin عند ترحيل الخادم الوسيط للمتصفح أو سرد المجلدات أو الرفع عبر الطرفية إلى عقدة؛ وتحتاج sessions.create إلى write للإنشاء العادي وإلى admin للجلسات المتخفية أو لأي execNode؛ ويستنتج إرسال الجلسات ونقلها نطاقهما من الهدف، write للأجهزة وadmin للملفات الشخصية.
  • ثم تطبق المعالجات فحوصًا أشد على الشيء المحدد: يمكن الوصول إلى device.pair.approve بالنطاق pairing، لكن الموافقة على جهاز operator لا يمكنها إلا إصدار نطاقات يملكها المستدعي مسبقًا أو الإبقاء عليها، ويستنتج node.pair.approve نطاقات إضافية من الأوامر المعلنة للعقدة المعلقة (write للأوامر العادية، وadmin لأوامر system.run أو الخادم الوسيط للمتصفح أو سرد المجلدات أو موافقات التنفيذ)، ويحتاج أمرا الدردشة config set وunset إلى admin إضافة إلى ما يتطلبه إرسال الدردشة.
  • تحسم صلاحية الاتصال بالترتيب: أولًا تضع الترويسة x-openclaw-scopes سقفًا لطلبات تسجيل الجهاز أو ترقيته، ثم يضم إليها منح الهوية المطابق من جهة الخادم، ثم تضع الترويسة سقفًا للاتحاد النهائي (غيابها يعني لا سقف، ووجودها فارغة يعني لا نطاقات)، ثم يقاطع الدور المسمى الفعال النتيجة مع سقفه؛ وتغذي النتيجة كلًا من hello.auth.scopes وتفويض الطرق.

الإقران في OpenClaw هو المكان الذي تودع فيه هذه الموافقات، أما ضوابط أمان gateway في OpenClaw فهي مجموعة الضوابط الأوسع التي تنتمي إليها النطاقات.

ما ليست عليه النطاقات

تكرر الصفحة حدًا واحدًا في عدة مواضع: النطاقات حاجز حماية على مستوى التحكم داخل مجال مشغّل gateway واحد موثوق، وليست عزلًا بين مستأجرين متعددين قد يكون بعضهم معاديًا. تنظم الأدوار المسماة التعاون داخل هذا المجال؛ وتبقى طرق تدقيق التشخيص واجهات قراءة للمجال المشترك لا تصفى حسب دور الجلسة؛ ولا يزال operator.write يخول استدعاء الأدوات وترحيل العُقد على مستوى gateway كله؛ وتعامل مصادقة السر المشترك بالرمز أو كلمة المرور على أنها وصول مشغّل موثوق يعيد مجموعة النطاقات الافتراضية الكاملة على الواجهات المتوافقة مع OpenAI ومسار استدعاء الأدوات ونقاط نهاية سجل الجلسات، حتى عندما يعلن المستدعي نطاقات أضيق. وللفصل القوي بين الأشخاص أو الفرق أو الأجهزة، الحل هو gateways منفصلة تحت مستخدمين منفصلين في نظام التشغيل أو على أجهزة مضيفة منفصلة. يوضح دليل البيئة المعزولة في OpenClaw البيئة المعزولة لكل منشئ التي يمكن أن يفرضها دور، ويوضح مقال واجهة HTTP API المتوافقة مع OpenAI في OpenClaw واجهة HTTP التي تنطبق عليها قاعدة السر المشترك.

على Diali

على Diali يشغل كل عميل gateway خاصًا به، وهو الفصل الذي توصي به الوثائق، مع إعدادات محرك تولد من لوحة التحكم وتستبدل عند كل إصدار. OpenClaw المستضاف على Diali يصف المساعد المستضاف، والأمان في Diali يصف الحدود المحيطة بكل محرك.

  • يتضمن write كلًا من read وtalk؛ ويتضمن admin كل شيء.
  • لا تصدر الموافقة أبدًا نطاقات لا يملكها الموافق.
  • النطاقات حاجز حماية وليست عزلًا بين المستأجرين؛ أما العزل فتوفره gateways منفصلة.
ابدأ الآن

كفاك قراءة، ابنِ وكيلك الخاص

جهز وكيلًا، واختر قناة، واجعله يعمل داخل التطبيق المفتوح لديك دائمًا.