Presence
OpenClaw “presence”, şu öğelerin hafif ve en iyi çabayla oluşturulan bir görünümüdür:- Ağ Geçidi’nin kendisi ve
- Ağ Geçidi’ne bağlı istemciler (mac uygulaması, WebChat, CLI vb.)
Presence alanları (neler görünür)
Presence girdileri şu gibi alanlara sahip yapılandırılmış nesnelerdir:instanceId(isteğe bağlıdır ama güçlü şekilde önerilir): kararlı istemci kimliği (genellikleconnect.client.instanceId)host: insan dostu ana makine adıip: en iyi çabayla elde edilen IP adresiversion: istemci sürüm dizesideviceFamily/modelIdentifier: donanım ipuçlarımode:ui,webchat,cli,backend,probe,test,node, …lastInputSeconds: “son kullanıcı girişinden bu yana geçen saniye” (biliniyorsa)reason:self,connect,node-connected,periodic, …ts: son güncelleme zaman damgası (epoch’tan beri ms)
Üreticiler (presence nereden gelir)
Presence girdileri birden çok kaynak tarafından üretilir ve birleştirilir.1) Ağ Geçidi self girdisi
Ağ Geçidi, UI’ların herhangi bir istemci bağlanmadan önce bile ağ geçidi ana makinesini göstermesi için başlangıçta her zaman bir “self” girdisi oluşturur.2) WebSocket connect
Her WS istemcisi birconnect isteğiyle başlar. Başarılı el sıkışmadan sonra
Ağ Geçidi bu bağlantı için bir presence girdisini upsert eder.
Tek seferlik CLI komutları neden görünmez
CLI genellikle kısa süreli, tek seferlik komutlar için bağlanır. Instances listesini gereksiz yere doldurmamak içinclient.mode === "cli" bir presence girdisine dönüştürülmez.
3) system-event beacon’ları
İstemciler system-event yöntemi üzerinden daha zengin, periyodik beacon’lar gönderebilir. mac
uygulaması bunu ana makine adı, IP ve lastInputSeconds bildirmek için kullanır.
4) Düğüm bağlantıları (role: node)
Bir düğüm, Ağ Geçidi WebSocket’i üzerinden role: node ile bağlandığında Ağ Geçidi
o düğüm için bir presence girdisini upsert eder (diğer WS istemcileriyle aynı akış).
Birleştirme + yineleme kaldırma kuralları (instanceId neden önemlidir)
Presence girdileri tek bir bellek içi eşlemde saklanır:
- Girdiler bir presence anahtarı ile anahtarlanır.
- En iyi anahtar, yeniden başlatmalarda da kalan kararlı bir
instanceId’dir (connect.client.instanceIdiçinden). - Anahtarlar büyük/küçük harfe duyarsızdır.
instanceId olmadan yeniden bağlanırsa
yinelenen bir satır olarak görünebilir.
TTL ve sınırlı boyut
Presence kasıtlı olarak geçicidir:- TTL: 5 dakikadan eski girdiler budanır
- Maksimum girdi: 200 (önce en eskiler düşürülür)
Uzak/tünel uyarısı (loopback IP’leri)
Bir istemci SSH tüneli / yerel port yönlendirmesi üzerinden bağlandığında Ağ Geçidi uzak adresi127.0.0.1 olarak görebilir. İstemci tarafından bildirilen iyi bir
IP’nin üzerine yazmamak için loopback uzak adresleri yok sayılır.
Tüketiciler
macOS Instances sekmesi
macOS uygulamasısystem-presence çıktısını oluşturur ve son güncellemenin yaşına göre
küçük bir durum göstergesi uygular (Active/Idle/Stale).
Hata ayıklama ipuçları
- Ham listeyi görmek için Ağ Geçidi’ne karşı
system-presenceçağrısı yapın. - Yinelenenler görüyorsanız:
- istemcilerin el sıkışmada kararlı bir
client.instanceIdgönderdiğini doğrulayın - periyodik beacon’ların aynı
instanceIddeğerini kullandığını doğrulayın - bağlantıdan türetilen girdide
instanceIdeksik mi kontrol edin (yinelenenler beklenir)
- istemcilerin el sıkışmada kararlı bir