Compilación y arquitectura
Ejecutar desde el código, cómo está organizado y las dos fronteras.
Ejecutar desde el código fuente#
cd win
npm install
npm run electron:devVite y Electron juntos, con recarga en caliente, en el puerto 5173. Si un proceso Vite antiguo ocupa el puerto, el siguiente inicio falla, así que deténlo primero.
npm run checkComprobación de tipos, lint y las pruebas. La CI ejecuta el mismo comando. npm run electron:build escribe un instalador en dist-electron/.
Cómo está organizado#
| Carpeta | Contiene |
|---|---|
core/ |
Núcleo Rust compartido: estado de sesión, política de URL, enrutamiento MCP, proveedores y procesador de documentos |
win/ |
Aplicación Electron para Windows (electron/ para el proceso principal y src/ para la interfaz en React) |
macos/ |
Aplicación nativa en SwiftUI para macOS |
linux/ |
Aplicación nativa en GTK 4 y libadwaita para Linux |
shared/ |
Pruebas compartidas, listas de hosts e iconos |
Las dos fronteras#
electron/preload.cjs es la de seguridad. El renderizador no tiene acceso a Node y solo llega al sistema de archivos, la red y la base de datos a través de lo que se expone allí. Añadir una función es un acto deliberado.
La separación de sesiones es la otra. La ventana de Draggy se ejecuta bajo una CSP estricta; cada página externa se ejecuta en una partición aparte, sin ninguna política nuestra impuesta. Fusionarlas aplicaría nuestra política a los sitios de otros y los rompería.
Registros y diagnóstico#
Draggy guarda dos registros rotatorios en la carpeta de datos de la aplicación (logs/):
app.log: eventos del ciclo de vida, gestión de modelos y errores. Los mensajes y las respuestas se reducen a hashes y longitudes, y los secretos se eliminan.debug.log: un rastro más detallado. La salida en streaming se registra por longitud, no por texto.
Los registros rotan al llegar a 5 MiB y conservan tres archivos. Para verlos, abre Ajustes → Diagnóstico → Abrir carpeta de registros, o define LOG_LEVEL=DEBUG o DEBUG_LOG_LEVEL=DEBUG para el máximo detalle. Para un informe de error, usa Ajustes → Diagnóstico → Exportar diagnóstico.
Motor de inferencia#
Draggy ejecuta modelos locales con un motor integrado:
- GGUF (llama.cpp): ejecuta archivos de modelo
.ggufen un proceso hijo ocultollama-serveren el puerto11435. Usa Metal en macOS. En Windows prueba CUDA para tarjetas NVIDIA, luego Vulkan y después la CPU. En Linux el orden es el mismo. Las tarjetas AMD usan Vulkan salvo que actives la versión ROCm en Ajustes → Modelos.
Lo demás está en CONTRIBUTING.md, y SECURITY.md explica cómo informar de una vulnerabilidad.