354 lines
8.2 KiB
Markdown
354 lines
8.2 KiB
Markdown
# 🤖 RPA Vision V2 - MVP
|
|
|
|
Système d'automatisation robotique à apprentissage progressif utilisant la vision par ordinateur et l'IA.
|
|
|
|
## 🎯 Vue d'Ensemble
|
|
|
|
RPA Vision V2 **observe, apprend et rejoue** les interactions avec les interfaces utilisateur de manière intelligente.
|
|
|
|
### Fonctionnalités MVP
|
|
|
|
- ✅ **Capture d'événements** : Enregistre les actions clavier/souris avec screenshots
|
|
- ✅ **Détection de patterns** : Identifie les séquences répétitives (3+ fois)
|
|
- ✅ **Analyse visuelle** : Utilise CLIP, OWL-v2, DINO, YOLO pour comprendre l'interface
|
|
- ✅ **Signatures visuelles** : Crée des embeddings pour chaque action
|
|
- ✅ **Descriptions intelligentes** : Génère des descriptions avec Gemma3
|
|
- ✅ **Rejeu intelligent** : Rejoue les tâches en localisant visuellement les éléments
|
|
- ✅ **Adaptation automatique** : S'adapte aux variations d'interface
|
|
|
|
## 🚀 Installation Rapide
|
|
|
|
### 1. Prérequis
|
|
|
|
- Python 3.8+
|
|
- Ollama installé
|
|
- 8 GB RAM minimum
|
|
- Linux (testé sur Ubuntu)
|
|
|
|
### 2. Installation
|
|
|
|
```bash
|
|
# Cloner le repo
|
|
git clone <repo-url>
|
|
cd Geniusia_v2
|
|
|
|
# Installation complète
|
|
cd geniusia2
|
|
./setup.sh
|
|
|
|
# Installer FAISS (CRITIQUE)
|
|
./install_faiss.sh
|
|
|
|
# Reconstruire l'index FAISS (si des tâches existent)
|
|
cd ..
|
|
python3 rebuild_faiss_simple.py
|
|
```
|
|
|
|
### 3. Lancement
|
|
|
|
```bash
|
|
cd geniusia2
|
|
./run.sh
|
|
```
|
|
|
|
## 📖 Guide d'Utilisation
|
|
|
|
### Workflow Complet
|
|
|
|
```bash
|
|
# Démonstration complète : Capture → Apprentissage → Rejeu
|
|
python3 example_complete_workflow.py
|
|
```
|
|
|
|
### Mode Capture (Apprentissage)
|
|
|
|
1. Lancer l'application : `cd geniusia2 && ./run.sh`
|
|
2. Cliquer sur "Start"
|
|
3. Effectuer des actions répétitives (3x minimum)
|
|
4. Le système détecte les patterns et crée des tâches automatiquement
|
|
|
|
### Mode Rejeu
|
|
|
|
```bash
|
|
# Lister les tâches disponibles
|
|
python3 read_pkl.py --list
|
|
|
|
# Rejouer une tâche
|
|
python3 test_task_replay.py
|
|
```
|
|
|
|
Le système va :
|
|
1. Charger la tâche
|
|
2. Pour chaque action :
|
|
- Capturer l'écran actuel
|
|
- Rechercher l'élément visuellement (grille 4x4 + CLIP)
|
|
- Exécuter l'action à la position trouvée
|
|
3. Afficher les résultats
|
|
|
|
## 🏗️ Architecture
|
|
|
|
```
|
|
geniusia2/
|
|
├── core/ # Logique centrale
|
|
│ ├── task_replay.py # ✨ Moteur de rejeu intelligent
|
|
│ ├── event_capture.py # Capture d'événements
|
|
│ ├── learning_manager.py # Apprentissage de tâches
|
|
│ ├── embeddings_manager.py # Gestion FAISS
|
|
│ ├── logger.py # Logs (JSON simple pour MVP)
|
|
│ └── utils/
|
|
│ ├── vision_utils.py # Analyse visuelle (CLIP, OWL-v2, etc.)
|
|
│ └── input_utils.py # Contrôle souris/clavier
|
|
├── gui/ # Interface PyQt5
|
|
├── data/
|
|
│ ├── user_profiles/ # Tâches apprises
|
|
│ │ └── task_XXXXX/
|
|
│ │ ├── metadata.json # Infos de la tâche
|
|
│ │ └── signatures.pkl # Actions + embeddings
|
|
│ ├── faiss_index/ # Index de recherche
|
|
│ │ ├── embeddings.index # Index FAISS
|
|
│ │ └── metadata.pkl # Métadonnées
|
|
│ └── logs/ # Logs JSON
|
|
└── main.py # Point d'entrée
|
|
|
|
Scripts utilitaires (racine) :
|
|
├── test_task_replay.py # Test de rejeu
|
|
├── example_complete_workflow.py # Workflow complet
|
|
├── read_pkl.py # Lecture des .pkl
|
|
├── rebuild_faiss_simple.py # Reconstruction index
|
|
└── diagnostic_data.py # Diagnostic
|
|
```
|
|
|
|
## 🔧 Scripts Utilitaires
|
|
|
|
### Diagnostic
|
|
|
|
```bash
|
|
python3 diagnostic_data.py
|
|
```
|
|
|
|
Affiche :
|
|
- État de l'index FAISS
|
|
- Nombre de tâches
|
|
- État des logs
|
|
|
|
### Lecture de Tâches
|
|
|
|
```bash
|
|
# Lister toutes les tâches
|
|
python3 read_pkl.py --list
|
|
|
|
# Lire une tâche spécifique
|
|
python3 read_pkl.py task_fc1d3e52
|
|
```
|
|
|
|
### Reconstruction de l'Index FAISS
|
|
|
|
```bash
|
|
python3 rebuild_faiss_simple.py
|
|
```
|
|
|
|
Extrait les embeddings de toutes les tâches et crée l'index FAISS.
|
|
|
|
## 🎮 Modes Opérationnels
|
|
|
|
### 👀 Mode Shadow (Actuel)
|
|
|
|
**Fonctionnalités** :
|
|
- Capture des événements utilisateur
|
|
- Détection de patterns répétitifs
|
|
- Création automatique de tâches
|
|
- Génération de signatures visuelles
|
|
|
|
**Utilisation** :
|
|
1. Lancer l'app : `./run.sh`
|
|
2. Cliquer "Start"
|
|
3. Effectuer des actions répétitives
|
|
4. Les tâches sont créées automatiquement
|
|
|
|
### 🎮 Mode Rejeu (Nouveau !)
|
|
|
|
**Fonctionnalités** :
|
|
- Chargement de tâches apprises
|
|
- Recherche visuelle d'éléments (CLIP)
|
|
- Exécution adaptative d'actions
|
|
- Monitoring en temps réel
|
|
|
|
**Utilisation** :
|
|
```bash
|
|
python3 test_task_replay.py
|
|
```
|
|
|
|
### 🤝 Mode Assisté (À venir)
|
|
|
|
- Suggestions d'actions
|
|
- Validation utilisateur
|
|
- Superposition visuelle
|
|
|
|
### 🤖 Mode Autopilot (À venir)
|
|
|
|
- Exécution automatique
|
|
- Transitions de mode
|
|
- Dashboard de métriques
|
|
|
|
## 📊 Données
|
|
|
|
### Structure d'une Tâche
|
|
|
|
```
|
|
data/user_profiles/task_fc1d3e52/
|
|
├── metadata.json # Infos générales
|
|
└── signatures.pkl # Actions + embeddings
|
|
```
|
|
|
|
**metadata.json** :
|
|
```json
|
|
{
|
|
"task_id": "task_fc1d3e52",
|
|
"task_name": "Défilement rapide",
|
|
"window_whitelist": ["Firefox"],
|
|
"observation_count": 3,
|
|
"mode": "shadow",
|
|
"confidence_score": 0.0
|
|
}
|
|
```
|
|
|
|
**signatures.pkl** (binaire) :
|
|
- Liste d'actions
|
|
- Chaque action contient :
|
|
- `embedding` : numpy array (512,) float32
|
|
- `action_type` : "mouse_click", "scroll", etc.
|
|
- `position` : (x, y)
|
|
- `element_type` : "icon", "button", etc.
|
|
- `window` : Titre de la fenêtre
|
|
|
|
### Logs
|
|
|
|
Format JSON simple (pas de chiffrement pour MVP) :
|
|
|
|
```bash
|
|
cat geniusia2/data/logs/logs_$(date +%Y-%m-%d).json | jq .
|
|
```
|
|
|
|
## 🔍 Dépendances Critiques
|
|
|
|
### FAISS (CRITIQUE)
|
|
|
|
**Pourquoi** : Recherche de similarité pour localiser les éléments
|
|
|
|
**Installation** :
|
|
```bash
|
|
cd geniusia2
|
|
./install_faiss.sh
|
|
```
|
|
|
|
Ou manuellement :
|
|
```bash
|
|
pip install faiss-cpu
|
|
```
|
|
|
|
### Ollama + Gemma3
|
|
|
|
**Pourquoi** : Génération de descriptions intelligentes
|
|
|
|
**Installation** :
|
|
```bash
|
|
# Installer Ollama
|
|
curl -fsSL https://ollama.com/install.sh | sh
|
|
|
|
# Télécharger Gemma3
|
|
ollama pull gemma2:2b
|
|
|
|
# Démarrer Ollama
|
|
ollama serve
|
|
```
|
|
|
|
## ⚠️ Problèmes Courants
|
|
|
|
### FAISS non installé
|
|
|
|
**Symptôme** : `ModuleNotFoundError: No module named 'faiss'`
|
|
|
|
**Solution** :
|
|
```bash
|
|
cd geniusia2
|
|
./install_faiss.sh
|
|
```
|
|
|
|
### Index FAISS manquant
|
|
|
|
**Symptôme** : Pas de fichiers dans `data/faiss_index/`
|
|
|
|
**Solution** :
|
|
```bash
|
|
python3 rebuild_faiss_simple.py
|
|
```
|
|
|
|
### Ollama non démarré
|
|
|
|
**Symptôme** : Erreurs de connexion au LLM
|
|
|
|
**Solution** :
|
|
```bash
|
|
ollama serve
|
|
```
|
|
|
|
## 📈 Avancement
|
|
|
|
**Version actuelle** : MVP 0.6
|
|
|
|
| Fonctionnalité | Avancement | Statut |
|
|
|----------------|------------|--------|
|
|
| Capture d'événements | 90% | ✅ Fonctionnel |
|
|
| Analyse visuelle | 85% | ✅ Fonctionnel |
|
|
| Mémoire FAISS | 80% | ✅ Opérationnel |
|
|
| Apprentissage | 85% | ✅ Fonctionnel |
|
|
| **Rejeu intelligent** | **90%** | **✅ Fonctionnel** |
|
|
| Mode Assisté | 5% | ❌ À faire |
|
|
| Mode Autopilot | 50% | ⚠️ Partiel |
|
|
| Transitions | 10% | ❌ À faire |
|
|
| Dashboard | 20% | ⚠️ Basique |
|
|
|
|
**Avancement global** : ~60%
|
|
|
|
## 📚 Documentation
|
|
|
|
- **`DEMARRAGE_RAPIDE_MVP.md`** : Guide de démarrage complet
|
|
- **`MODIFICATIONS_MVP.md`** : Changements récents
|
|
- **`CHANGELOG_MVP.md`** : Historique des versions
|
|
- **`état_avancement_18_11.md`** : État détaillé du projet
|
|
- **`MVP_COMPLET_REJEU.md`** : Documentation du système de rejeu
|
|
- **`geniusia2/core/TASK_REPLAY_README.md`** : API de rejeu
|
|
|
|
## 🤝 Contribution
|
|
|
|
Le projet est en phase MVP. Les contributions sont bienvenues pour :
|
|
|
|
- Améliorer la recherche visuelle (multi-échelle)
|
|
- Implémenter le mode Assisté
|
|
- Ajouter des tests
|
|
- Optimiser les performances
|
|
|
|
## 📝 Licence
|
|
|
|
[À définir]
|
|
|
|
## 🆘 Support
|
|
|
|
En cas de problème :
|
|
|
|
1. Vérifier les logs : `cat geniusia2/data/logs/logs_$(date +%Y-%m-%d).json`
|
|
2. Diagnostic : `python3 diagnostic_data.py`
|
|
3. Vérifier FAISS : `python -c "import faiss; print('OK')"`
|
|
|
|
## ✅ Checklist de Démarrage
|
|
|
|
- [ ] Python 3.8+ installé
|
|
- [ ] Ollama installé et démarré
|
|
- [ ] Modèle Gemma3 téléchargé
|
|
- [ ] Environnement virtuel créé (`./setup.sh`)
|
|
- [ ] FAISS installé (`./install_faiss.sh`)
|
|
- [ ] Index FAISS créé (`python3 rebuild_faiss_simple.py`)
|
|
- [ ] Application testée (`./run.sh`)
|
|
|
|
**Prêt à l'emploi ! 🎉**
|