J.A.R.V.I.S.

Sistema de Ayuda

🔧 Configuración

JARVIS se configura mediante el archivo config.py en la raíz del proyecto. Todos los parámetros están documentados con comentarios y no requieren conocimientos avanzados para personalizarlos.

Archivo config.py — Visión general

El archivo se divide en secciones lógicas. A continuación se muestran los parámetros más importantes:

SecciónParámetroValor por defectoDescripción
🧠 IA / LLM BRAIN_MODE"cloud" Modo de ejecución: "local" (Ollama en tu PC) o "cloud" (APIs cloud gratuitas)
CLOUD_PROVIDER"github" Proveedor cloud activo: "github" (GPT-4o-mini) o "gemini" (Gemini 2.0 Flash)
OLLAMA_MODEL"mistral" Modelo Ollama local. Opciones: mistral, llama3, phi3
☁️ GitHub Models GITHUB_TOKEN"" Token de acceso personal de GitHub (obtener aquí)
GITHUB_MODEL"gpt-4o-mini" Modelo de GitHub Models. GPT-4o-mini: rápido, 20.000 req/día gratis
Google Gemini GEMINI_API_KEY"" Clave API de Gemini (obtener aquí)
GEMINI_MODEL"gemini-2.0-flash" Modelo Gemini. 2.0 Flash: gratuito con límites generosos
👁️ Visión VISION_MODEL"llava" Modelo multimodal para describir imágenes. Opciones: llava, bakllava, llava-phi3
VISION_ENABLEDTrue Activa o desactiva la capacidad de describir pantalla/fotos
🎙️ Voz (STT) WHISPER_MODEL"small" Modelo Whisper para reconocimiento de voz. Opciones: tiny, base, small, medium, large
WHISPER_LANGUAGE"es" Idioma forzado para transcripciones
WHISPER_DEVICE"cpu" "cpu" o "cuda" (GPU Nvidia)
WHISPER_COMPUTE_TYPE"int8" "int8" para CPU, "float16" para GPU
🔊 Voz (TTS) PIPER_VOICE"es_ES-davefx-medium" Voz de síntesis. Masculina en español, procesada localmente con Piper
TTS_ENABLEDTrue Activar/desactivar la voz hablada de JARVIS
⌨️ Hotkeys WAKE_WORD"jarvis" Palabra clave para activar por voz (en modo escucha continua)
HOTKEY_ACTIVATE"ctrl+shift+j" Atajo de teclado para activar la entrada por voz
HOTKEY_MUTE"ctrl+shift+m" Atajo para silenciar/activar micrófono
🖥️ Interfaz (HUD) HUD_OPACITY0.95 Transparencia de la ventana (0.0 – 1.0)
HUD_ALWAYS_ON_TOPFalse Mantener la ventana siempre visible
HUD_ACCENT_COLOR"#00D4FF" Color de acento del reactor arc (cyan)
HUD_FONT_FAMILY"JetBrains Mono" Fuente principal de la interfaz
🔌 Plugins PLUGINS_ENABLEDTrue Activar el sistema de plugins
PLUGINS_HOT_RELOADTrue Recargar plugins automáticamente al modificar los archivos
⏱️ Código CODE_EXEC_TIMEOUT30 Timeout máximo en segundos para ejecución de código Python en sandbox

🧠 Modo Local vs. Cloud

JARVIS tiene un cerebro dual: puede funcionar con IA local en tu PC o conectándose a APIs cloud gratuitas. El parámetro BRAIN_MODE en config.py controla qué modo usar.

💻 Modo Local (BRAIN_MODE = "local")

  • Usa Ollama con modelos como Mistral, LLaMA 3 o Phi-3
  • Todo se procesa en tu PC — sin conexión a internet
  • Privacidad total: los datos nunca salen de tu equipo
  • Requiere: ≥16 GB RAM, buena CPU (o GPU para ir más rápido)
  • Velocidad: depende de tu hardware

