Mavjudlik
OpenClaw “presence” — bu yengil, best‑effort ko‘rinish bo‘lib, quyidagilarni aks ettiradi:- Gateway’ning o‘zi, va
- Gateway’ga ulangan klientlar (mac ilovasi, WebChat, CLI va boshqalar)
Presence maydonlari (nimalar ko‘rinadi)
Presence yozuvlari quyidagi kabi maydonlarga ega strukturali obyektlardir:instanceId(ixtiyoriy, lekin qat’iy tavsiya etiladi): barqaror klient identifikatori (odatdaconnect.client.instanceId)host: odamga qulay host nomiip: best‑effort IP manzilversion: klient versiyasi satrideviceFamily/modelIdentifier: apparat bo‘yicha ishoralarmode:ui,webchat,cli,backend,probe,test,node, …lastInputSeconds: “oxirgi foydalanuvchi kiritishidan beri soniyalar” (agar ma’lum bo‘lsa)reason:self,connect,node-connected,periodic, …ts: oxirgi yangilanish vaqti (epoch’dan boshlab ms)
Prodyuserlar (presence qayerdan keladi)
Presence yozuvlari bir nechta manbalar tomonidan yaratiladi va birlashtiriladi.1. Gateway’ning o‘z yozuvi
Gateway ishga tushishda har doim “self” yozuvini yaratadi, shunda hech qanday klient ulanmagan bo‘lsa ham UI’larda gateway host ko‘rinadi.2. WebSocket ulanishi
Har bir WS klientconnect so‘rovi bilan boshlaydi. Handshake muvaffaqiyatli bo‘lgach, Gateway ushbu ulanish uchun presence yozuvini upsert qiladi.
1. Nega bir martalik CLI buyruqlari ko‘rinmaydi
- CLI ko‘pincha qisqa, bir martalik buyruqlar uchun ulanadi. 3. Instances ro‘yxatini spam qilmaslik uchun,
client.mode === "cli"presence yozuviga aylantirilmaydi.
4. 3. system-event mayoqchalari
- Mijozlar
system-eventmetodi orqali boyroq davriy mayoqchalarni yuborishi mumkin. 6. macOS ilovasi bundan xost nomi, IP valastInputSecondsni hisobot qilish uchun foydalanadi.
7. 4. Node ulanadi (rol: node)
- Node Gateway WebSocket orqali
role: nodebilan ulanganda, Gateway ushbu node uchun presence yozuvini upsert qiladi (boshqa WS mijozlari bilan bir xil oqim).
9. Birlashtirish + dublikatlarni olib tashlash qoidalari (instanceId nega muhim)
- Presence yozuvlari bitta xotiradagi xaritada saqlanadi:
-
- Yozuvlar presence kaliti bilan kalitlanadi.
-
- Eng yaxshi kalit — qayta ishga tushirishlardan omon qoladigan barqaror
instanceId(connect.client.instanceIddan).
- Eng yaxshi kalit — qayta ishga tushirishlardan omon qoladigan barqaror
-
- Kalitlar katta-kichik harfga sezgir emas.
- Agar mijoz barqaror
instanceIdsiz qayta ulansa, u dublikat qator sifatida ko‘rinishi mumkin.
15. TTL va cheklangan hajm
- Presence ataylab efemer:
-
- TTL: 5 daqiqadan eski yozuvlar olib tashlanadi
-
- Maks. yozuvlar: 200 (eng eskilari birinchi bo‘lib olib tashlanadi)
- Bu ro‘yxatni yangicha saqlaydi va xotiraning cheksiz o‘sishidan qochadi.
20. Masofaviy/tunnel ogohlantirishi (loopback IP-lar)
- Mijoz SSH tunnel / lokal port forward orqali ulanganda, Gateway masofaviy manzilni
127.0.0.1sifatida ko‘rishi mumkin. 22. Yaxshi mijoz tomonidan xabar qilingan IP ustiga yozib yubormaslik uchun, loopback masofaviy manzillar e’tiborga olinmaydi.
23. Iste’molchilar
24. macOS Instances yorlig‘i
- macOS ilovasi
system-presencechiqishini render qiladi va oxirgi yangilanish yoshiga qarab kichik holat indikatori (Active/Idle/Stale) ni qo‘llaydi.
26. Nosozliklarni tuzatish bo‘yicha maslahatlar
-
- Xom ro‘yxatni ko‘rish uchun Gateway ga
system-presencechaqiruvini yuboring.
- Xom ro‘yxatni ko‘rish uchun Gateway ga
-
- Agar dublikatlarni ko‘rsangiz:
-
- mijozlar handshake paytida barqaror
client.instanceIdyuborayotganini tasdiqlang
- mijozlar handshake paytida barqaror
-
- davriy mayoqchalar xuddi shu
instanceIddan foydalanayotganini tasdiqlang
- davriy mayoqchalar xuddi shu
-
- ulanishdan kelib chiqqan yozuvda
instanceIdyo‘qligini tekshiring (bunday holatda dublikatlar kutiladi)
- ulanishdan kelib chiqqan yozuvda