# 🔍 Fonctionnement du Mode Shadow

## Qu'est-ce que le Mode Shadow ?

Le mode Shadow (👀) est le mode d'**observation passive** où l'application :
- ✅ Observe les actions de l'utilisateur
- ✅ Enregistre les patterns répétitifs
- ❌ N'interfère PAS avec l'utilisateur
- ❌ Ne suggère PAS d'actions

## 🤔 Problème Actuel

### Ce qui se passe maintenant

Quand tu cliques sur "Start" en mode Shadow :
1. L'application démarre la boucle cognitive
2. Elle capture l'écran
3. Elle cherche une "intention" (quelle action automatiser)
4. **Pas d'intention** → Elle ne fait rien et attend

### Pourquoi les warnings ?

Les warnings que tu vois :
```
WARNING: Aucune détection avec owl-v2
WARNING: DINO n'est pas disponible
WARNING: YOLO-World n'est pas disponible
ERROR: Aucun modèle n'a pu détecter 'observer'
```

Sont causés par une tentative de détecter des éléments avec le terme "observer", qui est trop générique.

**C'est maintenant corrigé** : L'application n'essaie plus de détecter sans intention.

## ✅ Comment Ça Devrait Fonctionner

### Architecture Complète (À Implémenter)

```
Mode Shadow
    ↓
Capture d'événements système
    ↓
Détection d'actions répétitives
    ↓
Création d'une "intention"
    ↓
Apprentissage du pattern
    ↓
Proposition de passer en mode Assisté
```

### Ce qui Manque Actuellement

**Capture d'événements système** :
- Hooks clavier (pynput, keyboard)
- Hooks souris (pynput, mouse)
- Détection de patterns répétitifs

### Implémentation Actuelle (Simplifiée)

L'application attend que tu **définisses manuellement une tâche** :
1. Via l'interface (à ajouter)
2. Via des actions répétitives détectées (à implémenter)

## 🚀 Solution Temporaire

En attendant l'implémentation complète des hooks système, voici comment utiliser l'application :

### Option 1: Mode Assisté Direct

Au lieu de commencer en Shadow, commence directement en mode Assisté :

1. **Définir une tâche manuellement** (via interface à ajouter)
2. **Passer en mode Assisté**
3. **Valider les suggestions**

### Option 2: Utiliser l'API Programmatique

Créer une tâche via code :

```python
from core.learning_manager import LearningManager
from core.models import TaskProfile

# Créer une tâche
task = TaskProfile(
    task_id="test_task",
    window_title="Firefox",
    description="Cliquer sur le bouton de recherche"
)

# Définir l'intention
learning_manager.set_current_intent("button")
```

## 📝 Prochaines Étapes

### Pour Rendre le Mode Shadow Fonctionnel

1. **Implémenter la capture d'événements** :
```python
from pynput import mouse, keyboard

def on_click(x, y, button, pressed):
    if pressed:
        # Enregistrer le clic
        capture_action("click", x, y)

def on_key(key):
    # Enregistrer la frappe
    capture_action("key", key)

# Démarrer les listeners
mouse_listener = mouse.Listener(on_click=on_click)
keyboard_listener = keyboard.Listener(on_press=on_key)
```

2. **Détecter les patterns répétitifs** :
```python
def detect_repetitive_pattern(actions):
    # Analyser les actions pour trouver des répétitions
    # Si 3+ actions similaires → Créer une intention
    pass
```

3. **Créer automatiquement des intentions** :
```python
if pattern_detected:
    intent = extract_intent_from_pattern(pattern)
    learning_manager.set_current_intent(intent)
```

## 🎯 État Actuel

### Ce qui Fonctionne

✅ **Capture d'écran** : L'application capture l'écran en continu
✅ **Détection UI** : OWL-v2 peut détecter des éléments (boutons, champs, etc.)
✅ **Raisonnement** : Qwen3-VL peut analyser les images
✅ **Mémoire visuelle** : OpenCLIP stocke les embeddings

### Ce qui Manque

❌ **Capture d'événements** : Pas de hooks clavier/souris
❌ **Détection de patterns** : Pas d'analyse des répétitions
❌ **Création auto d'intentions** : Pas de génération automatique

## 💡 Recommandation Actuelle

**Pour tester l'application maintenant** :

1. **Ne pas utiliser le mode Shadow** pour l'instant
2. **Attendre l'implémentation des hooks système**
3. **Ou contribuer à l'implémentation** (voir ci-dessous)

### Comment Contribuer

Si tu veux implémenter la capture d'événements :

```bash
# Installer les dépendances
pip install pynput

# Créer le module
touch geniusia2/core/event_capture.py

# Implémenter les hooks
# Voir exemple ci-dessus
```

## 📚 Ressources

- **pynput** : https://pynput.readthedocs.io/
- **keyboard** : https://github.com/boppreh/keyboard
- **mouse** : https://github.com/boppreh/mouse

---

## ✅ Résumé

**Situation actuelle** :
- Le mode Shadow démarre mais n'a rien à faire sans événements utilisateur
- Les warnings sont normaux et ont été corrigés
- L'application attend une intention pour agir

**Solution temporaire** :
- L'application fonctionne mais en mode "passif"
- Elle attend que tu définisses une tâche manuellement
- Ou que les hooks système soient implémentés

**Prochaine étape** :
- Implémenter la capture d'événements système
- Ou utiliser l'application en mode manuel pour l'instant

**L'application est fonctionnelle, mais le mode Shadow complet nécessite encore du développement ! 🚀**
