الأدوار
يتصل عملاء WebSocket في Gateway بدور واحد:operator: عملاء مستوى التحكم مثل CLI، وControl UI، والأتمتة، وعمليات المساعدة الموثوقة.node: مضيفو القدرات مثل macOS أو iOS أو Android أو Node بلا واجهة يعرضون الأوامر عبرnode.invoke.
operator. وتتطلب الطرق الصادرة من Node
دور node.
مستويات النطاق
| النطاق | المعنى |
|---|---|
operator.read | الحالة للقراءة فقط، والقوائم، والكتالوغ، والسجلات، وقراءات الجلسات، واستدعاءات مستوى التحكم الأخرى غير المعدِّلة. |
operator.write | إجراءات المُشغّل المعدِّلة العادية مثل إرسال الرسائل، واستدعاء الأدوات، وتحديث إعدادات Talk/الصوت، وترحيل أوامر Node. يفي أيضاً بـ operator.read. |
operator.admin | وصول إداري إلى مستوى التحكم. يفي بكل نطاقات operator.*. مطلوب لتعديل التكوين، والتحديثات، والخطافات الأصلية، ومساحات الأسماء المحجوزة الحساسة، والموافقات عالية الخطورة. |
operator.pairing | إدارة إقران الأجهزة وNode، بما في ذلك سرد سجلات الإقران أو رموز الأجهزة والموافقة عليها ورفضها وإزالتها وتدويرها وإلغاؤها. |
operator.approvals | واجهات API لموافقات exec وPlugin. |
operator.talk.secrets | قراءة تكوين Talk مع تضمين الأسرار. |
operator.* المستقبلية غير المعروفة تطابقاً دقيقاً ما لم يكن لدى المستدعي
operator.admin.
نطاق الطريقة هو البوابة الأولى فقط
لكل RPC في Gateway نطاق طريقة بأقل امتيازات. يقرر نطاق الطريقة هذا ما إذا كان الطلب يمكنه الوصول إلى المعالج. ثم تطبّق بعض المعالجات فحوصات أشد وقت الموافقة بناءً على الشيء المحدد الذي تتم الموافقة عليه أو تعديله. أمثلة:- يمكن الوصول إلى
device.pair.approveباستخدامoperator.pairing، لكن الموافقة على جهاز مُشغّل لا يمكنها إلا إصدار أو الحفاظ على النطاقات التي يملكها المستدعي بالفعل. - يمكن الوصول إلى
node.pair.approveباستخدامoperator.pairing، ثم يشتق نطاقات موافقة إضافية من قائمة أوامر Node المعلقة. - تكون
chat.sendعادة طريقة ضمن نطاق الكتابة، لكن أوامر/config setو/config unsetالمستمرة تتطلبoperator.adminعلى مستوى الأمر.
موافقات إقران الأجهزة
سجلات إقران الأجهزة هي المصدر الدائم للأدوار والنطاقات الموافق عليها. لا تحصل الأجهزة المقترنة مسبقاً على وصول أوسع بصمت: تؤدي عمليات إعادة الاتصال التي تطلب دوراً أوسع أو نطاقات أوسع إلى إنشاء طلب ترقية جديد معلق. عند الموافقة على طلب جهاز:- لا يحتاج الطلب الذي لا يتضمن دور مُشغّل إلى موافقة نطاق رمز المُشغّل.
- يتطلب طلب دور جهاز غير مُشغّل، مثل
node،operator.admin، حتى عندما يكونdevice.pair.approveقابلاً للوصول باستخدامoperator.pairing. - يتطلب طلب
operator.readأوoperator.writeأوoperator.approvalsأوoperator.pairingأوoperator.talk.secretsأن يمتلك المستدعي تلك النطاقات، أوoperator.admin. - يتطلب طلب
operator.adminالنطاقoperator.admin. - يمكن لطلب إصلاح بلا نطاقات صريحة أن يرث نطاقات رمز المُشغّل الموجودة.
إذا كان ذلك الرمز الموجود ضمن نطاق المسؤول، فستظل الموافقة تتطلب
operator.admin.
operator.pairing.
بالنسبة إلى جلسات رموز الأجهزة المقترنة، تكون الإدارة أيضاً ذاتية النطاق ما لم يكن لدى
المستدعي operator.admin: لا يرى المستدعون غير الإداريين إلا إدخالات الإقران الخاصة بهم،
ولا يمكنهم الموافقة أو الرفض إلا لطلبهم المعلق، ولا يمكنهم تدوير أو إلغاء أو إزالة إلا
إدخال أجهزتهم الخاص.
موافقات إقران Node
يستخدمnode.pair.* القديم مخزن إقران Node منفصلاً مملوكاً لـ Gateway. تستخدم WS Node
إقران الأجهزة مع role: node، لكن مفردات مستوى الموافقة نفسها تنطبق.
يستخدم node.pair.approve قائمة أوامر الطلب المعلق لاشتقاق نطاقات
مطلوبة إضافية:
- طلب بلا أوامر:
operator.pairing - أوامر Node غير exec:
operator.pairing+operator.write system.runأوsystem.run.prepareأوsystem.which:operator.pairing+operator.admin
system.run في Node نفسه.
مصادقة السر المشترك
تُعامل مصادقة رمز/كلمة مرور Gateway المشتركة كوصول مُشغّل موثوق لذلك Gateway. تستعيد أسطح HTTP المتوافقة مع OpenAI، و/tools/invoke، ونقاط نهاية
سجل جلسات HTTP مجموعة نطاقات المُشغّل الافتراضية الكاملة العادية لمصادقة الحامل
بالسر المشترك، حتى إذا أرسل المستدعي نطاقات معلنة أضيق.
لا تزال الأوضاع الحاملة للهوية، مثل مصادقة الوكيل الموثوق أو none للإدخال الخاص،
قادرة على احترام النطاقات الصريحة المعلنة. استخدم Gateways منفصلة للفصل الحقيقي
لحدود الثقة.