diff --git a/docs/CONSOLIDATION_20260405.md b/docs/CONSOLIDATION_20260405.md new file mode 100644 index 000000000..719c6ebc0 --- /dev/null +++ b/docs/CONSOLIDATION_20260405.md @@ -0,0 +1,77 @@ +# Consolidation — 5 avril 2026 + +## Ce qui fonctionne + +### Pipeline d'entraînement (mesuré) +| Étape | Temps/screenshot | Extrapolation 1h | +|-------|-----------------|------------------| +| ScreenAnalyzer (OCR docTR) | 1.05s | 9 min | +| CLIP Embeddings (ViT-B-32) | 0.093s | 1 min | +| FAISS Index | <0.01s | <1s | +| GraphBuilder | 0.7s total | <1 min | +| **Total** | **1.2s/shot** | **~10 min** | + +### Résolution visuelle +- **Grounding qwen2.5vl** : fonctionne sur les fenêtres croppées (by_text OCR/VLM) +- **Template matching** : fonctionne pour les icônes/taskbar (crop 80x80) +- **gemma4 enrichissement** : lit le texte des éléments sans OCR (onglets, icônes) + +### Vérifications +- **CLIP** : vérifie la bonne application (sim > 0.75 sur fenêtre) +- **Titre fenêtre** : vérifie l'état par nom d'app (polling 10s) +- **Pré-vérification** : stoppe si mauvaise fenêtre AVANT de cliquer + +### Acteur intelligent +- **gemma4 think=True** : décide PASSER/EXECUTER/STOPPER (5s, 75% correct) +- Branché dans l'executor quand target_not_found +- Mode texte CPU (pas d'image, pas de VRAM) + +### Infrastructure +- Ollama 0.16.3 host (port 11434) : qwen2.5vl:7b GPU 9.4GB +- Docker Ollama 0.20 (port 11435) : gemma4:e4b GPU 3.6GB +- Jamais simultanés (auto-unload gemma4 après build) +- VM Win11 (192.168.122.14) : SSH + agent Léa +- Anti-bot : Bézier mouse + frappe char-by-char + +## Problèmes identifiés (non résolus) + +### P1 : Ambiguïté "Rechercher" (taskbar vs explorateur) +Le crop 80x80 de la barre de recherche Windows ressemble à la barre +de recherche de l'explorateur. Le template matching clique au mauvais +endroit. L'acteur doit apprendre à distinguer les contextes. + +### P2 : Éléments VLM (by_text_source="vlm") +Le grounding qwen2.5vl ne trouve pas toujours les textes lus par +gemma4 (ex: "voiture elec" — texte d'onglet). L'acteur prend le +relais et décide PASSER quand l'état est déjà atteint. + +### P3 : Premier chargement VLM lent +Le premier appel à qwen2.5vl ou gemma4 après redémarrage prend 30-60s +(chargement en VRAM). Les appels suivants sont rapides (0.2-5s). + +## Architecture validée + +``` +ENREGISTREMENT (une fois) + Agent capture → screenshots + events + ↓ +BUILD (une fois, ~15s) + ScreenAnalyzer (OCR) → CLIP → FAISS → GraphBuilder + gemma4 enrichit les éléments sans OCR + → Workflow enrichi + actions avec embeddings CLIP + +REPLAY (à chaque exécution) + Fast path : + Titre fenêtre OK → grounding qwen2.5vl → clic → polling titre → OK + Slow path (quand target_not_found) : + Acteur gemma4 → PASSER / STOPPER / EXECUTER +``` + +## Métriques de replay sur VM + +| Session | Résultat | Détail | +|---------|----------|--------| +| Notepad (dernier test) | 4/32 actions | Recherche + ouverture Bloc-notes OK, bloque sur onglet | +| Grounding texte OCR | 100% | Rechercher, Ouvrir, Fichier, Enregistrer | +| CLIP vérification | 100% | sim 0.87-0.99 | +| Acteur gemma4 | Validé unitairement | PASSER correct pour onglet actif |