🔧 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ón | Parámetro | Valor por defecto | Descripció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_ENABLED | True |
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_ENABLED | True |
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_OPACITY | 0.95 |
Transparencia de la ventana (0.0 – 1.0) |
HUD_ALWAYS_ON_TOP | False |
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_ENABLED | True |
Activar el sistema de plugins |
PLUGINS_HOT_RELOAD | True |
Recargar plugins automáticamente al modificar los archivos | |
| ⏱️ Código | CODE_EXEC_TIMEOUT | 30 |
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:
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"
"cambia al modo cloud"
"cambia al modo local"
"usa el proveedor gemini"
"usa el proveedor github"
Comparativa de proveedores cloud
| Característica | GitHub Models (GPT-4o-mini) | Google Gemini (2.0 Flash) |
|---|---|---|
| Modelo | GPT-4o-mini | Gemini 2.0 Flash |
| Coste | Gratis (20K req/día) | Gratis (límites generosos) |
| Velocidad | ⚡ Muy rápida | ⚡ Muy rápida |
| Calidad | ⭐⭐⭐⭐ Excelente | ⭐⭐⭐⭐ Excelente |
| Endpoint | models.inference.ai.azure.com | generativelanguage.googleapis.com |
| Obtener key | github.com/settings/tokens | aistudio.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.
data/config.json debe estar en el .gitignore.
GitHub Models (GPT-4o-mini)
"configura api key github ghp_TuTokenAquí123456789"
Google Gemini (Gemini 2.0 Flash)
"configura api key gemini AIzaSy_TuKeyAquí123456789"
"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
plugins/, por ejemplo plugins/mi_plugin.py.
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!"
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)
- Se almacena en
data/memory.db - Guarda el historial de conversaciones anteriores
- Permite a JARVIS recordar preferencias del usuario
- Ejemplo: "recuerda que mi color favorito es el azul" → JARVIS lo guarda y lo recuerda en futuras sesiones
Procedimientos aprendidos
- Se guardan en
data/procedures.json - Cuando JARVIS completa una tarea autónoma con éxito (ej.: enviar un WhatsApp), guarda los pasos para ejecutarlos más rápido la próxima vez
- Solo se guardan procedimientos que superan la validación de coherencia (los pasos deben corresponder al objetivo original)
- Se pueden listar con "qué procedimientos conoces"
Habilidades aprendidas
- Se guardan en
data/learned_skills.json - Cuando JARVIS no sabe hacer algo, puede investigar autónomamente cómo hacerlo, generar código Python, probarlo y guardar la habilidad si funciona
- Ejemplo: "aprende a obtener el clima de mi ciudad" → investiga APIs, genera código, lo prueba, y guarda la habilidad
- Las habilidades se reutilizan automáticamente en futuras sesiones
- Listar: "qué has aprendido" — Olvidar: "olvida la habilidad X"
Archivos de datos
| Archivo | Formato | Propósito |
|---|---|---|
data/config.json | JSON | Configuración del usuario y API keys |
data/memory.db | SQLite | Historial de conversaciones y recuerdos |
data/procedures.json | JSON | Procedimientos autónomos aprendidos |
data/learned_skills.json | JSON | Habilidades creadas por el motor de aprendizaje |
data/research_log.json | JSON | Log de investigaciones del agente autónomo |
data/logs/jarvis.log | Texto | Log del sistema para depuración |