Files
rpa_vision_v3/FICHE_18_APPRENTISSAGE_PERSISTANT_COMPLETE.md
Dom a27b74cf22 v1.0 - Version stable: multi-PC, détection UI-DETR-1, 3 modes exécution
- Frontend v4 accessible sur réseau local (192.168.1.40)
- Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard)
- Ollama GPU fonctionnel
- Self-healing interactif
- Dashboard confiance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:23:51 +01:00

4.0 KiB

Fiche #18 - Apprentissage persistant "mix" (JSONL + SQLite)

Auteur: Dom, Alice Kiro
Date: 22 décembre 2025
Statut: COMPLET

🎯 Objectif

Implémenter un système d'apprentissage persistant pour la résolution de cibles UI utilisant une architecture "mix" :

  • JSONL : Audit trail append-only pour tous les événements de résolution
  • SQLite : Lookup table rapide pour retrouver les fingerprints appris

🏗️ Architecture implémentée

Composants créés

  1. core/learning/target_memory_store.py

    • TargetMemoryStore : Gestionnaire principal de mémoire persistante
    • TargetFingerprint : Empreinte d'une cible UI résolue
    • ResolutionEvent : Événement de résolution (succès/échec)
  2. core/execution/screen_signature.py

    • Génération de signatures d'écran stables
    • Modes : layout, content, hybrid
    • Résistant aux petits changements UI
  3. Intégration dans TargetResolver

    • Lookup depuis mémoire persistante (priorité haute)
    • Enregistrement des succès/échecs
    • Configuration via paramètres d'initialisation
  4. Intégration dans ActionExecutor

    • Hooks après validation post-conditions
    • Enregistrement automatique des apprentissages

Structure de données

data/learning/
├── events/YYYY-MM-DD/
│   └── resolution_events.jsonl    # Audit trail
└── target_memory.db               # Lookup SQLite

🔧 Fonctionnalités implémentées

1. Enregistrement des résolutions

# Succès (après post-conditions OK)
store.record_success(
    screen_signature="abc123def456",
    target_spec=target_spec,
    fingerprint=fingerprint,
    strategy_used="by_role",
    confidence=0.95
)

# Échec (après post-conditions KO)
store.record_failure(
    screen_signature="abc123def456",
    target_spec=target_spec,
    error_message="Target not found"
)

2. Lookup intelligent

# Recherche avec critères de fiabilité
fingerprint = store.lookup(
    screen_signature="abc123def456",
    target_spec=target_spec,
    min_success_count=2,      # Minimum 2 succès
    max_fail_ratio=0.3        # Maximum 30% d'échecs
)

🔄 Intégration dans le pipeline d'exécution

Flux d'apprentissage

  1. Résolution de cibleTargetResolver.resolve_target()

    • Lookup mémoire persistante (priorité 1)
    • Résolution classique si pas trouvé
  2. Exécution d'actionActionExecutor.execute_edge()

    • Validation post-conditions
    • Si succèsrecord_resolution_success()
    • Si échecrecord_resolution_failure()

📊 Métriques et monitoring

Statistiques disponibles

stats = store.get_stats()
# {
#   "total_entries": 150,
#   "total_successes": 420,
#   "total_failures": 35,
#   "overall_confidence": 0.887,
#   "jsonl_files_count": 5,
#   "jsonl_total_size_mb": 2.3
# }

🧪 Tests implémentés

Tests unitaires

  • tests/unit/test_target_memory_store.py
  • Couverture complète des fonctionnalités
  • Tests de performance et concurrence

Démonstration

  • demo_persistent_learning.py
  • Scénarios d'usage complets

🚀 Utilisation

Configuration de base

# TargetResolver avec apprentissage persistant
resolver = TargetResolver(
    enable_persistent_learning=True,
    persistent_memory_path="data/learning"
)

# ActionExecutor avec resolver intégré
executor = ActionExecutor(
    target_resolver=resolver,
    verify_postconditions=True  # Nécessaire pour l'apprentissage
)

STATUT FINAL : COMPLET

Le système d'apprentissage persistant "mix" est entièrement implémenté et opérationnel.

Livrables :

  • Code source complet et testé
  • Tests unitaires avec couverture complète
  • Démonstration fonctionnelle
  • Documentation technique détaillée
  • Intégration dans le pipeline d'exécution

Prêt pour utilisation en production 🚀