Menü Çubuğu Durum Mantığı
Neler gösterilir
- Mevcut ajan çalışma durumu, menü çubuğu simgesinde ve menünün ilk durum satırında gösterilir.
- Çalışma aktifken sağlık durumu gizlenir; tüm oturumlar boşta olduğunda yeniden görünür.
- Menüdeki “Nodes” bloğu, istemci/varlık girdileri değil, yalnızca cihazları (
node.listaracılığıyla eşleştirilmiş düğümler) listeler. - Sağlayıcı kullanım anlık görüntüleri mevcut olduğunda Context altında bir “Usage” bölümü görünür.
Durum modeli
- Oturumlar: olaylar
runId(çalışma başına) ile birlikte yüktesessionKeyiçerir. “Ana” oturumun anahtarımain’tür; yoksa en son güncellenen oturuma geri dönülür. - Öncelik: ana oturum her zaman kazanır. Ana aktifse durumu hemen gösterilir. Ana boşta ise en son aktif olan ana‑olmayan oturum gösterilir. Etkinlik sırasında ileri‑geri geçiş yapılmaz; yalnızca mevcut oturum boşta olduğunda veya ana aktif hale geldiğinde geçiş yapılır.
- Etkinlik türleri:
job: üst düzey komut yürütme (state: started|streaming|done|error).tool:phase: start|resultvetoolNameilemeta/args.
IconState enum (Swift)
idleworkingMain(ActivityKind)workingOther(ActivityKind)overridden(ActivityKind)(debug geçersiz kılma)
ActivityKind → glif
exec→ 💻read→ 📄write→ ✍️edit→ 📝attach→ 📎- varsayılan → 🛠️
Görsel eşleme
idle: normal critter.workingMain: glifli rozet, tam renk tonu, “çalışıyor” bacak animasyonu.workingOther: glifli rozet, kısık renk tonu, koşuşturma yok.overridden: etkinlikten bağımsız olarak seçilen glif/renk tonu kullanılır.
Durum satırı metni (menü)
- Çalışma aktifken:
<Session role> · <activity label>- Örnekler:
Main · exec: pnpm test,Other · read: apps/macos/Sources/OpenClaw/AppState.swift.
- Örnekler:
- Boştayken: sağlık özetine geri döner.
Olay alımı
- Kaynak: control‑channel
agentolayları (ControlChannel.handleAgentEvent). - Ayrıştırılan alanlar:
- Başlatma/durdurma için
data.stateile birliktestream: "job". data.phase,nameve isteğe bağlımeta/argsilestream: "tool".
- Başlatma/durdurma için
- Etiketler:
exec:args.command’nın ilk satırı.read/write: kısaltılmış yol.edit:meta/diff sayımlarından çıkarılan değişiklik türüyle birlikte yol.- yedek: araç adı.
Debug geçersiz kılma
- Ayarlar ▸ Debug ▸ “Icon override” seçici:
System (auto)(varsayılan)Working: main(araç türüne göre)Working: other(araç türüne göre)Idle
@AppStorage("iconOverride")ile saklanır;IconState.overridden’ya eşlenir.
Test kontrol listesi
- Ana oturum işini tetikleyin: simgenin hemen değiştiğini ve durum satırının ana etiketi gösterdiğini doğrulayın.
- Ana boşta iken ana‑olmayan oturum işini tetikleyin: simge/durum ana‑olmayanı gösterir; bitene kadar sabit kalır.
- Diğeri aktifken anayı başlatın: simge anında ana’ya döner.
- Hızlı araç patlamaları: rozetin titremediğinden emin olun (araç sonuçlarında TTL toleransı).
- Tüm oturumlar boşta olduğunda sağlık satırı yeniden görünür.