Presence
OpenClaw “presence”, aşağıdakilerin hafif ve en iyi çaba esaslı bir görünümüdür:- Gateway’in kendisi ve
- Gateway’e bağlı istemciler (mac uygulaması, WebChat, CLI vb.)
Presence alanları (görünenler)
Presence girdileri, aşağıdaki gibi alanlara sahip yapılandırılmış nesnelerdir:instanceId(isteğe bağlı ancak güçlü biçimde önerilir): kararlı istemci kimliği (genellikleconnect.client.instanceId)host: insan tarafından okunabilir ana makine adıip: en iyi çaba esaslı IP adresiversion: istemci sürüm dizesideviceFamily/modelIdentifier: donanım ipuçlarımode:ui,webchat,cli,backend,probe,test,node, …lastInputSeconds: “son kullanıcı girdisinden 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 fazla kaynak tarafından üretilir ve birleştirilir.1. Gateway öz girdisi
Gateway, başlatma sırasında her zaman bir “öz” girdisi ekler; böylece herhangi bir istemci bağlanmadan önce bile arayüzlerde gateway ana makinesi görünür.2. WebSocket bağlantısı
Her WS istemcisi birconnect isteğiyle başlar. Başarılı el sıkışma sonrasında
Gateway, bu bağlantı için bir presence girdisini ekler veya günceller.
Neden tek seferlik CLI komutları görünmez
CLI, kısa süreli tek seferlik komutlar için sıkça bağlanır. Instances listesini spam’lememek içinclient.mode === "cli" bir presence girdisine dönüştürülmez.
3. system-event beacon’ları
İstemciler, system-event yöntemi aracılığıyla daha zengin periyodik beacon’lar
gönderebilir. mac uygulaması, ana makine adı, IP ve lastInputSeconds bildirmek için bunu kullanır.
4. Node bağlantıları (rol: node)
Bir node, Gateway WebSocket’i üzerindenrole: node ile bağlandığında Gateway,
o node için bir presence girdisini ekler veya günceller (diğer WS istemcileriyle aynı akış).
Birleştirme + yinelenenleri giderme (neden instanceId önemlidir)
Presence girdileri tek bir bellek içi haritada saklanır:
- Girdiler bir presence anahtarı ile anahtarlanır.
- En iyi anahtar, yeniden başlatmalardan sonra da kalıcı olan kararlı bir
instanceId’dur (connect.client.instanceId’dan). - 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 bilerek geçicidir:- TTL: 5 dakikadan eski girdiler budanır
- Maks. girdi sayısı: 200 (en eskiler önce düşürülür)
Uzak/tünel uyarısı (loopback IP’ler)
Bir istemci SSH tüneli / yerel port yönlendirme üzerinden bağlandığında, Gateway uzak adresi127.0.0.1 olarak görebilir. İstemci tarafından bildirilen iyi bir
IP’nin üzerine yazmamak için loopback uzak adresler 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 (Active/Idle/Stale) uygular.
Hata ayıklama ipuçları
- Ham listeyi görmek için Gateway’e karşı
system-presenceçağrısını 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ı
instanceId’yı kullandığını doğrulayın - bağlantıdan türetilen girdide
instanceId’nin eksik olup olmadığını kontrol edin (bu durumda yinelenenler beklenir)
- istemcilerin el sıkışmada kararlı bir