Saltar al contenido
rubén.garcía
Todos los proyectos
Logo de Jarvis

Jarvis

Asistente personal de escritorio que se maneja con la voz. Lo simple lo resuelve al instante sin LLM; lo complejo lo razona un cerebro con herramientas, y cada acción pasa antes por un candado de seguridad.

Rol
Diseño y desarrollo completo
Estado
En desarrollo activo
Plataformas
Windows · Linux · macOS
Código
Repositorio privado · acceso bajo petición
acciones de escritorio: 24 sencillas y 3 que siempre piden un «sí»
27
local si se quiere: voz, LLM y síntesis sin salir del PC
100 %
sistemas operativos: Windows, Linux y macOS
3
dependencias npm en el núcleo
0

El problema

Los asistentes que pasan todo por un LLM son lentos para lo trivial y arriesgados para lo sensible: tardan segundos en abrir una calculadora y pueden ejecutar una acción destructiva por una mala interpretación.

Jarvis separa las dos cosas. Lo que debe ser instantáneo va por una vía rápida de reflejos (reglas, patrones y un clasificador), y lo que necesita razonar va a un cerebro LLM con herramientas, cuyas propuestas revisa un candado antes de tocar el equipo. Todo puede funcionar en local, sin salir del PC.

En funcionamientoCapturas del proyecto real con datos de ejemplo.

1 / 5

Cómo funcionaPor dónde pasa cada dato, de la entrada a la salida.

Voz → texto

Atajo global, detección de voz y remuestreo a 16 kHz.

whisper.cpp

Vía rápida

Reglas exactas, 11 patrones y un clasificador de reflejos.

segura ≥ 0,95

Acción

Apps, volumen, notas, temporizadores, red…

27 acciones

Resultado

Limpio de markdown y rutas para decirlo en voz alta.

Respuesta

Voz local y conversación continua hasta un «gracias».

Piper
compuesta o dudosa
aprobada

Cerebro LLM

Elige herramientas y argumentos; local o en la nube.

≤ 5 vueltas

Candado

  • Inofensiva: se aprueba sola.
  • Sensible: pide siempre un «sí» humano.
  • Resto: veredicto aprobar, revisar o bloquear con el contexto reciente.
bloqueo firme si p ≥ 0,6
Vía rápida, sin LLMVía lenta, con LLM y candado

Decisiones técnicasProblemas que aparecieron y cómo se resolvieron.

Reflejos con un LLM local obligado a responder JSON

Un modelo de 8B con salida por esquema estricto clasifica la orden en 344–483 ms, sin coste y sin conexión. Ambos motores de reflejos (local y Jev) comparten el mismo contrato de entrada y salida, y el umbral local es más exigente (0,95) porque ahí la confianza la autoevalúa el propio modelo.

Un candado entre el LLM y el sistema

Cada herramienta que propone el cerebro pasa por tres filtros. Las inofensivas se aprueban solas, las sensibles (apagar, cerrar apps) piden siempre un «sí» humano, y el resto recibe un veredicto aprobar, revisar o bloquear con el contexto de las últimas intervenciones.

Filtro de coherencia sobre el clasificador

El modelo pequeño confundía «sube el volumen» con bajarlo, con seguridad total, y mandaba «cuánto es el 15 % de 240» a abrir la calculadora. Patrones y comprobaciones de coherencia corrigen esos casos antes de ejecutar nada.

VRAM a cero en reposo

Whisper se arranca bajo demanda y se apaga tras 5 minutos sin uso; llama-server limita su contexto porque, sin ese límite, reservaba unos 22 GB y no dejaba sitio a la transcripción.

Micrófono sin silencios en Windows

Forzar el micrófono a 16 kHz devolvía buffers en silencio. Se graba a la frecuencia nativa y se remuestrea con filtro antialiasing, y Whisper se precalienta para no pagar 5–8 s de compilación de shaders en la primera orden.

Una ventana que no roba clics

En Linux, una ventana transparente se queda con los clics de lo que tiene debajo y Electron no los reenvía. La ventana se recorta con setShape al contorno de la píldora más su sombra, y lo comprobé leyendo el canal alfa de la ventana real en X11.

Ahorro de cupo en la nube

Si todas las herramientas salen bien y su resultado se entiende tal cual, se dice sin otra vuelta al LLM. Ante un 429 del gateway se lee Retry-After y se avisa, en lugar de reintentar a ciegas.

Tecnologías

Núcleo
  • Node.js
  • Servidor HTTP con NDJSON
  • Módulos ESM
Interfaz
  • Electron
  • Canvas
  • Web Audio API
LLM
  • Ollama
  • llama.cpp
  • AI Gateway
  • Tool calling
  • Salida estructurada
Voz
  • whisper.cpp
  • Piper
Sistema
  • Linux
  • PowerShell
  • xdotool

Próximos pasos

  • Palabra de activación («oye, Jarvis») sin atajo de teclado.
  • Memoria persistente entre conversaciones.
  • Integración con Home Assistant para la domótica.
  • Instalador con llama-server empaquetado y modelos descargados en el primer arranque.
Siguiente proyectoInmo-Sniper