Ir al contenido

Barra de menús

  • Mostramos el estado de trabajo actual del agente en el icono de la barra de menús y en la primera fila de estado del menú.
  • El estado de salud se oculta mientras hay trabajo activo; vuelve a aparecer cuando todas las sesiones están inactivas.
  • El bloque “Nodes” en el menú lista solo dispositivos (nodos emparejados a través de node.list), no entradas de cliente/presencia.
  • Aparece una sección “Usage” (Uso) debajo de Contexto cuando hay instantáneas de uso del proveedor disponibles.
  • Sesiones: los eventos llegan con runId (por ejecución) más sessionKey en el payload. La sesión “principal” es la clave main; si está ausente, recurrimos a la sesión actualizada más recientemente.
  • Prioridad: la principal siempre gana. Si la principal está activa, su estado se muestra inmediatamente. Si la principal está inactiva, se muestra la sesión no principal activa más reciente. No cambiamos de un lado a otro a mitad de la actividad; solo cambiamos cuando la sesión actual pasa a inactiva o la principal se vuelve activa.
  • Tipos de actividad:
    • job: ejecución de comandos de alto nivel (state: started|streaming|done|error).
    • tool: phase: start|result con toolName y meta/args.
  • idle
  • workingMain(ActivityKind)
  • workingOther(ActivityKind)
  • overridden(ActivityKind) (anulación de depuración)
  • exec → 💻
  • read → 📄
  • write → ✍️
  • edit → 📝
  • attach → 📎
  • predeterminado → 🛠️
  • idle: criatura normal.
  • workingMain: insignia con glifo, tinte completo, animación de pata “trabajando”.
  • workingOther: insignia con glifo, tinte silenciado, sin movimiento rápido.
  • overridden: usa el glifo/tinte elegido independientemente de la actividad.
  • Mientras el trabajo está activo: <Session role> · <activity label>
    • Ejemplos: Main · exec: pnpm test, Other · read: apps/macos/Sources/OpenClaw/AppState.swift.
  • Cuando está inactivo: vuelve al resumen de estado.
  • Fuente: eventos agent del control‑channel (ControlChannel.handleAgentEvent).
  • Campos analizados:
    • stream: "job" con data.state para iniciar/detener.
    • stream: "tool" con data.phase, name, meta/args opcionales.
  • Etiquetas:
    • exec: primera línea de args.command.
    • read/write: ruta abreviada.
    • edit: ruta más tipo de cambio inferido de meta/recuentos de diferencias.
    • alternativo (fallback): nombre de la herramienta.
  • Configuración ▸ Depuración ▸ Selector “Icon override”:
    • System (auto) (predeterminado)
    • Working: main (por tipo de herramienta)
    • Working: other (por tipo de herramienta)
    • Idle
  • Almacenado mediante @AppStorage("iconOverride"); mapeado a IconState.overridden.
  • Activar tarea de sesión principal: verificar que el icono cambie inmediatamente y que la fila de estado muestre la etiqueta principal.
  • Activar tarea de sesión no principal mientras la principal está inactiva: el icono/estado muestra la no principal; se mantiene estable hasta que finaliza.
  • Iniciar la principal mientras otra está activa: el icono cambia instantáneamente a la principal.
  • Ráfagas rápidas de herramientas: asegurar que la insignia no parpadee (gracia TTL en los resultados de herramientas).
  • La fila de estado (Health) vuelve a aparecer una vez que todas las sesiones están inactivas.