macOS companion app
Menüleiste
Was angezeigt wird
- Der aktuelle Arbeitsstatus des Agenten wird im Menüleistensymbol und in der ersten Statuszeile des Menüs angezeigt.
- Der Systemzustand wird ausgeblendet, solange Arbeit aktiv ist; er wird wieder angezeigt, sobald alle Sitzungen inaktiv sind.
- Ein übergeordneter Eintrag „Kontext“ öffnet ein Untermenü mit den letzten Sitzungen, statt sie im Hauptmenü aufzuklappen.
- Ein Block „Nodes“ im Hauptmenü führt nur gekoppelte Geräte auf (aus
node.list), keine Client-/Präsenzeinträge. - Wenn Momentaufnahmen der Provider-Nutzung verfügbar sind, wird unter „Kontext“ ein übergeordneter Abschnitt „Nutzung“ angezeigt, gefolgt von Kostendetails, sofern verfügbar.
- Schnellchat öffnet den schwebenden Editor der Hauptsitzung; das aktuelle globale Tastaturkürzel wird neben dem Eintrag angezeigt.
Zustandsmodell
- Quelle:
WorkActivityStore(apps/macos/Sources/OpenClaw/WorkActivityStore.swift). - Ereignisse gehen als
ControlAgentEventmit einerrunIdein; der Handler (ControlChannel.routeWorkActivity) liestsessionKeyaus den Ereignisdaten und verwendet standardmäßig"main", wenn der Wert fehlt. - Priorität: Die Hauptsitzung (standardmäßig
sessionKey == "main") hat immer Vorrang. Wenn die Hauptsitzung aktiv ist, wird ihr Zustand sofort angezeigt. Wenn die Hauptsitzung inaktiv ist, wird stattdessen die zuletzt aktive Nebensitzung angezeigt. Der Speicher wechselt nicht während einer laufenden Aktivität; er wechselt nur, wenn die aktuelle Sitzung inaktiv wird oder die Hauptsitzung aktiv wird. - Aktivitätsarten:
job: Ausführung eines übergeordneten Befehls (state: started|streaming|done|error|...).tool:phase: start|resultmitname, optionalmeta/args.
IconState-Enumeration (Swift)
idleworkingMain(ActivityKind)workingOther(ActivityKind)overridden(ActivityKind)(Debug-Überschreibung)
ActivityKind -> Abzeichensymbol
ActivityKind umschließt entweder ein ToolKind (bash, read, write, edit, attach, other) oder ein einfaches job. Jedem Typ ist ein SF-Symbol als Abzeichen zugeordnet, das über dem Tierchensymbol gezeichnet wird (IconState.badgeSymbolName):
| Art | Symbol |
|---|---|
bash |
chevron.left.slash.chevron.right |
read |
doc |
write |
pencil |
edit |
pencil.tip |
attach |
paperclip |
other / job |
gearshape.fill |
Visuelle Zuordnung
idle: normales Tierchen, kein Abzeichen.workingMain: Abzeichen mit Symbol, volle Einfärbung (.primary-Hervorhebung), „Arbeits“-Animation der Beine.workingOther: Abzeichen mit Symbol, gedämpfte Einfärbung (.secondary-Hervorhebung), kein Herumhuschen.overridden: verwendet unabhängig von der tatsächlichen Aktivität das ausgewählte Symbol und die ausgewählte Einfärbung.
Kontext-Untermenü
- Das Hauptmenü zeigt eine Zeile „Kontext“ mit Sitzungsanzahl und -status; sie öffnet ein Untermenü (
MenuSessionsInjector). - Die Kopfzeile des Untermenüs zeigt die Anzahl der aktiven Sitzungen innerhalb der letzten 24 Stunden.
- Jede Sitzungszeile behält ihre Token-Leiste, ihr Alter, ihre Vorschau, den Umschalter für Nachdenken/ausführliche Ausgabe sowie die Aktionen zum Zurücksetzen, Komprimieren und Löschen.
- Meldungen zum Laden, zu einer getrennten Verbindung und zu Fehlern beim Laden von Sitzungen werden im Kontext-Untermenü angezeigt.
- Die Abschnitte zu Nutzung und Kosten verbleiben unter „Kontext“ auf der Hauptebene, damit sie ohne Öffnen des Untermenüs auf einen Blick sichtbar sind.
Text der Statuszeile (Menü)
- Während Arbeit aktiv ist:
<Session role> · <activity label>("\(roleLabel) · \(activity.label)"inMenuContentView), wobei die RollenbezeichnungMainoderOtherlautet. - Bei Inaktivität: greift auf die Zusammenfassung des Systemzustands zurück.
Ereignisaufnahme
- Quelle:
agent-Ereignisse des Steuerungskanals, weitergeleitet durchControlChannel.routeWorkActivity(from:). - Analysierte Felder:
stream: "job"mitdata.statefür Start/Stopp.stream: "tool"mitdata.phase,data.name, optionaldata.meta/data.args.
- Werkzeugbezeichnungen stammen aus
ToolDisplayRegistry.resolve(name:args:meta:); nicht aufgelöste Namen greifen auf den unverarbeiteten Werkzeugnamen zurück.
Debug-Überschreibung
- Settings > Debug > „Icon override“-Auswahl:
System (auto)(Standard)Working: main/Working: other(je Werkzeugart: bash, read, write, edit, other)Idle
- Gespeichert unter dem Schlüssel
openclaw.iconOverrideinUserDefaults; zugeordnet zuIconState.overridden.
Testcheckliste
- Auftrag der Hauptsitzung auslösen: Das Symbol wechselt sofort, und die Statuszeile zeigt die Bezeichnung der Hauptsitzung.
- Auftrag einer Nebensitzung auslösen, während die Hauptsitzung inaktiv ist: Symbol und Status zeigen die Nebensitzung an und bleiben stabil, bis sie abgeschlossen ist.
- Hauptsitzung starten, während eine andere Sitzung aktiv ist: Das Symbol wechselt sofort zur Hauptsitzung.
- Schnelle Werkzeugfolgen: Das Abzeichen flackert nicht (Kulanzzeit von 2s vor dem Entfernen eines abgeschlossenen Werkzeugs,
WorkActivityStore.toolResultGrace). - Die Zeile zum Systemzustand wird wieder angezeigt, sobald alle Sitzungen inaktiv sind.
Verwandte Themen
Was this useful?