Salas de agentes y despacho
Toda funcionalidad de IA que necesita cómputo en la nube corre como un agente LiveKit — un worker Python que se une a la sala TACLINK de la misión como participante bot. Los agentes producen salida estructurada que el resto de la app consume. Escalan a cero cuando la misión termina, por lo que no pagas por cómputo en reposo.
Los cuatro agentes
1. argus-agent (detección de objetos YOLO11)
- Se suscribe a — cada pista de vídeo de drone
(
VIDEO_DRONE_TRACK_ID). - Produce — mensajes de detecciones del canal de datos
{ type: 'detections', participantIdentity, detections[] }. - Tecnología — inferencia YOLO11 + tracking de corto plazo BoT-SORT + re-ID persistente DINOv2 + FAISS.
- Coste — minutos de GPU por stream de drone. Medido por operación.
- Despliegue — una instancia de agente por stream de drone; el scaler gestiona el fan-out.
2. argus-transcription (speech-to-text)
- Se suscribe a — pistas de audio PTT (
AUDIO_PTT_TRACK_ID) en dirección RX. - Produce — mensajes del canal de datos
ptt_transcription(streaming parcial + finalizado). También emite comandos de voz detectados. - Tecnología — Whisper + VAD.
- Coste — por segundo de habla activa. Cero durante silencio.
- Ver — transcripción.
3. argus-copilot (LLM de inteligencia de misión)
- Se suscribe a — transcripciones, flags, telemetría, eventos.
- Produce — alertas escritas a la colección
missions/{id}/copilot_alertsde Firestore. - Tecnología — OpenAI GPT-4o (modelo configurable).
- Coste — coste de API por llamada a OpenAI, contabilizado por operación.
- Ver — alertas de copiloto.
4. argus-mission-report (análisis after-action)
- Ingiere — logs de vuelo, transcripciones de comms, flags, eventos HMS, línea de tiempo.
- Produce — reporte estructurado generado por IA escrito al doc de la misión.
- Tecnología — GPT-4o, prompt de llamada única (contexto de 2-3k tokens).
- Coste — una llamada a OpenAI por ejecución de reporte.
- Se ejecuta — al completar la misión (auto) o bajo demanda desde el editor de reportes.
Identidades de los agentes
Cada agente se une a la sala LiveKit con una identidad de participante en
el formato {uid}|{platform}:
uid— el UID subyacente de Firebase / cuenta de servicio.|a— agente Android.|w— agente Web.|y— agente YOLO.
LiveKitService.extractUid() elimina el sufijo de plataforma al indexar
las detecciones por su UID base, de modo que el tile de stream del drone
pueda correlacionar la salida del agente con el peer originador
independientemente de qué plataforma la produjo.
Cuándo se despachan los agentes
Al activarse la misión con la funcionalidad relevante habilitada:
- Detección por IA → argus-agent se despacha por stream de drone.
- Transcripción → argus-transcription se despacha una vez.
- Copilot → argus-copilot se despacha una vez.
- Reporte de misión → no siempre activo; corre bajo demanda o al completar la misión.
Cada toggle de funcionalidad se establece en el asistente de creación de la misión o se edita a mitad de misión. Desactivarlo desmonta el agente relevante en un minuto.
Ciclo de vida del agente
- Spawn — el scaler solicita un worker, el worker se autentica, se une a la sala.
- Suscribir — el worker se engancha a las pistas que necesita.
- Producir — la salida fluye por canales de datos (o escrituras a Firestore para los casos de alertas / reporte).
- Despawn — al finalizar la misión, o cuando se desactiva la funcionalidad, el worker se desconecta limpiamente.
Visibilidad para los operadores
Los agentes aparecen en el roster de participantes de LiveKit como identidades de bot. Nunca se renderizan como streams de drones o fuentes de cámara. La mayoría de los operadores no los notan — solo ven las salidas (cajas, transcripciones, alertas) aparecer en la UI.
Resolución de problemas
- Sin detecciones mostrándose en un stream de drone — el agente puede haber fallado al engancharse. Revisa la tira master-caution por una alerta de fallo de spawn de agente, o pide a un admin que revise los logs del agent-scaler en Admin → Organización → Integraciones.
- Transcripción en silencio — el agente puede no estar recibiendo audio RX. Verifica que el PTT de otro operador pase (que puedan oírse entre sí) — si sí, la suscripción del agente cayó; el reinicio es manual por ahora.
- Las alertas de copilot se detuvieron — el backend LLM puede estar caído. Revisa Admin → Organización → Uso para conteos recientes de alertas de copilot.