Asosiy tarkibga o'tish

Shlyuzga tegishli juftlashuv (Variant B)

Shlyuzga tegishli juftlashuvda, qaysi tugunlarga qo‘shilish ruxsat etilishini belgilovchi yagona haqiqat manbai Shlyuz hisoblanadi. UI’lar (macOS ilovasi, kelajakdagi mijozlar) faqat kutilayotgan so‘rovlarni tasdiqlash yoki rad etish uchun frontend vazifasini bajaradi. Muhim: WS tugunlari connect vaqtida qurilma juftlashuvi (rol node) dan foydalanadi. node.pair.* alohida juftlashuv ombori bo‘lib, WS handshake’ni cheklamaydi. Faqatgina aniq node.pair.* ni chaqirgan mijozlargina ushbu oqimdan foydalanadi.

Tushunchalar

  • Kutilayotgan so‘rov: tugun qo‘shilishni so‘radi; tasdiqlash talab etiladi.
  • Juftlangan tugun: tasdiqlangan va autentifikatsiya tokeni berilgan tugun.
  • Transport: Shlyuz WS endpoint’i so‘rovlarni uzatadi, ammo a’zolikni hal qilmaydi. (Meros TCP ko‘prigi qo‘llab-quvvatlashi eskirgan/olib tashlangan.)

Juftlashuv qanday ishlaydi

  1. Tugun Shlyuz WS ga ulanadi va juftlashuvni so‘raydi.
  2. Shlyuz kutilayotgan so‘rovni saqlaydi va node.pair.requested hodisasini chiqaradi.
  3. Siz so‘rovni tasdiqlaysiz yoki rad etasiz (CLI yoki UI orqali).
  4. Tasdiqlanganda, Shlyuz yangi token chiqaradi (qayta juftlashuvda tokenlar aylantiriladi).
  5. Tugun token yordamida qayta ulanadi va endi “juftlangan” bo‘ladi.
Kutilayotgan so‘rovlar 5 daqiqadan so‘ng avtomatik ravishda muddati o‘tadi.

CLI ish jarayoni (headless uchun qulay)

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 juftlangan/ulangan tugunlar va ularning imkoniyatlarini ko‘rsatadi.

API yuzasi (shlyuz protokoli)

Hodisalar:
  • node.pair.requested — yangi kutilayotgan so‘rov yaratilganda chiqariladi.
  • node.pair.resolved — so‘rov tasdiqlanganda/rad etilganda/muddati o‘tganda chiqariladi.
Metodlar:
  • node.pair.request — kutilayotgan so‘rovni yaratish yoki qayta ishlatish.
  • node.pair.list — kutilayotgan + juftlangan tugunlarni ro‘yxatlash.
  • node.pair.approve — kutilayotgan so‘rovni tasdiqlash (token chiqaradi).
  • node.pair.reject — kutilayotgan so‘rovni rad etish.
  • node.pair.verify{ nodeId, token } ni tekshirish.
Eslatmalar:
  • node.pair.request har bir tugun uchun idempotent: takroriy chaqiruvlar bir xil kutilayotgan so‘rovni qaytaradi.
  • Tasdiqlash har doim yangi token yaratadi; node.pair.request dan hech qachon token qaytarilmaydi.
  • So‘rovlar avtomatik tasdiqlash oqimlari uchun ishora sifatida silent: true ni o‘z ichiga olishi mumkin.

Avtomatik tasdiqlash (macOS ilovasi)

macOS ilovasi quyidagi hollarda ixtiyoriy ravishda jim tasdiqlashga urinishi mumkin:
  • so‘rov silent deb belgilangan bo‘lsa va
    1. ilova xuddi shu foydalanuvchi yordamida shlyuz xostiga SSH ulanishini tekshirishi mumkin.
  1. Agar jim tasdiqlash muvaffaqiyatsiz bo‘lsa, u odatiy “Approve/Reject” so‘roviga qaytadi.

3. Saqlash (mahalliy, xususiy)

  1. Juftlash holati Gateway holat katalogida saqlanadi (standart ~/.openclaw):
  • ~/.openclaw/nodes/paired.json
  • ~/.openclaw/nodes/pending.json
  1. Agar OPENCLAW_STATE_DIR ni qayta belgilasangiz, nodes/ papkasi ham u bilan birga ko‘chadi.
  2. Xavfsizlik eslatmalari:
    1. Tokenlar maxfiy hisoblanadi; paired.json ni sezgir ma’lumot sifatida ko‘ring.
    1. Tokenni aylantirish qayta tasdiqlashni talab qiladi (yoki tugun yozuvini o‘chirishni).

11. Transport xatti-harakati

    1. Transport holatsiz; u a’zolikni saqlamaydi.
    1. Agar Gateway oflayn bo‘lsa yoki juftlash o‘chirilgan bo‘lsa, tugunlar juftlasha olmaydi.
    1. Agar Gateway masofaviy rejimda bo‘lsa, juftlash baribir masofaviy Gateway omboriga qarshi amalga oshiriladi.