macOS companion app
Menü çubuğu
Gösterilenler
- Mevcut ajan çalışma durumu, menü çubuğu simgesinde ve menünün ilk durum satırında görüntülenir.
- Çalışma etkinken sistem durumu gizlenir; tüm oturumlar boşta olduğunda yeniden görünür.
- Kök düzeyindeki "Bağlam" öğesi, oturumları kök menüde genişletmek yerine son oturumların bulunduğu bir alt menü açar.
- Kök menüdeki "Node'lar" bloğu, istemci/varlık girdilerini değil, yalnızca (
node.listkaynağındaki) eşleştirilmiş cihazları listeler. - Sağlayıcı kullanım anlık görüntüleri mevcut olduğunda Bağlam'ın altında kök düzeyinde bir "Kullanım" bölümü, varsa bunun ardından maliyet ayrıntıları görüntülenir.
Durum modeli
- Kaynak:
WorkActivityStore(apps/macos/Sources/OpenClaw/WorkActivityStore.swift). - Olaylar, bir
runIdileControlAgentEventolarak gelir; işleyici (ControlChannel.routeWorkActivity), olay yükündensessionKeydeğerini okur ve bu değer yoksa varsayılan olarak"main"kullanır. - Öncelik: ana oturum (varsayılan olarak
sessionKey == "main") her zaman önceliklidir. Ana oturum etkinse durumu hemen gösterilir. Ana oturum boştaysa bunun yerine en son etkin olan ana oturum dışındaki oturum gösterilir. Depo, etkinlik sırasında geçiş yapmaz; yalnızca mevcut oturum boşa geçtiğinde veya ana oturum etkinleştiğinde geçiş yapar. - Etkinlik türleri:
job: üst düzey komut yürütme (state: started|streaming|done|error|...).tool:nameve isteğe bağlımeta/argsilephase: start|result.
IconState numaralandırması (Swift)
idleworkingMain(ActivityKind)workingOther(ActivityKind)overridden(ActivityKind)(hata ayıklama geçersiz kılması)
ActivityKind -> rozet sembolü
ActivityKind, bir ToolKind (bash, read, write, edit, attach, other) veya yalın bir job sarmalar. Her biri, yaratık simgesinin üzerine çizilen bir SF Symbols rozetine (IconState.badgeSymbolName) eşlenir:
| Tür | Sembol |
|---|---|
bash |
chevron.left.slash.chevron.right |
read |
doc |
write |
pencil |
edit |
pencil.tip |
attach |
paperclip |
other / job |
gearshape.fill |
Görsel eşleme
idle: normal yaratık, rozet yok.workingMain: sembollü rozet, tam renk tonu (.primarybelirginliği), bacaklarda "çalışma" animasyonu.workingOther: sembollü rozet, soluk renk tonu (.secondarybelirginliği), koşturma yok.overridden: gerçek etkinlikten bağımsız olarak seçilen sembolü/renk tonunu kullanır.
Bağlam alt menüsü
- Kök menü, oturum sayısı/durumu içeren tek bir "Bağlam" satırı gösterir; bu satır bir alt menü (
MenuSessionsInjector) açar. - Alt menü başlığı, son 24 saatteki etkin oturum sayısını gösterir.
- Her oturum satırı; token çubuğunu, yaşını, önizlemesini, düşünme/ayrıntılı mod geçişini ve sıfırlama, sıkıştırma ve silme eylemlerini korur.
- Yükleniyor, bağlantı kesildi ve oturum yükleme hatası mesajları Bağlam alt menüsünde görüntülenir.
- Kullanım ve maliyet bölümleri, alt menüyü açmadan bir bakışta görülebilmeleri için Bağlam'ın altında kök düzeyinde kalır.
Durum satırı metni (menü)
- Çalışma etkinken:
<Session role> · <activity label>(MenuContentViewiçinde"\(roleLabel) · \(activity.label)"); burada rol etiketiMainveyaOtherolur. - Boştayken: sistem durumu özetine geri döner.
Olay alımı
- Kaynak:
ControlChannel.routeWorkActivity(from:)tarafından yönlendirilen kontrol kanalıagentolayları. - Ayrıştırılan alanlar:
- Başlatma/durdurma için
data.stateilestream: "job". data.phase,data.nameve isteğe bağlıdata.meta/data.argsilestream: "tool".
- Başlatma/durdurma için
- Araç etiketleri
ToolDisplayRegistry.resolve(name:args:meta:)üzerinden alınır; çözümlenemeyen adlar için ham araç adı kullanılır.
Hata ayıklama geçersiz kılması
- Settings > Debug > "Icon override" seçicisi:
System (auto)(varsayılan)Working: main/Working: other(araç türüne göre: bash, okuma, yazma, düzenleme, diğer)Idle
UserDefaultsaltındakiopenclaw.iconOverrideanahtarında saklanır;IconState.overriddenile eşlenir.
Test kontrol listesi
- Ana oturum işini tetikleyin: simge hemen değişir ve durum satırı ana etiketi gösterir.
- Ana oturum boştayken ana olmayan bir oturum işini tetikleyin: simge/durum ana olmayan oturumu gösterir ve iş tamamlanana kadar sabit kalır.
- Başka bir oturum etkinken ana oturumu başlatın: simge anında ana oturuma geçer.
- Hızlı araç etkinliği serileri: rozet titremez (tamamlanan bir araç temizlenmeden önce 2 saniyelik bekleme aralığı,
WorkActivityStore.toolResultGrace). - Tüm oturumlar boşa geçtiğinde sistem durumu satırı yeniden görünür.
İlgili
Was this useful?