الانتقال إلى المحتوى الرئيسي

الإقران المملوك لـ Gateway (الخيار ب)

في الإقران المملوك لـ Gateway، تكون Gateway هي مصدر الحقيقة بشأن العُقد المسموح لها بالانضمام. واجهات المستخدم (تطبيق macOS، العملاء المستقبليون) هي مجرد واجهات أمامية تعتمد أو ترفض الطلبات المعلّقة. مهم: تستخدم عُقد WS إقران الجهاز (الدور node) أثناء connect. يُعدّ node.pair.* مخزن إقران منفصل ولا يقوم بتقييد مصافحة WS. فقط العملاء الذين يستدعون صراحةً node.pair.* يستخدمون هذا التدفق.

المفاهيم

  • طلب معلّق: عُقدة طلبت الانضمام؛ تتطلب موافقة.
  • عُقدة مقترنة: عُقدة تمت الموافقة عليها مع إصدار رمز مصادقة.
  • النقل: نقطة نهاية WS الخاصة بـ Gateway تقوم بتمرير الطلبات لكنها لا تقرر العضوية. (دعم جسر TCP القديم مُهمل/تمت إزالته).

كيفية عمل الإقران

  1. تتصل عُقدة بـ Gateway WS وتطلب الإقران.
  2. تخزّن Gateway طلبًا معلّقًا وتُطلق node.pair.requested.
  3. تقوم بالموافقة على الطلب أو رفضه (عبر CLI أو واجهة المستخدم).
  4. عند الموافقة، تُصدر Gateway رمزًا جديدًا (يتم تدوير الرموز عند إعادة الإقران).
  5. تعاود العُقدة الاتصال باستخدام الرمز وتصبح الآن «مقترنة».
تنتهي صلاحية الطلبات المعلّقة تلقائيًا بعد 5 دقائق.

سير عمل CLI (ملائم للعمل بدون واجهة)

openclaw nodes pending
openclaw nodes approve <requestId>
openclaw nodes reject <requestId>
openclaw nodes status
openclaw nodes rename --node <id|name|ip> --name "Living Room iPad"
يعرض nodes status العُقد المقترنة/المتصلة وقدراتها.

سطح واجهة API (بروتوكول Gateway)

الأحداث:
  • node.pair.requested — يُطلق عند إنشاء طلب معلّق جديد.
  • node.pair.resolved — يُطلق عند اعتماد/رفض/انتهاء صلاحية طلب.
الأساليب:
  • node.pair.request — إنشاء طلب معلّق أو إعادة استخدامه.
  • node.pair.list — سرد العُقد المعلّقة + المقترنة.
  • node.pair.approve — اعتماد طلب معلّق (يُصدر رمزًا).
  • node.pair.reject — رفض طلب معلّق.
  • node.pair.verify — التحقق من { nodeId, token }.
ملاحظات:
  • node.pair.request إجراء متماثل لكل عُقدة: تعيد الاستدعاءات المتكررة نفس الطلب المعلّق.
  • تؤدي الموافقة دائمًا إلى إنشاء رمز جديد؛ ولا يُعاد أي رمز مطلقًا من node.pair.request.
  • قد تتضمن الطلبات silent: true كتلميح لتدفقات الاعتماد التلقائي.

الاعتماد التلقائي (تطبيق macOS)

يمكن لتطبيق macOS اختياريًا محاولة اعتماد صامت عندما:
  • يكون الطلب مُعلّمًا بـ silent، و
  • يستطيع التطبيق التحقق من اتصال SSH بمضيف Gateway باستخدام المستخدم نفسه.
إذا فشل الاعتماد الصامت، يعود إلى مطالبة «اعتماد/رفض» المعتادة.

التخزين (محلي، خاص)

تُخزَّن حالة الإقران ضمن دليل حالة Gateway (الافتراضي ~/.openclaw):
  • ~/.openclaw/nodes/paired.json
  • ~/.openclaw/nodes/pending.json
إذا قمت بتجاوز OPENCLAW_STATE_DIR، ينتقل مجلد nodes/ معه. ملاحظات أمنية:
  • الرموز أسرار؛ تعامل مع paired.json على أنه حساس.
  • يتطلب تدوير الرمز إعادة الاعتماد (أو حذف إدخال العُقدة).

سلوك النقل

  • النقل عديم الحالة؛ لا يخزّن العضوية.
  • إذا كانت Gateway غير متصلة أو كان الإقران معطّلًا، فلن تتمكن العُقد من الإقران.
  • إذا كانت Gateway في وضع بعيد، فسيظل الإقران يحدث مقابل مخزن Gateway البعيد.