sessions_send üzerinden koordinasyon kurduğunda — her oturum diğerleri hakkında varsayımlar oluşturur. Başka bir aktör müdahale ettiği anda bu varsayımlar güncelliğini yitirir. Oturum durumu farkındalığı, müdahaleyi algılayan, etkilenen oturuma bunu bir kez bildiren ve işlem yapmadan önce düşük maliyetle güncel durumu öğrenmesini sağlayan mekanizmadır.
Üç bileşen birlikte çalışır:
- Bir kalıcı sinyal günlüğü, oturum başına seçili durum değişikliklerini kaydeder.
- İzleyiciler, hedef başına imleçleri tutar ve birleştirilmiş tek bir eski durum bildirimi alır.
- Uzlaştırma,
changesSinceilesession_statusüzerinden kesin farkı alır.
Sinyal günlüğü
OpenClaw, izlenen bir oturumda önemli bir değişiklik olduğunda paylaşılan durum veritabanına (session_state_events) türü belirlenmiş bir olay ekler. Olaylar meta veriler ve tek satırlık bir özet taşır; mesaj içeriğini asla taşımaz.
Her olay, aktörünü (
human, agent veya system) belirtir. İptal edilen ve zaman aşımına uğrayan alt çalıştırmalar, kesin sonuç (cancelled, timeout veya error) olay yükünde korunarak başarısızlık olarak kaydedilir.
Bir oturumun durum sürümü, budama sonrasında da korunan kalıcı oturum başına başlıkta izlenen, günlüğündeki en yüksek sıra numarasıdır. Bir oturum değişiklikleri günlüğe kaydettiğinde sessions_list satırları stateVersion değerini içerir; session_status bunu her zaman bildirir.
Yalnızca günlüğe kaydedilen türler bildirim için değil, uzlaştırma geçmişi için bulunur: olağan alt çalıştırma tamamlanma teslimi alt aracı duyurularının sorumluluğunda kalır ve sinyal günlüğü bunu asla yinelemez.
İzleyiciler
İzleyici, bir hedef üzerinde imleç (session_watch_cursors) tutan oturumdur. İmleçler iki kaynaktan gelir:
- Örtük (oluşturma kenarları). Bir oturum alt aracı veya ACP alt oturumu oluşturduğunda, üst oturumun imleci alt oturumun oluşturulma sürümünde otomatik olarak başlatılır. Üst oturumlar hiçbir zaman elle abone olmaz.
- Açık (
sessions_send watch: true). Herhangi bir koordinatör, oluşturmadığı bir hedefi izleyebilir:sessions_sendüzerindewatch: trueiletin ve gönderim başarıyla yönlendirildikten sonra gönderen, mesajı gerçekten alan oturumun izleyicisi olarak kaydedilir. Kayıt, hedefin geçerli durum sürümünde başlar; önceki geçmiş hiçbir zaman bildirim oluşturmaz. Parametre ayarlandığında araç sonucuwatched: true|falsedeğerini bildirir.
session.scope="global" altında paylaşılan global anahtarı aracılar arasında belirsizdir; bu nedenle bu tür oturumlar kalıcı günlüğü ve changesSince değerini alır ancak proaktif bildirim almaz.
İzlemeler kendilerini temizler: imleç satırlarının süresi sinyal günlüğü saklama süresiyle birlikte dolar, izleyici oturumu sıfırlandığında kaldırılır ve iki oturumdan herhangi biriyle birlikte silinir. v1’de izlemeyi bırakma eylemi yoktur.
Oturum kataloğundan benimsenen izlenen oturumlar, sabit bir sıklıkta doğrudan yukarı akış insan etkinliği açısından denetlenir. Algılanan etkinlik, diğer doğrudan insan iletileriyle aynı sinyal günlüğüne ve izleyici akışına girer.
Benimsenmiş bir oturumun yukarı akış kaynağı harici olarak silinirse art arda üç başarısız denetim (yaklaşık üç izleme adımı), izleyicileri için tek bir upstream_missing sinyali oluşturur ve yukarı akış bağlantısını kaldırır. Katalog oturumunu yeniden sürdürmek yeni bir bağlantı oluşturur.
Bildirimler: çok değil, bir tane
Bildirime uygun bir olay gerçekleştiğinde ve izleyicinin imleci geride olduğunda izleyici, bir sonraki iletisinde tek bir sistem bildirimi alır:- İzleyici/hedef çifti başına bir bekleyen bildirim. Bildirim metni bekleme sırasında bayt düzeyinde sabit kalır ve sistem olayı kuyruğu bunu tekilleştirir; böylece aynı hedefteki yirmi hızlı değişiklik bile izleyicinin isteminde yalnızca tek bir satır oluşturur.
- Dondurulmuş filigran. İmleç, bir bildirim kuyruğa alındığında bildirilen konumunu dondurur. Sonraki önemli olaylar yalnızca önemli değişiklik filigranını ilerletir; yeniden bildirim oluşturmaz.
- Boşaltmada onaylama, yalnızca araya giren çalışma için yeniden açma. İzleyicinin iletisi bildirimi tükettiğinde imleç ilerler. Kuyruğa alma ile boşaltma arasında başka önemli olaylar geldiyse kalan bölüm için tam olarak bir yeni bildirim açılır.
- Kendi kendini engelleme. Bir izleyici, kendisinin neden olduğu olaylar hakkında hiçbir zaman bilgilendirilmez.
- Yeniden başlatma kurtarması. Bekleyen bildirimler bellek içi bir kuyrukta bulunur; başlangıç taraması, bir Gateway yeniden başlatıldıktan sonra bunları kalıcı imleçlerden yeniden oluşturur.
Uzlaştırma
Bildirim, izleyiciye tam olarak ne yapması gerektiğini söyler.changesSince: <version> ile session_status, herhangi bir imleci ilerletmeden bu sürümden sonraki türü belirlenmiş olayları (en fazla 200) döndürür:
historyGap: true, istenen sürümün saklanan geçmişten daha eski olduğu anlamına gelir; yanıtı kesin bir fark olarak değerlendirmek yerine tüm oturum durumunu (sessions_history, session_status) yenileyin. Boşluk sinyali kesindir: sıra numarası aritmetiğinden çıkarılmaz, oturum başına budanmış bir filigrandan gelir.
Depolama ve sınırlar
Geçmiş, paylaşılan durum veritabanında tutulur ve 30 gün ile 50.000 satırla sınırlandırılır; oturum başına başlıklar budama sonrasında monoton kalır. Kayıt işlemi en iyi çaba esasına dayanır; başarısız bir ekleme günlüğe kaydedilir ve kaynak iletiyi asla başarısız kılmaz. Bu nedenlestateVersion işlemsel bir değişiklik verisi yakalama sürümü değil, sinyal günlüğü başlığıdır.
Geçerli sınırlar:
- Bildirim teslimi, paylaşılan durum veritabanının tek bir Gateway işlemi tarafından yönetildiğini varsayar. Birden fazla Gateway kalıcı günlüğü ve
changesSincedeğerini paylaşır ancak v1, işlemler arasında bildirim göndermez. - Compaction olayları, gömülü çalışma zamanının Compaction sahiplerini kapsar; yalnızca yerel altyapıda gerçekleşen Compaction tam olarak günlüğe kaydedilmez.
- İptal edilen sonuç yükü ayrıntısı şu anda ACP alt çalıştırmaları tarafından üretilir; yerel alt aracı iptalleri genel başarısızlık olarak gösterilir.
- Yukarı akış kendi yankısını algılama, normalleştirilmiş kullanıcı metnini karşılaştırır. Oturumun OpenClaw tarafındaki en son 10 kullanıcı mesajından biriyle eşleşen harici bir istem, kendi yankısı olarak değerlendirilir.
- Her sıklık için 1 MiB tarama sınırından büyük tek bir yerel Claude JSONL satırı, v1’de söz konusu oturumun imlecini engeller; sınıflandırılmamış baytlar hiçbir zaman atlanmaz.
- Eşleştirilmiş Node Claude denetimleri, her sıklıkta en son 50 döküm öğesini sınıflandırır. Daha büyük yoğunluklar v1 tarama penceresinin dışında kalabilir.
- Eşleştirilmiş Node Claude geçmiş okumaları kesin bir ileti dizisi bulunamadı sonucu sunmadığından, uzaktaki Claude silme işlemleri v1’de
upstream_missingolarak sınıflandırılmaz. - Benimsenmemiş katalog oturumları v1’de farkındalık katmanının dışında kalır.
- Bu özellikten önce benimsenen oturumlar yukarı akış bağlantısı taşımaz; yukarı akış izlemesini başlatmak için bunları katalogdan bir kez sürdürün.
- Yukarı akış bağlantıları, benimsenen her oturum anahtarının tek bir sahip aracıyla eşleştiğini varsayar (benimseme, varsayılan depo aracısını kullanır). Aynı harici ileti dizisinin birden fazla aracı tarafından benimsenmesi v1’de izlenmez.
İlgili
- Oturum araçları —
sessions_send,session_status,sessions_list - Alt aracılar — oluşturma kenarları ve tamamlanma duyuruları
- Heartbeat — kuyruğa alınan bildirimlerin ana oturumları nasıl uyandırdığı
- Oturum yönetimi — oturum anahtarları, kapsamlar, yaşam döngüsü