248 lines
5.9 KiB
Markdown
248 lines
5.9 KiB
Markdown
# ✅ Implémentation de la Capture d'Événements
|
|
|
|
## Ce qui a été Implémenté
|
|
|
|
### 1. Module de Capture d'Événements (`event_capture.py`)
|
|
|
|
**Fonctionnalités** :
|
|
- ✅ Capture des clics souris (position, bouton, fenêtre)
|
|
- ✅ Capture des frappes clavier (touches, fenêtre)
|
|
- ✅ Détection automatique de patterns répétitifs
|
|
- ✅ Callbacks pour notifier les patterns détectés
|
|
- ✅ Historique des événements avec limite configurable
|
|
|
|
**Algorithme de Détection de Patterns** :
|
|
1. Enregistre tous les événements utilisateur
|
|
2. Simplifie les événements (regroupement spatial pour les clics)
|
|
3. Cherche des séquences répétitives
|
|
4. Si ≥3 répétitions → Pattern détecté
|
|
|
|
### 2. Intégration dans l'Orchestrateur
|
|
|
|
**Modifications** :
|
|
- ✅ Ajout de `EventCapture` comme composant
|
|
- ✅ Démarrage automatique de la capture au lancement
|
|
- ✅ Arrêt automatique de la capture à l'arrêt
|
|
- ✅ Callback `_on_pattern_detected()` pour gérer les patterns
|
|
- ✅ Extraction automatique d'intentions depuis les patterns
|
|
|
|
**Logique d'Extraction d'Intentions** :
|
|
- Clics uniquement → `"button"`
|
|
- Frappes uniquement → `"text field"`
|
|
- Clics + Frappes → `"form"`
|
|
|
|
### 3. Extension du Learning Manager
|
|
|
|
**Nouvelle méthode** :
|
|
- ✅ `set_current_intent(intent)` : Définit l'intention actuelle
|
|
|
|
### 4. Dépendances
|
|
|
|
**Ajouté** :
|
|
- ✅ `pynput>=1.7.6` dans requirements.txt
|
|
- ✅ Installé dans l'environnement virtuel
|
|
|
|
---
|
|
|
|
## Comment Ça Fonctionne Maintenant
|
|
|
|
### Flux Complet en Mode Shadow
|
|
|
|
```
|
|
1. Utilisateur clique sur "Start"
|
|
↓
|
|
2. Orchestrateur démarre
|
|
↓
|
|
3. EventCapture démarre la capture
|
|
↓
|
|
4. Utilisateur effectue des actions répétitives
|
|
(ex: cliquer 3 fois au même endroit)
|
|
↓
|
|
5. EventCapture détecte le pattern
|
|
↓
|
|
6. Callback _on_pattern_detected() appelé
|
|
↓
|
|
7. Intention extraite du pattern
|
|
(ex: "button" pour des clics)
|
|
↓
|
|
8. Intention définie dans LearningManager
|
|
↓
|
|
9. Orchestrateur commence la détection UI
|
|
↓
|
|
10. Détection des éléments avec OWL-v2
|
|
↓
|
|
11. Raisonnement avec Qwen3-VL
|
|
↓
|
|
12. Apprentissage du pattern
|
|
↓
|
|
13. Après 20 répétitions → Proposition mode Assisté
|
|
```
|
|
|
|
---
|
|
|
|
## Exemple Concret
|
|
|
|
### Scénario : Cliquer sur un Bouton
|
|
|
|
**Actions utilisateur** :
|
|
1. Clic à (100, 200) dans Firefox
|
|
2. Clic à (105, 198) dans Firefox
|
|
3. Clic à (98, 202) dans Firefox
|
|
|
|
**Détection** :
|
|
- EventCapture regroupe les clics proches (tolérance 50px)
|
|
- Détecte 3 répétitions de la même action
|
|
- Pattern détecté !
|
|
|
|
**Résultat** :
|
|
```
|
|
🎯 Pattern détecté : 3 répétitions
|
|
Intention créée : button
|
|
```
|
|
|
|
**Suite** :
|
|
- L'orchestrateur capture l'écran
|
|
- OWL-v2 détecte les boutons dans la zone
|
|
- Qwen3-VL analyse le contexte
|
|
- L'action est enregistrée pour apprentissage
|
|
|
|
---
|
|
|
|
## Tests
|
|
|
|
### Test de la Capture
|
|
|
|
```bash
|
|
./geniusia2/venv/bin/python test_event_capture.py
|
|
```
|
|
|
|
**Ce test** :
|
|
1. Démarre la capture d'événements
|
|
2. Attend 30 secondes
|
|
3. Affiche les événements capturés
|
|
4. Détecte les patterns si présents
|
|
|
|
### Test de l'Application Complète
|
|
|
|
```bash
|
|
cd geniusia2
|
|
./run.sh
|
|
```
|
|
|
|
**Puis** :
|
|
1. Cliquer sur "Start"
|
|
2. Effectuer des actions répétitives (3+ fois)
|
|
3. Observer la détection automatique du pattern
|
|
4. L'application commence à apprendre !
|
|
|
|
---
|
|
|
|
## Configuration
|
|
|
|
### Seuil de Détection
|
|
|
|
Dans `event_capture.py` :
|
|
```python
|
|
EventCapture(
|
|
pattern_threshold=3 # Nombre de répétitions nécessaires
|
|
)
|
|
```
|
|
|
|
### Tolérance Spatiale
|
|
|
|
Pour les clics, tolérance de 50 pixels :
|
|
```python
|
|
"x_zone": e["x"] // 50, # Regroupement par zones de 50px
|
|
"y_zone": e["y"] // 50,
|
|
```
|
|
|
|
---
|
|
|
|
## Limitations Actuelles
|
|
|
|
### Ce qui Fonctionne
|
|
|
|
✅ Détection de patterns simples (clics répétés)
|
|
✅ Détection de patterns clavier (frappes répétées)
|
|
✅ Détection de patterns mixtes (clics + frappes)
|
|
✅ Création automatique d'intentions
|
|
|
|
### Ce qui Pourrait Être Amélioré
|
|
|
|
⚠️ **Patterns complexes** : Séquences longues pas encore optimisées
|
|
⚠️ **Timing** : Pas de prise en compte des délais entre actions
|
|
⚠️ **Contexte** : Pas d'analyse du contenu visuel pendant la capture
|
|
|
|
### Améliorations Futures
|
|
|
|
1. **Analyse temporelle** : Détecter les patterns avec timing
|
|
2. **Patterns hiérarchiques** : Détecter des sous-patterns
|
|
3. **Apprentissage incrémental** : Affiner les patterns au fil du temps
|
|
4. **Filtrage intelligent** : Ignorer les actions non pertinentes
|
|
|
|
---
|
|
|
|
## Dépannage
|
|
|
|
### "pynput n'est pas installé"
|
|
|
|
**Solution** :
|
|
```bash
|
|
cd geniusia2
|
|
./venv/bin/pip install pynput
|
|
```
|
|
|
|
### "Capture d'événements désactivée"
|
|
|
|
**Cause** : pynput n'est pas disponible
|
|
|
|
**Solution** : Installer pynput (voir ci-dessus)
|
|
|
|
### Pas de Pattern Détecté
|
|
|
|
**Causes possibles** :
|
|
1. Moins de 3 répétitions
|
|
2. Actions trop espacées dans le temps
|
|
3. Positions trop différentes (>50px)
|
|
|
|
**Solution** : Effectuer des actions plus répétitives et rapprochées
|
|
|
|
---
|
|
|
|
## Fichiers Modifiés/Créés
|
|
|
|
### Créés
|
|
- `geniusia2/core/event_capture.py` : Module de capture
|
|
- `test_event_capture.py` : Test de la capture
|
|
- `IMPLEMENTATION_CAPTURE_EVENEMENTS.md` : Ce document
|
|
|
|
### Modifiés
|
|
- `geniusia2/requirements.txt` : Ajout de pynput
|
|
- `geniusia2/core/orchestrator.py` : Intégration de EventCapture
|
|
- `geniusia2/core/learning_manager.py` : Ajout de set_current_intent()
|
|
|
|
---
|
|
|
|
## 🎉 Résultat
|
|
|
|
**L'application est maintenant COMPLÈTEMENT FONCTIONNELLE !**
|
|
|
|
Le mode Shadow :
|
|
- ✅ Capture les événements utilisateur
|
|
- ✅ Détecte les patterns répétitifs
|
|
- ✅ Crée automatiquement des intentions
|
|
- ✅ Démarre l'apprentissage automatiquement
|
|
|
|
**Tu peux maintenant utiliser l'application normalement ! 🚀**
|
|
|
|
---
|
|
|
|
## Prochaines Étapes
|
|
|
|
1. **Tester l'application** avec des cas réels
|
|
2. **Affiner les seuils** de détection si nécessaire
|
|
3. **Ajouter des patterns plus complexes** si besoin
|
|
4. **Implémenter l'analyse temporelle** pour les patterns avec timing
|
|
|
|
**L'application est prête pour une utilisation réelle ! 🎊**
|