JARVIS/CONTRIBUTING.md
sito 6a81cef3be JARVIS elige modelo, backend Wayland, y roadmap para la comunidad
- Seleccion de modelo: JARVIS cambia su cerebro en caliente (elegir_modelo).
- Ventanas en Wayland: backend para Sway e Hyprland (ventanas-wayland.sh).
- ROADMAP.md y CONTRIBUTING.md: tareas acotadas y como empezar, para animar
  commits (mas gestores, mas acciones, probar otros modelos, el RAG).
- docs/rag.md: tabla explicita de que se publica y que no del RAG; nota de
  que un clon recien hecho ya tiene RAG util (man pages + glosario) sin datos
  privados.
- README enlaza el roadmap y menciona la eleccion de modelo.
2026-08-16 16:58:41 +02:00

3.1 KiB

Contribuir

JARVIS es software libre (GPL-3.0) y se agradecen los commits. Esta guía dice cómo está montado, cómo probarlo y cómo añadir lo más común. Las ideas acotadas están en ROADMAP.md.

Cómo está montado

nucleo/jarvis.py     el bucle: oír → pensar → hacer → hablar
nucleo/oido/         whisper.cpp (STT) y la captura del micrófono
nucleo/cerebro/      Ollama, tool-calling, el RAG y la elección de modelo
nucleo/boca/         Piper / voz clonada (TTS)
nucleo/manos/        las acciones, el diario, el sudo, la fonética
nucleo/cara/         el panel web (servidor WebSocket + HUD en cara/hud/)
nucleo/saber/        el RAG: indexa, busca, y enriquece/ para mejorarlo
config/              scripts: modelo, voz, whisper, ventanas

Nada de esto necesita compilar: es Python, bash y una página web. Se edita y se prueba en el sitio.

Probarlo

./install.sh              # entorno, modelo de Ollama, lanzador de escritorio
./nucleo/arranca.sh       # el asistente y el panel en 127.0.0.1

El panel se puede abrir sin arrancar nada, para trabajar el diseño: nucleo/cara/hud/index.html en un navegador se llena solo con datos de ejemplo.

Hay dos suites de comprobaciones (nucleo/pruebas/) y un eval del RAG (nucleo/saber/enriquece/evalua.py, mide hit@k). Si tocas el RAG, corre el eval y pon los números en el commit.

Añadir una acción

Una acción es una entrada en nucleo/datos/acciones.json:

{
  "id": "brillo_sube",
  "grupo": "sistema",
  "frases": ["sube el brillo", "más brillo", "más luz"],
  "acuse": "Voy, señor.",
  "comando": "brightnessctl set +10%",
  "host": true,
  "respuesta": "Brillo al {campo1}, señor.",
  "confirmar": false,
  "captura": false
}
  • frases: cómo se dice, con variantes. Se emparejan ANTES de llamar al modelo, así que una acción del catálogo es instantánea.
  • comando: shell. {campoN} en respuesta es el enésimo campo de la salida.
  • confirmar: true para lo que borra o cambia; captura: true si necesita un argumento hablado ("busca el fichero X").

Si el comando depende de una herramienta que puede no estar, que degrade con gracia (mira config/ventanas.sh).

Probar con otro modelo

JARVIS_MODELO=qwen3.5:9b ./nucleo/arranca.sh

O, en marcha, dile a JARVIS "usa un modelo más potente" (usa la herramienta elegir_modelo). Para medir si un modelo hace bien el tool-calling, mira el patrón del eval del RAG y adáptalo.

Un backend de ventanas nuevo (Wayland u otro)

config/ventanas-wayland.sh es el ejemplo: detecta el compositor y traduce los verbos (maximiza, izquierda, centro...) a sus órdenes. Para KDE, GNOME Wayland u otro, se copia el patrón. Actúa sobre la ventana ACTIVA (en Wayland no se mueven ventanas ajenas). Prueba cada orden en tu compositor antes del commit.

Estilo

  • Registro técnico y conciso, en castellano. Los comentarios explican el porqué, no el qué.
  • Los commits describen la decisión, no solo el cambio.
  • Sin datos personales en el repo: los apuntes indexados, el diario y la voz de referencia son del usuario (ver PRIVACIDAD.md).