☁️ Modo Cloud (BRAIN_MODE = "cloud") — Recomendado

  • Usa APIs cloud externas, sin consumir recursos locales
  • Mucho más rápido que Ollama en la mayoría de PCs
  • Requiere: conexión a internet + API key (gratuita)
  • Proveedores disponibles:
    • GitHub Models — GPT-4o-mini (20.000 solicitudes/día gratis)
    • Google Gemini — Gemini 2.0 Flash (límites muy generosos, gratis)
  • Ideal para PCs con pocos recursos o portátiles

Cómo cambiar de modo

Puedes cambiar el modo de dos formas:

Opción A Editar config.py directamente:
# Para usar cloud (recomendado):
BRAIN_MODE = "cloud"
CLOUD_PROVIDER = "github"   # o "gemini"

# Para usar local:
BRAIN_MODE = "local"
OLLAMA_MODEL = "mistral"    # o "llama3", "phi3"
Opción B Usar comandos de voz/texto dentro de JARVIS:
"cambia al modo cloud"
"cambia al modo local"
"usa el proveedor gemini"
"usa el proveedor github"

Comparativa de proveedores cloud

CaracterísticaGitHub Models (GPT-4o-mini)Google Gemini (2.0 Flash)
ModeloGPT-4o-miniGemini 2.0 Flash
CosteGratis (20K req/día)Gratis (límites generosos)
Velocidad⚡ Muy rápida⚡ Muy rápida
Calidad⭐⭐⭐⭐ Excelente⭐⭐⭐⭐ Excelente
Endpointmodels.inference.ai.azure.comgenerativelanguage.googleapis.com
Obtener keygithub.com/settings/tokensaistudio.google.com/apikey

🔑 Configurar API Keys

Las API keys son gratuitas y se necesitan solo si usas el modo cloud. Se guardan cifradas en data/config.json, nunca en el código fuente.

Importante: Nunca compartas tus API keys ni las subas a GitHub. El archivo data/config.json debe estar en el .gitignore.

GitHub Models (GPT-4o-mini)

1 Ve a github.com/settings/tokens e inicia sesión.
2 Crea un nuevo token clásico (Generate new token → Classic). No hace falta seleccionar scopes especiales — el acceso a GitHub Models es gratuito con cualquier token.
3 Copia el token y díselo a JARVIS:
"configura api key github ghp_TuTokenAquí123456789"

Google Gemini (Gemini 2.0 Flash)

1 Ve a aistudio.google.com/apikey e inicia sesión con tu cuenta de Google.
2 Haz clic en Create API Key y copia la clave generada.
3 Díselo a JARVIS:
"configura api key gemini AIzaSy_TuKeyAquí123456789"
Tip: Puedes cambiar de proveedor en cualquier momento con "usa el proveedor github" o "usa el proveedor gemini". JARVIS cambiará al instante sin reiniciar.

🔌 Sistema de Plugins

JARVIS soporta un sistema de plugins que permite extender sus funcionalidades sin tocar el código base. Los plugins se colocan en la carpeta plugins/.

Crear un plugin

1 Crea un archivo Python en plugins/, por ejemplo plugins/mi_plugin.py.
2 Define una función register() que devuelva un diccionario con los comandos del plugin:
def register():
    return {
        "nombre": "Mi Plugin",
        "version": "1.0",
        "comandos": {
            "saludo especial": saludar,
        }
    }

def saludar(params):
    return "¡Hola desde mi plugin personalizado!"
3 El plugin se carga automáticamente al iniciar JARVIS. Si PLUGINS_HOT_RELOAD = True, los cambios que hagas se detectan sin reiniciar.

🧠 Memoria y Aprendizaje

JARVIS tiene un sistema de memoria persistente y de aprendizaje que le permite mejorar con cada interacción.

Memoria (SQLite)

Procedimientos aprendidos

Habilidades aprendidas

Archivos de datos

ArchivoFormatoPropósito
data/config.jsonJSONConfiguración del usuario y API keys
data/memory.dbSQLiteHistorial de conversaciones y recuerdos
data/procedures.jsonJSONProcedimientos autónomos aprendidos
data/learned_skills.jsonJSONHabilidades creadas por el motor de aprendizaje
data/research_log.jsonJSONLog de investigaciones del agente autónomo
data/logs/jarvis.logTextoLog del sistema para depuración