Barra de Menú
Lógica de estado de la barra de menú y qué se muestra a los usuarios
Qué se muestra
- Mostramos el estado de trabajo actual del agente en el icono de la barra de menú y en la primera fila de estado del menú.
- El estado de salud está oculto mientras el trabajo está activo; regresa cuando todas las sesiones están inactivas.
- El bloque "Nodos" en el menú lista solo ''dispositivos'' (nodos emparejados via ''node.list''), no entradas de cliente/presencia.
- Una sección "Uso" aparece bajo Contexto cuando hay disponibles instantáneas de uso del proveedor.
Modelo de estado
- Sesiones: los eventos llegan con ''runId'' (por ejecución) más ''sessionKey'' en el payload. La sesión "main" es la clave ''main''; si está ausente, recurrimos a la sesión actualizada más recientemente.
- Prioridad: main siempre gana. Si main está activo, su estado se muestra inmediatamente. Si main está inactivo, se muestra la sesión no-main activa más recientemente. No alternamos a mitad de actividad; solo cambiamos cuando la sesión actual se vuelve inactiva o main se vuelve activo.
- Tipos de actividad:
- ''job'': ejecución de comando de alto nivel (''state: started|streaming|done|error'').
- ''tool'': ''phase: start|result'' con ''toolName'' y ''meta/args''.
Enum IconState (Swift)
- ''idle''
- ''workingMain(ActivityKind)''
- ''workingOther(ActivityKind)''
- ''overridden(ActivityKind)'' (sobrescritura de depuración)
ActivityKind → glifo
- ''exec'' → 💻
- ''read'' → 📄
- ''write'' → ✍️
- ''edit'' → 📝
- ''attach'' → 📎
- predeterminado → 🛠️
Mapeo visual
- ''idle'': critter normal.
- ''workingMain'': distintivo con glifo, tinte completo, animación de pata "trabajando".
- ''workingOther'': distintivo con glifo, tinte apagado, sin correteo.
- ''overridden'': usa el glifo/tinte elegido sin importar la actividad.
Texto de fila de estado (menú)
- Mientras el trabajo está activo: ''<Rol de sesión> · <etiqueta de actividad>''
- Ejemplos: ''Main · exec: pnpm test'', ''Other · read: apps/macos/Sources/OpenClaw/AppState.swift''.
- Cuando está inactivo: regresa al resumen de salud.
Ingesta de eventos
- Fuente: eventos ''agent'' del canal de control (''ControlChannel.handleAgentEvent'').
- Campos parseados:
- ''stream: "job"'' con ''data.state'' para inicio/parada.
- ''stream: "tool"'' con ''data.phase'', ''name'', opcional ''meta''/''args''.
- Etiquetas:
- ''exec'': primera línea de ''args.command''.
- ''read''/''write'': ruta acortada.
- ''edit'': ruta más tipo de cambio inferido de conteos ''meta''/diff.
- respaldo: nombre de herramienta.
Sobrescritura de depuración
- ''OPENCLAW_MENU_OVERRIDE=exec'' fuerza el icono a mostrar estado de ejecución.
- Útil para probar animaciones y tintes sin necesidad de actividad real.
- Eliminar la variable para volver al comportamiento normal.
PlatformsMacMenubarPage.step08.p4
PlatformsMacMenubarPage.step08.p5
PlatformsMacMenubarPage.step08.p6
PlatformsMacMenubarPage.step09.title
PlatformsMacMenubarPage.step09.p1
PlatformsMacMenubarPage.step09.p2
PlatformsMacMenubarPage.step09.p3
PlatformsMacMenubarPage.step09.p4
PlatformsMacMenubarPage.step09.p5