# JARVIS — mapa del repositorio

Asistente de voz 100 % local para Linux. Núcleo propio. Este fichero orienta a
quien (persona o agente) trabaje en el código.

**Las rutas relativas van desde la raíz del repositorio.** El núcleo usa rutas
relativas a su propia ubicación (`AQUI = dirname(__file__)`); algunos scripts de
`config/` y `voz/` todavía asumen rutas absolutas del entorno del autor y habría
que hacerlas configurables.

## El flujo

    oír → pensar → hacer → hablar

`nucleo/jarvis.py` es el bucle. Oye con whisper (`oido/`), decide con el modelo
(`cerebro/`), ejecuta con las manos (`manos/`) o contesta, y habla (`boca/`). El
panel (`cara/`) muestra todo en vivo.

## Carpetas

    nucleo/
      jarvis.py       la entrada; arranca.sh lo lanza
      oido/           whisper.cpp: captura, palabra de activación, transcripción
      cerebro/        ollama, tool-calling, y el RAG (pasivo + agéntico)
      boca/           Piper. voz.py fija la voz por defecto
      manos/          las acciones, el diario, el sudo, la fonética
      cara/           el panel web y su servidor
      saber/          el RAG: indexa, busca, glosario; enriquece/ lo mejora
      datos/          acciones.json (el catálogo). El resto es privado (.gitignore)
      pruebas/        la suite del núcleo

    config/           configuración: modelo (Modelfile), voz, whisper CUDA
    voz/              clonado de voz con XTTS y caché de frases
    entrena/          fine-tuning con QLoRA

## Dos cosas que ahorran errores

- **La gráfica es pequeña (4 GB) y el cerebro y whisper compiten por ella.**
  Antes de tocar el dimensionado, mirar el presupuesto de VRAM del README.
- **Los datos del usuario no se versionan.** `saber.jsonl`, `diario.jsonl` y las
  cachés de voz son privados: el `.gitignore` los bloquea. Ver PRIVACIDAD.md.

## Estilo

Registro técnico y conciso. Los commits describen el porqué, no solo el qué.
