Asistente y compañera virtual que corre en tu PC: chat por texto y voz, personalidad configurable, memoria de corto y largo plazo, herramientas con permisos, tareas en segundo plano y plugins. Usa modelos locales con Ollama, sin enviar tus conversaciones a la nube.
| Documento | Contenido |
|---|---|
| ARQUITECTURA.md | Arquitectura, carpetas, flujo del agente, dependencias y fases |
| docs/API.md | Referencia de la API y del formato de streaming |
| docs/HISTORIAL.md | Cómo se construyó: decisiones, pruebas, problemas y mediciones |
| plugins/README.md | Cómo crear herramientas y plugins |
| CHANGELOG.md | Cambios por versión |
- Chat en streaming con historial, personalidades en YAML y voz opcional.
- Memoria: resumen progresivo de la conversación y recuerdos de largo plazo con búsqueda semántica, que se extraen solos.
- Herramientas: archivos, sistema, web, memoria y recordatorios. Se añaden más con un decorador
@toolo como plugin. - Seguridad: niveles de permiso, confirmación de acciones sensibles, sandbox de carpetas, auditoría y token opcional.
- Tareas: módulos independientes en segundo plano que se reanudan al reiniciar.
- Modelo intercambiable: Ollama, LM Studio, llama.cpp, vLLM u OpenAI, cambiando solo
.env.
- Windows 10/11, Python 3.11 o superior
- Ollama para el modelo local
- GPU NVIDIA recomendada (con 4 GB de VRAM basta para un modelo de 3B)
git clone <url-del-repositorio> nova
cd nova
python -m venv .venv
.venv\Scripts\python -m pip install --use-feature=truststore -r requirements.txt
copy .env.example .env
--use-feature=truststorehace que pip use los certificados de Windows. Es necesario en equipos donde pip falla conCERTIFICATE_VERIFY_FAILED.
ollama pull qwen2.5:3b # RTX 3050 4 GB (con RTX 3060 12 GB: qwen2.5:7b)
ollama pull nomic-embed-text # embeddings para la memoria.env.example ya viene configurado para Ollama con qwen2.5:3b:
NOVA_LLM_PROVIDER=ollama
NOVA_LLM_MODEL=qwen2.5:3b
NOVA_EMBED_PROVIDER=ollama
Modo demostración, sin modelo: con NOVA_LLM_PROVIDER=mock y
NOVA_EMBED_PROVIDER=hash puedes probar la interfaz sin Ollama. El "modelo"
repite tus mensajes, y /tool <nombre> <json> ejecuta una herramienta.
.venv\Scripts\python -m appAbre http://127.0.0.1:8000. La documentación interactiva de la API está en http://127.0.0.1:8000/docs.
.venv\Scripts\python -m pip install --use-feature=truststore -r requirements-voice.txt- Voz a texto:
NOVA_VOICE_ENABLED=true. Whisper se descarga solo la primera vez. - Texto a voz: descarga una voz en español de
piper-voices (el
.onnxy su.onnx.json) y defineNOVA_TTS_MODEL_PATH. - Sin esto, la interfaz usa la voz del navegador (Chrome o Edge).
| Nivel | Ejemplos | Por defecto |
|---|---|---|
internal |
memoria, recordatorios, fecha | automático |
read |
listar y leer archivos | automático |
write |
escribir archivos | pide confirmación |
network |
leer páginas web | pide confirmación |
execute |
abrir aplicaciones | pide confirmación |
- Los archivos solo se tocan dentro de
NOVA_ALLOWED_PATHS(por defectodata/workspace). - Solo se abren las aplicaciones listadas en
config/policy.yaml. - Cada herramienta se puede poner en Auto / Confirmar / Prohibida desde el panel ⚙.
- Todo queda en la auditoría (pestaña Actividad) y en
logs/. - El servidor escucha solo en
127.0.0.1. Si lo expones a la red, defineNOVA_API_TOKEN.
- Nueva herramienta o plugin: consulta plugins/README.md.
- Nueva personalidad: copia
config/personas/nova.yamlcon otro nombre. - Nuevo módulo de tareas: consulta
app/tasks/modules/recordatorio.py. - Otro modelo: cambia
NOVA_LLM_PROVIDER,NOVA_LLM_MODELyNOVA_LLM_BASE_URL(Ollama, LM Studio, llama.cpp, vLLM o cualquier API compatible con OpenAI). - PostgreSQL:
pip install asyncpgy cambiaNOVA_DATABASE_URL.
.venv\Scripts\python -m pip install --use-feature=truststore -r requirements-dev.txt
.venv\Scripts\python -m pytest
.venv\Scripts\python -m ruff check .