Multi-agent
Durum bilgisi
OpenClaw "presence", aşağıdakilerin hafif, mümkün olan en iyi çabayla sunulan bir görünümüdür:
- Gateway’in kendisi ve
- Gateway’e bağlı istemciler (mac uygulaması, WebChat, CLI vb.)
Presence, öncelikli olarak macOS uygulamasının Instances sekmesini oluşturmak ve operatöre hızlı görünürlük sağlamak için kullanılır.
Presence alanları (neler görünür)
Presence girdileri, şunlar gibi alanlara sahip yapılandırılmış nesnelerdir:
instanceId(isteğe bağlı ama önemle önerilir): kararlı istemci kimliği (genellikleconnect.client.instanceId)host: insan tarafından okunabilir ana makine adıip: mümkün olan en iyi çabayla belirlenen 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 bu yana ms)
Üreticiler (presence nereden gelir)
Presence girdileri birden fazla kaynak tarafından üretilir ve birleştirilir.
1) Gateway self girdisi
Gateway, başlatma sırasında her zaman bir "self" girdisi oluşturur; böylece kullanıcı arayüzleri, herhangi bir istemci bağlanmadan önce bile gateway ana makinesini gösterir.
2) WebSocket connect
Her WS istemcisi bir connect isteğiyle başlar. Başarılı el sıkışmadan sonra
Gateway, bu bağlantı için bir presence girdisini ekler veya günceller.
Tek seferlik CLI komutları neden görünmez
CLI genellikle kısa, tek seferlik komutlar için bağlanır. Instances listesini
kalabalıklaştırmamak için client.mode === "cli" bir presence girdisine dönüştürülmez.
3) system-event işaretleri
İstemciler system-event yöntemiyle daha zengin periyodik işaretler gönderebilir. mac
uygulaması bunu ana makine adını, IP’yi ve lastInputSeconds değerini bildirmek için kullanır.
4) Node bağlantıları (role: node)
Bir node, Gateway WebSocket üzerinden role: node ile bağlandığında, Gateway
bu node için bir presence girdisini ekler veya günceller (diğer WS istemcileriyle aynı akış).
Birleştirme + tekilleştirme kuralları (instanceId neden ö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 korunan kararlı bir
instanceId’dir (connect.client.instanceIdiçinden). - Anahtarlar büyük/küçük harfe duyarsızdır.
Bir istemci kararlı bir instanceId olmadan yeniden bağlanırsa,
yinelenen satır olarak görünebilir.
TTL ve sınırlı boyut
Presence bilerek geçicidir:
- TTL: 5 dakikadan eski girdiler budanır
- Maksimum girdi: 200 (önce en eskiler atılır)
Bu, listenin güncel kalmasını sağlar ve sınırsız bellek büyümesini önler.
Uzak/tünel uyarısı (loopback IP’leri)
Bir istemci SSH tüneli / yerel port yönlendirme üzerinden bağlandığında, Gateway
uzak adresi 127.0.0.1 olarak görebilir. İstemcinin bildirdiği 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ı işler ve son güncellemenin yaşına
göre küçük bir durum göstergesi (Etkin/Boşta/Eski) uygular.
Hata ayıklama ipuçları
- Ham listeyi görmek için Gateway’e karşı
system-presenceçağırın. - Yinelenenler görürseniz:
- istemcilerin el sıkışmada kararlı bir
client.instanceIdgönderdiğini doğrulayın - periyodik işaretlerin aynı
instanceIddeğerini kullandığını doğrulayın - bağlantıdan türetilen girdide
instanceIdeksik olup olmadığını kontrol edin (yinelenenler beklenir)
- istemcilerin el sıkışmada kararlı bir
İlgili
Yazma göstergelerinin ne zaman gönderildiği ve nasıl ayarlanacağı.
Giden akış, parçalama ve kanal başına biçimlendirme.
Gateway bileşenleri ve presence güncellemelerini çalıştıran WebSocket protokolü.
connect, system-event ve system-presence için kablo protokolü.