8.6 KiB
Implementation Plan - Correction Système d'Apprentissage FAISS
Objectif
Corriger les problèmes critiques du système d'apprentissage : index FAISS vide malgré 19+ tâches sauvegardées, processus zombies consommant 3GB+ RAM, et absence de suggestions après 3 jours de tests.
Tasks
-
1. Créer le FAISSIndexBuilder pour reconstruction d'index ✅ TERMINÉ
- Créer
geniusia2/core/faiss_index_builder.py - Implémenter
scan_tasks()pour scanner tous les dossiers de tâches - Implémenter
load_task_embeddings()pour charger les embeddings depuis les signatures.pkl - Implémenter
rebuild_index()pour reconstruire l'index complet - Implémenter
verify_index_integrity()pour vérifier la cohérence - Requirements: 1.4, 6.1, 6.2, 6.3, 6.4, 6.5
- Résultat: 40 tâches scannées, 122 embeddings indexés
- Créer
-
* 1.1 Écrire les property tests pour FAISSIndexBuilder
- Property 25: Scan complet des tâches
- Property 26: Génération d'embeddings manquants
- Property 27: Construction d'index optimisé
- Property 28: Sauvegarde après reconstruction
- Property 29: Résilience aux erreurs
- Validates: Requirements 6.1, 6.2, 6.3, 6.4, 6.5
-
2. Implémenter le chargement automatique au démarrage ✅ TERMINÉ
- Modifier
geniusia2/core/learning_manager.pypour charger les tâches existantes dans__init__ - Utiliser FAISSIndexBuilder pour reconstruire l'index si vide
- Ajouter logs pour tracer le chargement
- Gérer les erreurs de chargement (tâches corrompues)
- Requirements: 1.1, 1.2, 1.3
- Résultat: 40 tâches chargées, 672 workflows détectés
- Modifier
-
* 2.1 Écrire les property tests pour chargement automatique
- Property 1: Index chargé au démarrage
- Property 2: Ajout immédiat à l'index
- Property 3: Persistance immédiate
- Property 4: Reconstruction automatique
- Validates: Requirements 1.1, 1.2, 1.3, 1.4
-
3. Corriger l'arrêt propre des processus ✅ TERMINÉ
- Modifier
geniusia2/main.pyméthodeshutdown()pour arrêter explicitement les listeners pynput - Ajouter timeout de 5 secondes pour l'arrêt des threads
- Implémenter arrêt synchrone des threads de capture
- Forcer l'arrêt si timeout dépassé
- Vérifier que tous les threads sont bien arrêtés
- Requirements: 2.1, 2.3, 2.4, 2.5
- Résultat: Arrêt propre en <5s, aucun processus zombie
- Modifier
-
* 3.1 Écrire les property tests pour arrêt propre
- Property 6: Arrêt rapide
- Property 8: Arrêt synchrone des threads
- Property 9: Stop explicite des listeners
- Property 10: Threads daemon ou arrêt garanti
- Validates: Requirements 2.1, 2.3, 2.4, 2.5
-
4. Checkpoint - Vérifier que le système charge les tâches et s'arrête proprement ✅ VALIDÉ
- Lancer le système avec les 40 tâches existantes
- Vérifier que l'index FAISS contient les embeddings
- Tester l'arrêt avec Ctrl+C
- Vérifier qu'aucun processus zombie ne reste
- Mesurer la consommation mémoire
- Résultat: Tous les tests passés, système stable et fonctionnel
-
5. Créer le MemoryMonitor pour gestion mémoire
- Créer
geniusia2/core/memory_monitor.py - Implémenter
get_current_memory()pour mesurer la RAM utilisée - Implémenter
check_threshold()pour vérifier les seuils - Implémenter
cleanup_caches()pour libérer la mémoire - Implémenter
free_gpu_memory()pour libérer la mémoire GPU - Intégrer dans l'orchestrateur avec vérification périodique
- Requirements: 4.1, 4.2, 4.3, 4.4, 4.5
- Créer
-
* 5.1 Écrire les property tests pour MemoryMonitor
- Property 16: Limite mémoire mode shadow
- Property 17: Limite mémoire mode assist
- Property 18: Libération GPU
- Property 19: Buffer limité
- Property 20: Alerte mémoire
- Validates: Requirements 4.1, 4.2, 4.3, 4.4, 4.5
-
6. Créer le CircuitBreaker pour protection contre boucles infinies
- Créer
geniusia2/core/circuit_breaker.py - Implémenter détection d'appels répétitifs (>100/s)
- Implémenter blocage temporaire (60s)
- Implémenter reprise progressive avec rate limit
- Implémenter mode dégradé si 3 breakers actifs
- Intégrer dans les fonctions critiques (check_for_suggestions, etc.)
- Requirements: 8.1, 8.2, 8.3, 8.4, 8.5
- Créer
-
* 6.1 Écrire les property tests pour CircuitBreaker
- Property 35: Activation circuit breaker
- Property 36: Log circuit breaker
- Property 37: Blocage temporaire
- Property 38: Reprise progressive
- Property 39: Mode dégradé
- Validates: Requirements 8.1, 8.2, 8.3, 8.4, 8.5
-
7. Créer le SystemDiagnostic pour analyse du système
- Créer
geniusia2/core/system_diagnostic.py - Implémenter
check_faiss_index()pour vérifier l'index - Implémenter
count_tasks()pour compter les tâches - Implémenter
check_consistency()pour vérifier cohérence tâches/embeddings - Implémenter
generate_report()pour créer un rapport JSON - Créer script CLI
diagnostic_systeme.pyà la racine - Requirements: 5.1, 5.2, 5.3, 5.4, 5.5
- Créer
-
* 7.1 Écrire les property tests pour SystemDiagnostic
- Property 21: Comptage des tâches
- Property 22: Vérification de cohérence
- Property 23: Proposition de reconstruction
- Property 24: Rapport JSON complet
- Validates: Requirements 5.2, 5.3, 5.4, 5.5
-
8. Améliorer la validation des embeddings
- Modifier
geniusia2/core/embeddings_manager.pyméthodeencode_image() - Ajouter validation de la norme (doit être > 0)
- Ajouter validation NaN/Inf
- Ajouter régénération automatique si invalide
- Ajouter tests de cohérence (screenshots identiques → similarité > 0.95)
- Requirements: 7.1, 7.2, 7.3, 7.4, 7.5
- Modifier
-
* 8.1 Écrire les property tests pour validation embeddings
- Property 30: Validation norme non-nulle
- Property 31: Validation NaN/Inf
- Property 32: Cohérence embeddings identiques
- Property 33: Discrimination embeddings différents
- Property 34: Régénération sur invalide
- Validates: Requirements 7.1, 7.2, 7.3, 7.4, 7.5
-
9. Améliorer le système de suggestions
- Modifier
geniusia2/core/suggestion_manager.py - Vérifier que l'index n'est pas vide avant recherche
- S'assurer que les suggestions incluent nom de tâche et actions
- Ajouter seuil de confiance minimum (0.7)
- Ajouter logs pour tracer les suggestions
- Requirements: 1.5, 3.4, 3.5
- Modifier
-
* 9.1 Écrire les property tests pour suggestions
- Property 5: Suggestions avec index non-vide
- Property 14: Suggestions avec confiance élevée
- Property 15: Contenu des suggestions
- Validates: Requirements 1.5, 3.4, 3.5
-
10. Améliorer la détection de patterns
- Modifier
geniusia2/core/learning_manager.py - Implémenter détection de 3 actions identiques
- Créer automatiquement une tâche après détection
- Indexer immédiatement les embeddings
- Ajouter logs pour tracer la détection
- Requirements: 3.1, 3.2, 3.3
- Modifier
-
* 10.1 Écrire les property tests pour détection patterns
- Property 11: Détection de patterns répétitifs
- Property 12: Création de tâche après pattern
- Property 13: Indexation des embeddings
- Validates: Requirements 3.1, 3.2, 3.3
-
11. Créer un script de reconstruction manuelle
- Créer
rebuild_faiss_index.pyà la racine - Utiliser FAISSIndexBuilder pour reconstruire
- Afficher la progression (tâches traitées)
- Générer un rapport de reconstruction
- Sauvegarder l'index et métadonnées
- Requirements: 6.1, 6.2, 6.3, 6.4, 6.5
- Créer
-
12. Créer un script de test de mémoire
- Créer
test_memory_limits.pyà la racine - Tester mode shadow pendant 10 minutes
- Tester mode assist pendant 10 minutes
- Mesurer la consommation mémoire toutes les 30 secondes
- Vérifier les seuils (1GB shadow, 2GB assist)
- Générer un rapport de consommation
- Requirements: 4.1, 4.2
- Créer
-
13. Checkpoint final - Validation complète
- Exécuter le diagnostic complet
- Reconstruire l'index avec les 19+ tâches
- Tester les suggestions avec actions répétitives
- Vérifier l'arrêt propre (pas de zombies)
- Vérifier la consommation mémoire (<2GB)
- Vérifier les circuit breakers
- Ensure all tests pass, ask the user if questions arise.
-
14. Documentation et nettoyage
- Créer
GUIDE_CORRECTION_FAISS.mdexpliquant les corrections - Documenter l'utilisation du diagnostic
- Documenter l'utilisation de la reconstruction
- Mettre à jour le README avec les nouvelles commandes
- Nettoyer les anciens scripts de diagnostic
- Créer