Compilation et architecture
Lancer depuis les sources, l'organisation du code, et les deux frontières.
Lancer depuis les sources#
cd win
npm install
npm run electron:devVite et Electron ensemble avec rechargement à chaud, sur le port 5173. Si un processus Vite resté en vie garde le port, le lancement suivant échoue : arrêtez-le d'abord.
npm run checkTypage, lint et les tests. La CI lance la même commande. npm run electron:build écrit un programme d'installation dans dist-electron/.
Comment c'est organisé#
| Dossier | Contient |
|---|---|
core/ |
Coeur Rust partagé : état de session, politique d'URL, routage MCP, fournisseurs et analyseur de documents |
win/ |
Application Electron Windows (electron/ pour le processus principal et src/ pour l'interface React) |
macos/ |
Application native macOS en SwiftUI |
linux/ |
Application native Linux en GTK 4 et libadwaita |
shared/ |
Jeux de test partagés, listes d'hôtes et icônes |
Les deux frontières#
electron/preload.cjs est celle de la sécurité. Le rendu n'a aucun accès à Node et n'atteint le système de fichiers, le réseau et la base de données qu'à travers ce qui y est exposé. Y ajouter une fonction est un acte délibéré.
La séparation des sessions est l'autre. La fenêtre de Draggy tourne sous une CSP stricte ; chaque page externe tourne sur une partition séparée, sans aucune politique de notre part. Les fusionner appliquerait notre politique aux sites des autres et les casserait.
Journaux et diagnostics#
Draggy conserve deux journaux rotatifs dans le dossier des données de l'application (logs/) :
app.log: Événements du cycle de vie, gestion des modèles et erreurs. Les requêtes et les réponses sont réduites à des empreintes et des longueurs, et les secrets sont masqués.debug.log: Une trace plus détaillée. Le flux de sortie y est enregistré par longueur, pas par texte.
Les journaux tournent à 5 Mio et gardent trois archives. Pour les voir, ouvrez Paramètres → Diagnostics → Ouvrir le dossier des journaux, ou définissez LOG_LEVEL=DEBUG ou DEBUG_LOG_LEVEL=DEBUG pour le maximum de détails. Pour un signalement de bug, utilisez Paramètres → Diagnostics → Exporter les diagnostics.
Moteur d'inférence#
Draggy exécute des modèles locaux avec un moteur intégré :
- GGUF (llama.cpp) : Exécute des fichiers de modèles
.ggufdans un processus enfant masquéllama-serversur le port11435. Il utilise Metal sur macOS. Sous Windows, il essaie CUDA pour les cartes NVIDIA, puis Vulkan, puis le processeur. Sous Linux, l'ordre est le même. Les cartes AMD utilisent Vulkan, sauf si vous activez la version ROCm dans Réglages → Modèles.
CONTRIBUTING.md a le reste, et SECURITY.md couvre le signalement d'une faille.