docs(audit): README honnête + STATUS + DEV_SETUP + cleanup build
- README.md : bandeau POC, date 14 avril 2026, retrait claims "production-ready 77%" (alignement code/doc post-audit) - docs/STATUS.md : état réel par module (opérationnel/alpha/en cours) - docs/DEV_SETUP.md : gestion worktrees Claude - QUICK_START.md : gemma4:latest au lieu de qwen3-vl:8b - deploy/build_package.sh : +9 fichiers dans REQUIRED_FILES (system_dialog_guard.py, persistent_buffer.py, grounding.py, etc.) - agent_v0/deploy_windows.py : marqué OBSOLÈTE (legacy) - .gitignore : ajout data/, .hypothesis, .deps_installed, buffer/, instance/*.db, caches SQLite Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
27
.gitignore
vendored
27
.gitignore
vendored
@@ -83,3 +83,30 @@ backups/
|
|||||||
# === Legacy / Triage ===
|
# === Legacy / Triage ===
|
||||||
_a_trier/
|
_a_trier/
|
||||||
archives/
|
archives/
|
||||||
|
|
||||||
|
# === Claude Code — worktrees et données locales ===
|
||||||
|
# Worktrees générés par la CLI Claude Code lors d'exécutions d'agents
|
||||||
|
# parallèles. Peuvent atteindre plusieurs centaines de Mo chacun.
|
||||||
|
# Ne jamais committer — gérer via `git worktree list` / `git worktree remove`.
|
||||||
|
.claude/
|
||||||
|
.kiro/
|
||||||
|
.mcp.json
|
||||||
|
.snapshots/
|
||||||
|
|
||||||
|
# === Données runtime (sessions, learning, buffer, config local) ===
|
||||||
|
data/
|
||||||
|
.hypothesis/
|
||||||
|
.deps_installed
|
||||||
|
# Buffers SQLite locaux (streamer, cache)
|
||||||
|
**/buffer/
|
||||||
|
**/pending_events.db
|
||||||
|
# Databases applicatives (instance Flask)
|
||||||
|
**/instance/*.db
|
||||||
|
**/instance/*.sqlite
|
||||||
|
**/instance/*.sqlite3
|
||||||
|
# Caches et index locaux
|
||||||
|
*.sqlite
|
||||||
|
*.sqlite3
|
||||||
|
*.db-journal
|
||||||
|
*.db-wal
|
||||||
|
*.db-shm
|
||||||
|
|||||||
@@ -21,7 +21,12 @@ ollama serve
|
|||||||
### 3. Télécharger le modèle VLM
|
### 3. Télécharger le modèle VLM
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ollama pull qwen3-vl:8b
|
# Modèle par défaut du projet (voir .env.example)
|
||||||
|
ollama pull gemma4:latest
|
||||||
|
|
||||||
|
# Alternatives supportées
|
||||||
|
# ollama pull qwen3-vl:8b
|
||||||
|
# ollama pull 0000/ui-tars-1.5-7b-q8_0:7b # grounder visuel
|
||||||
```
|
```
|
||||||
|
|
||||||
## Utilisation
|
## Utilisation
|
||||||
|
|||||||
338
README.md
338
README.md
@@ -1,207 +1,203 @@
|
|||||||
# RPA Vision V3 - 100% Vision-Based Workflow Automation
|
# RPA Vision V3 — Automatisation basée sur la compréhension visuelle des interfaces
|
||||||
|
|
||||||
## 📊 Status
|
> ⚠️ **Projet en phase POC** — voir [`docs/STATUS.md`](docs/STATUS.md) pour l'état
|
||||||
|
> réel par module. Certaines briques sont opérationnelles bout en bout,
|
||||||
|
> d'autres sont en cours de stabilisation. Ce dépôt n'est pas production-ready.
|
||||||
|
|
||||||
🚀 **PRODUCTION-READY** - Phase 12 Complete (77% System Completion) ✅
|
*Dernière mise à jour : 14 avril 2026*
|
||||||
|
|
||||||
**Latest Update**: 14 Décembre 2024
|
## Intention
|
||||||
- ✅ **10/13 Phases Complétées** - Système mature et fonctionnel
|
|
||||||
- ✅ **Performance Exceptionnelle** - 500-6250x plus rapide que requis
|
|
||||||
- ✅ **Architecture Entreprise** - 148k+ lignes, 19 modules, 6 specs complètes
|
|
||||||
- ✅ **Innovations Techniques** - Self-healing, Multi-modal, GPU management
|
|
||||||
- 📊 **Audit Complet** - [Rapport détaillé](AUDIT_COMPLET_SYSTEME_RPA_VISION_V3.md)
|
|
||||||
|
|
||||||
**Quick Test**: `bash test_clip.sh`
|
Automatiser des workflows métier par **compréhension sémantique de l'écran**
|
||||||
|
plutôt que par coordonnées de clic fixes. Le système observe l'utilisateur,
|
||||||
|
reconstruit un graphe d'états de l'interface, et cherche à rejouer la
|
||||||
|
procédure en reconnaissant visuellement les éléments cibles — y compris
|
||||||
|
quand l'UI change légèrement.
|
||||||
|
|
||||||
## 🎯 Vision
|
Terrain cible principal : postes hospitaliers (Citrix, applications métier
|
||||||
|
web et desktop). Contrainte forte : **100 % local**, pas d'appel à un LLM
|
||||||
|
cloud dans le pipeline par défaut.
|
||||||
|
|
||||||
RPA basé sur la **compréhension sémantique** des interfaces, pas sur des coordonnées de clics.
|
## Architecture en couches
|
||||||
|
|
||||||
Le système apprend des workflows en observant l'utilisateur et les automatise de manière robuste grâce à une architecture en 5 couches.
|
|
||||||
|
|
||||||
## 🏗️ Architecture en 5 Couches
|
|
||||||
|
|
||||||
```
|
```
|
||||||
RawSession (Couche 0)
|
RawSession (couche 0) — capture événements + screenshots
|
||||||
↓
|
↓
|
||||||
ScreenState (Couche 1) - 4 niveaux d'abstraction
|
ScreenState (couche 1) — états d'écran à plusieurs niveaux d'abstraction
|
||||||
↓
|
↓
|
||||||
UIElement Detection (Couche 2) - Types + Rôles sémantiques
|
UIElement (couche 2) — détection sémantique (cascade OCR + templates + VLM)
|
||||||
↓
|
↓
|
||||||
State Embedding (Couche 3) - Fusion multi-modale
|
State Embedding (couche 3) — fusion multi-modale + index FAISS
|
||||||
↓
|
↓
|
||||||
Workflow Graph (Couche 4) - Nodes + Edges + Learning States
|
Workflow Graph (couche 4) — nœuds, transitions, résolution de cibles
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📁 Structure
|
## État des fonctionnalités (synthèse)
|
||||||
|
|
||||||
```
|
Le détail par module est dans [`docs/STATUS.md`](docs/STATUS.md).
|
||||||
rpa_vision_v3/
|
|
||||||
├── core/
|
|
||||||
│ ├── models/ # Couches 0-4 : Structures de données
|
|
||||||
│ ├── capture/ # Couche 0 : Capture événements + screenshots
|
|
||||||
│ ├── detection/ # Couche 2 : Détection UI sémantique
|
|
||||||
│ ├── embedding/ # Couche 3 : Fusion multi-modale + FAISS
|
|
||||||
│ ├── graph/ # Couche 4 : Construction + Matching + Exécution
|
|
||||||
│ └── persistence/ # Sauvegarde/Chargement
|
|
||||||
├── data/
|
|
||||||
│ ├── sessions/ # RawSessions
|
|
||||||
│ ├── screen_states/ # ScreenStates
|
|
||||||
│ ├── embeddings/ # Vecteurs .npy
|
|
||||||
│ ├── faiss_index/ # Index FAISS
|
|
||||||
│ └── workflows/ # Workflow Graphs
|
|
||||||
└── tests/ # Tests unitaires + intégration
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🚀 Démarrage Rapide
|
**Opérationnel**
|
||||||
|
- Capture Windows (Agent V1) + streaming vers serveur Linux
|
||||||
|
- Stockage des sessions brutes (screenshots + événements)
|
||||||
|
- Streaming server FastAPI, sessions en mémoire
|
||||||
|
- Build du package Windows (`deploy/build_package.sh`)
|
||||||
|
|
||||||
|
**Alpha (fonctionnel sur un cas de référence, encore peu généralisé)**
|
||||||
|
- Détection UI par cascade VLM + OCR + templates
|
||||||
|
- Construction de workflow graph depuis une session
|
||||||
|
- Replay E2E supervisé — premier succès sur Notepad le 13 avril 2026
|
||||||
|
- Mode apprentissage : pause et demande d'aide humaine quand la résolution échoue
|
||||||
|
- Embeddings CLIP + index FAISS
|
||||||
|
- Module auth (Fernet + TOTP), federation (LearningPack)
|
||||||
|
- Web Dashboard, Agent Chat
|
||||||
|
|
||||||
|
**En cours**
|
||||||
|
- Visual Workflow Builder (VWB) — bugs DB runtime connus
|
||||||
|
- Self-healing / recovery global
|
||||||
|
- Analytics / reporting
|
||||||
|
- Worker de compilation sessions → ExecutionPlan
|
||||||
|
- Tests E2E multi-applications
|
||||||
|
|
||||||
|
## Limitations connues
|
||||||
|
|
||||||
|
- Le pipeline de replay est validé sur un nombre très restreint d'applications.
|
||||||
|
- `TargetMemoryStore` (apprentissage Phase 1) est câblé mais sa base reste
|
||||||
|
vide tant qu'un replay complet n'a pas été cristallisé.
|
||||||
|
- Certaines asymétries entre chemins stricts et legacy dans le serveur de
|
||||||
|
streaming peuvent provoquer des arrêts au lieu de pauses d'apprentissage.
|
||||||
|
- VWB n'est pas encore stable en écriture ; un outil dédié plus simple est
|
||||||
|
envisagé.
|
||||||
|
|
||||||
|
## Démarrage
|
||||||
|
|
||||||
|
### Prérequis
|
||||||
|
|
||||||
|
- Python 3.10 à 3.12
|
||||||
|
- [Ollama](https://ollama.ai) installé et démarré localement
|
||||||
|
- Recommandé : GPU NVIDIA pour l'inférence VLM
|
||||||
|
- Windows 10/11 uniquement pour le client Agent V1
|
||||||
|
|
||||||
### Installation
|
### Installation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1. Installer Ollama
|
# 1) Cloner puis créer le venv
|
||||||
curl -fsSL https://ollama.ai/install.sh | sh # Linux
|
python3 -m venv .venv
|
||||||
# ou
|
source .venv/bin/activate
|
||||||
brew install ollama # macOS
|
|
||||||
|
|
||||||
# 2. Démarrer Ollama
|
|
||||||
ollama serve
|
|
||||||
|
|
||||||
# 3. Télécharger le modèle VLM
|
|
||||||
ollama pull qwen3-vl:8b
|
|
||||||
|
|
||||||
# 4. Installer dépendances Python
|
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
# 2) Démarrer Ollama et récupérer le modèle VLM par défaut
|
||||||
|
ollama serve &
|
||||||
|
ollama pull gemma4:latest # défaut du projet
|
||||||
|
# Alternatives supportées :
|
||||||
|
# ollama pull qwen3-vl:8b
|
||||||
|
# ollama pull 0000/ui-tars-1.5-7b-q8_0:7b # grounder visuel
|
||||||
|
|
||||||
|
# 3) Copier et ajuster la configuration
|
||||||
|
cp .env.example .env
|
||||||
|
# éditer .env pour vérifier RPA_VLM_MODEL, VLM_ENDPOINT, ports, etc.
|
||||||
```
|
```
|
||||||
|
|
||||||
### Test Rapide
|
### Lancer les services
|
||||||
|
|
||||||
|
Tous les services sont pilotés par `svc.sh` (source de vérité des ports :
|
||||||
|
`services.conf`).
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Diagnostic système
|
./svc.sh status # État de tous les services
|
||||||
python3 rpa_vision_v3/examples/diagnostic_vlm.py
|
./svc.sh start # Tout démarrer
|
||||||
|
./svc.sh start streaming # Streaming server uniquement (port 5005)
|
||||||
# Test de détection
|
./svc.sh restart api # Redémarrer l'API (port 8000)
|
||||||
./rpa_vision_v3/test_quick.sh
|
./svc.sh stop # Tout arrêter
|
||||||
```
|
```
|
||||||
|
|
||||||
### Utilisation - Détection UI
|
| Port | Service |
|
||||||
|
|---|---|
|
||||||
|
| 8000 | API Server (upload / traitement core) |
|
||||||
|
| 5001 | Web Dashboard |
|
||||||
|
| 5002 | VWB Backend (Flask) |
|
||||||
|
| 5003 | Monitoring |
|
||||||
|
| 5004 | Agent Chat |
|
||||||
|
| 5005 | Streaming Server (Agent V1 → pipeline core) |
|
||||||
|
| 5006 | Session Cleaner |
|
||||||
|
| 5099 | Worker de compilation (optionnel) |
|
||||||
|
| 3002 | VWB Frontend (Vite/React) |
|
||||||
|
|
||||||
```python
|
### Client Windows (Agent V1)
|
||||||
from rpa_vision_v3.core.detection import create_detector
|
|
||||||
|
|
||||||
# Créer le détecteur
|
Le client capture souris, clavier et écran sur le poste Windows et envoie
|
||||||
detector = create_detector()
|
les données au streaming server Linux.
|
||||||
|
|
||||||
# Détecter les éléments UI
|
|
||||||
elements = detector.detect("screenshot.png")
|
|
||||||
|
|
||||||
# Utiliser les résultats
|
|
||||||
for elem in elements:
|
|
||||||
print(f"{elem.type:15s} | {elem.role:20s} | {elem.label}")
|
|
||||||
```
|
|
||||||
|
|
||||||
### Utilisation - Workflow (Phase 4 - À venir)
|
|
||||||
|
|
||||||
```python
|
|
||||||
from rpa_vision_v3.core.models import RawSession, ScreenState, Workflow
|
|
||||||
from rpa_vision_v3.core.graph import GraphBuilder, NodeMatcher
|
|
||||||
|
|
||||||
# 1. Capturer une session
|
|
||||||
session = RawSession(...)
|
|
||||||
# ... capturer événements et screenshots
|
|
||||||
|
|
||||||
# 2. Construire workflow automatiquement
|
|
||||||
builder = GraphBuilder(...)
|
|
||||||
workflow = builder.build_from_session(session)
|
|
||||||
|
|
||||||
# 3. Matcher état actuel
|
|
||||||
matcher = NodeMatcher(...)
|
|
||||||
current_state = ScreenState(...)
|
|
||||||
match = matcher.match(current_state, workflow)
|
|
||||||
|
|
||||||
# 4. Exécuter action
|
|
||||||
if match:
|
|
||||||
edge = workflow.get_outgoing_edges(match.node.node_id)[0]
|
|
||||||
executor.execute_edge(edge, current_state)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📚 Documentation
|
|
||||||
|
|
||||||
### Guides Principaux
|
|
||||||
- **Quick Start** : `QUICK_START.md` - Démarrage rapide
|
|
||||||
- **Prochaines Étapes** : `NEXT_STEPS.md` - Roadmap et Phase 4
|
|
||||||
- **Phase 3 Complète** : `PHASE3_COMPLETE.md` - Résumé Phase 3
|
|
||||||
|
|
||||||
### Documentation Technique
|
|
||||||
- **Spec complète** : `.kiro/specs/workflow-graph-implementation/`
|
|
||||||
- **Architecture** : `docs/reference/ARCHITECTURE_VISION_COMPLETE.md`
|
|
||||||
- **Détection Hybride** : `HYBRID_DETECTION_SUMMARY.md`
|
|
||||||
- **Intégration Ollama** : `docs/OLLAMA_INTEGRATION.md`
|
|
||||||
|
|
||||||
## 🎓 Concepts Clés
|
|
||||||
|
|
||||||
### RPA 100% Vision
|
|
||||||
|
|
||||||
- ❌ Pas de coordonnées (x, y) fixes
|
|
||||||
- ✅ Rôles sémantiques (primary_action, form_input, etc.)
|
|
||||||
- ✅ Matching par similarité visuelle et textuelle
|
|
||||||
- ✅ Robuste aux changements d'UI
|
|
||||||
|
|
||||||
### Apprentissage Progressif
|
|
||||||
|
|
||||||
```
|
|
||||||
OBSERVATION (5+ exécutions)
|
|
||||||
↓
|
|
||||||
COACHING (10+ assistances, succès >90%)
|
|
||||||
↓
|
|
||||||
AUTO_CANDIDATE (20+ exécutions, succès >95%)
|
|
||||||
↓
|
|
||||||
AUTO_CONFIRMÉ (validation utilisateur)
|
|
||||||
```
|
|
||||||
|
|
||||||
### State Embedding
|
|
||||||
|
|
||||||
Fusion multi-modale :
|
|
||||||
- 50% Image (screenshot complet)
|
|
||||||
- 30% Texte (texte détecté)
|
|
||||||
- 10% Titre (fenêtre)
|
|
||||||
- 10% UI (éléments détectés)
|
|
||||||
|
|
||||||
## 🧪 Tests
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Tests unitaires
|
# Build du package Windows depuis le repo Linux
|
||||||
pytest tests/unit/
|
./deploy/build_package.sh
|
||||||
|
# produit deploy/Lea_v<version>.zip
|
||||||
# Tests d'intégration
|
|
||||||
pytest tests/integration/
|
|
||||||
|
|
||||||
# Tests de performance
|
|
||||||
pytest tests/performance/ --benchmark-only
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📈 Roadmap - 77% Complété (10/13 Phases)
|
Voir [`docs/DEV_SETUP.md`](docs/DEV_SETUP.md) pour la maintenance du dépôt
|
||||||
|
(worktrees, build, services).
|
||||||
|
|
||||||
### ✅ **Phases Complétées**
|
## Arborescence du dépôt
|
||||||
- [x] **Phase 1-2** : Fondations + Embeddings FAISS ✅
|
|
||||||
- [x] **Phase 4-6** : Détection UI + Workflow Graphs + Action Execution ✅
|
|
||||||
- [x] **Phase 7-8** : Learning System + Training System ✅
|
|
||||||
- [x] **Phase 10-12** : GPU Management + Performance + Monitoring ✅
|
|
||||||
|
|
||||||
### 🎯 **Phases Restantes**
|
```
|
||||||
- [ ] **Phase 3** : Checkpoint Final (tests storage)
|
rpa_vision_v3/
|
||||||
- [ ] **Phase 9** : Visual Workflow Builder (90% → 100%)
|
├── agent_v0/ # Agent V1 (client Windows) + serveur de streaming
|
||||||
- [ ] **Phase 13** : Tests End-to-End + Documentation finale
|
│ ├── agent_v1/ # Source de l'agent (capture, UI tray, exécution)
|
||||||
|
│ └── server_v1/ # FastAPI streaming + processeurs
|
||||||
|
├── core/ # Pipeline core
|
||||||
|
│ ├── detection/ # Cascade VLM + OCR + templates
|
||||||
|
│ ├── embedding/ # CLIP + FAISS
|
||||||
|
│ ├── graph/ # Construction / matching de workflow graphs
|
||||||
|
│ ├── execution/ # Résolution de cibles, actions LLM
|
||||||
|
│ ├── learning/ # TargetMemoryStore (apprentissage)
|
||||||
|
│ ├── auth/ # Vault Fernet + TOTP
|
||||||
|
│ └── federation/ # Export/import de LearningPacks
|
||||||
|
├── visual_workflow_builder/ # VWB (backend Flask + frontend React Vite)
|
||||||
|
├── web_dashboard/ # Dashboard Flask + SocketIO
|
||||||
|
├── agent_chat/ # Interface conversationnelle + planner
|
||||||
|
├── deploy/ # Scripts de build et unités systemd
|
||||||
|
├── data/ # Sessions, embeddings, index FAISS, apprentissage
|
||||||
|
├── docs/ # Documentation technique
|
||||||
|
├── tests/ # pytest (unit, integration, e2e)
|
||||||
|
├── services.conf # Source de vérité des ports
|
||||||
|
├── svc.sh # Orchestrateur des services
|
||||||
|
└── run.sh # Démarrage tout-en-un (legacy, préférer svc.sh)
|
||||||
|
```
|
||||||
|
|
||||||
### 🚀 **Composants Production-Ready**
|
## Tests
|
||||||
- **Agent V0** : Capture cross-platform + Encryption ✅
|
|
||||||
- **Server API** : Processing pipeline + Web dashboard ✅
|
|
||||||
- **Analytics System** : Monitoring + Insights + Reporting ✅
|
|
||||||
- **Self-Healing** : Automatic adaptation + Recovery ✅
|
|
||||||
|
|
||||||
## 🤝 Contribution
|
```bash
|
||||||
|
source .venv/bin/activate
|
||||||
|
|
||||||
Voir `.kiro/specs/workflow-graph-implementation/tasks.md` pour les tâches en cours.
|
# Tests rapides (hors marqueur slow)
|
||||||
|
pytest -m "not slow" -q
|
||||||
|
|
||||||
## 📄 Licence
|
# Tests d'intégration (streaming, pipeline)
|
||||||
|
pytest tests/integration/ -q
|
||||||
|
|
||||||
Propriétaire - Tous droits réservés
|
# Tests E2E
|
||||||
|
pytest tests/test_pipeline_e2e.py -q
|
||||||
|
```
|
||||||
|
|
||||||
|
Quelques tests legacy sont connus comme cassés — voir la mémoire projet et
|
||||||
|
`docs/` pour la liste.
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
- [`docs/STATUS.md`](docs/STATUS.md) — état réel par module
|
||||||
|
- [`docs/DEV_SETUP.md`](docs/DEV_SETUP.md) — tâches d'administration (worktrees, build)
|
||||||
|
- [`docs/VISION_RPA_INTELLIGENT.md`](docs/VISION_RPA_INTELLIGENT.md) — cahier des charges
|
||||||
|
- [`docs/PLAN_ACTEUR_V1.md`](docs/PLAN_ACTEUR_V1.md) — architecture 3 niveaux (Macro / Méso / Micro)
|
||||||
|
- [`docs/CONFORMITE_AI_ACT.md`](docs/CONFORMITE_AI_ACT.md) — journalisation, floutage, rétention
|
||||||
|
|
||||||
|
## Concepts clés
|
||||||
|
|
||||||
|
- **RPA 100 % vision** : pas de coordonnées fixes ; l'agent localise un
|
||||||
|
élément par ce qu'il voit (label + contexte visuel), pas par `x,y`.
|
||||||
|
- **Apprentissage progressif** : mode shadow → assisté → autonome, validé
|
||||||
|
par supervision humaine sur les échecs.
|
||||||
|
- **LLM 100 % local** : Ollama sur la machine. Aucun appel cloud dans le
|
||||||
|
pipeline par défaut (cf. feedback projet `feedback_local_only.md`).
|
||||||
|
|
||||||
|
## Licence
|
||||||
|
|
||||||
|
Propriétaire — tous droits réservés.
|
||||||
|
|||||||
@@ -2,6 +2,17 @@
|
|||||||
"""
|
"""
|
||||||
deploy_windows.py — Script de packaging du client Windows pour Agent V1.
|
deploy_windows.py — Script de packaging du client Windows pour Agent V1.
|
||||||
|
|
||||||
|
⚠️ OBSOLÈTE (avril 2026)
|
||||||
|
Le build officiel du package Windows passe par ``deploy/build_package.sh``
|
||||||
|
(à la racine du repo) qui lit directement ``agent_v0/agent_v1/`` et évite
|
||||||
|
les clones intermédiaires. Ce script est conservé pour référence mais son
|
||||||
|
manifeste ``FILE_MANIFEST`` est incomplet : il n'inclut pas
|
||||||
|
``system_dialog_guard.py``, ``persistent_buffer.py``, ``recovery.py``,
|
||||||
|
``uia_helper.py``, ``grounding.py``, ``policy.py``,
|
||||||
|
``vision/blur_sensitive.py``, ``vision/system_info.py``,
|
||||||
|
``ui/chat_window.py``, ``ui/capture_server.py``, ``ui/shared_state.py``.
|
||||||
|
Ne PAS l'utiliser pour un packaging réel.
|
||||||
|
|
||||||
Copie uniquement les fichiers nécessaires au fonctionnement de l'agent
|
Copie uniquement les fichiers nécessaires au fonctionnement de l'agent
|
||||||
sur le PC cible (Windows), sans le serveur ni les dépendances lourdes.
|
sur le PC cible (Windows), sans le serveur ni les dépendances lourdes.
|
||||||
|
|
||||||
|
|||||||
@@ -146,8 +146,14 @@ REQUIRED_FILES=(
|
|||||||
"agent_v1/core/__init__.py"
|
"agent_v1/core/__init__.py"
|
||||||
"agent_v1/core/captor.py"
|
"agent_v1/core/captor.py"
|
||||||
"agent_v1/core/executor.py"
|
"agent_v1/core/executor.py"
|
||||||
|
"agent_v1/core/grounding.py"
|
||||||
|
"agent_v1/core/policy.py"
|
||||||
|
"agent_v1/core/recovery.py"
|
||||||
|
"agent_v1/core/system_dialog_guard.py"
|
||||||
|
"agent_v1/core/uia_helper.py"
|
||||||
"agent_v1/network/__init__.py"
|
"agent_v1/network/__init__.py"
|
||||||
"agent_v1/network/streamer.py"
|
"agent_v1/network/streamer.py"
|
||||||
|
"agent_v1/network/persistent_buffer.py"
|
||||||
"agent_v1/session/__init__.py"
|
"agent_v1/session/__init__.py"
|
||||||
"agent_v1/session/storage.py"
|
"agent_v1/session/storage.py"
|
||||||
"agent_v1/ui/__init__.py"
|
"agent_v1/ui/__init__.py"
|
||||||
@@ -156,6 +162,8 @@ REQUIRED_FILES=(
|
|||||||
"agent_v1/ui/chat_window.py"
|
"agent_v1/ui/chat_window.py"
|
||||||
"agent_v1/ui/capture_server.py"
|
"agent_v1/ui/capture_server.py"
|
||||||
"agent_v1/ui/notifications.py"
|
"agent_v1/ui/notifications.py"
|
||||||
|
"agent_v1/ui/activity_panel.py"
|
||||||
|
"agent_v1/ui/messages.py"
|
||||||
"agent_v1/vision/__init__.py"
|
"agent_v1/vision/__init__.py"
|
||||||
"agent_v1/vision/capturer.py"
|
"agent_v1/vision/capturer.py"
|
||||||
"agent_v1/vision/blur_sensitive.py"
|
"agent_v1/vision/blur_sensitive.py"
|
||||||
|
|||||||
107
docs/DEV_SETUP.md
Normal file
107
docs/DEV_SETUP.md
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
# DEV_SETUP — Guide développeur
|
||||||
|
|
||||||
|
Ce document recense les tâches d'administration du dépôt qui ne sont pas couvertes
|
||||||
|
par `README.md` (destiné aux utilisateurs) mais nécessaires au quotidien.
|
||||||
|
|
||||||
|
## Sommaire
|
||||||
|
|
||||||
|
- [Environnement Python](#environnement-python)
|
||||||
|
- [Services locaux](#services-locaux)
|
||||||
|
- [Worktrees Claude Code](#worktrees-claude-code)
|
||||||
|
- [Build du package Windows](#build-du-package-windows)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Environnement Python
|
||||||
|
|
||||||
|
- Venv du projet : `.venv/` (à la racine du repo)
|
||||||
|
- Python supporté : 3.10 à 3.12
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
## Services locaux
|
||||||
|
|
||||||
|
Utiliser `./svc.sh` pour piloter tous les services. La carte des ports est
|
||||||
|
dans `services.conf`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./svc.sh status # État de tous les services
|
||||||
|
./svc.sh start streaming # Démarrer le serveur Agent V1 (port 5005)
|
||||||
|
./svc.sh restart api # Redémarrer l'API (port 8000)
|
||||||
|
./svc.sh stop # Tout arrêter
|
||||||
|
```
|
||||||
|
|
||||||
|
## Worktrees Claude Code
|
||||||
|
|
||||||
|
La CLI Claude Code peut créer des worktrees git dans `.claude/worktrees/` pour
|
||||||
|
exécuter des agents parallèles sur des branches isolées. Ces dossiers peuvent
|
||||||
|
occuper plusieurs centaines de Mo chacun et polluer les grep.
|
||||||
|
|
||||||
|
### Vérifier l'état des worktrees
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Worktrees actifs vs branches git
|
||||||
|
git worktree list
|
||||||
|
git branch | grep worktree
|
||||||
|
|
||||||
|
# Espace disque consommé
|
||||||
|
du -sh .claude/worktrees/* 2>/dev/null
|
||||||
|
```
|
||||||
|
|
||||||
|
### Supprimer un worktree proprement
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1) Retirer l'entrée git (libère le lock dans .git/worktrees/)
|
||||||
|
git worktree remove .claude/worktrees/agent-<hash>
|
||||||
|
|
||||||
|
# 2) Si le dossier persiste (worktree orphelin), forcer le retrait
|
||||||
|
git worktree remove --force .claude/worktrees/agent-<hash>
|
||||||
|
|
||||||
|
# 3) Supprimer les branches worktree abandonnées
|
||||||
|
git branch -D worktree-agent-<hash>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Nettoyage global
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Supprimer TOUS les worktrees et leurs branches associées
|
||||||
|
for wt in .claude/worktrees/*/; do
|
||||||
|
hash=$(basename "$wt")
|
||||||
|
git worktree remove --force "$wt" 2>/dev/null
|
||||||
|
done
|
||||||
|
git branch | grep worktree-agent- | xargs -r git branch -D
|
||||||
|
git worktree prune -v
|
||||||
|
|
||||||
|
# Nettoyer les branches orphelines (worktree supprimé mais branche subsiste)
|
||||||
|
git branch | grep worktree-agent- | xargs -r git branch -D
|
||||||
|
```
|
||||||
|
|
||||||
|
Le dossier `.claude/` est gitignoré — il ne sera jamais committé.
|
||||||
|
|
||||||
|
## Build du package Windows
|
||||||
|
|
||||||
|
Le package de déploiement pour le PC Windows des utilisateurs est généré par
|
||||||
|
`deploy/build_package.sh`. Il embarque `agent_v0/agent_v1/` directement (pas
|
||||||
|
de staging intermédiaire).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./deploy/build_package.sh # Build standard
|
||||||
|
./deploy/build_package.sh --clean # Nettoyer avant de builder
|
||||||
|
```
|
||||||
|
|
||||||
|
Le script vérifie la présence de tous les fichiers Python requis via la liste
|
||||||
|
`REQUIRED_FILES`. Si vous ajoutez un nouveau module Python critique côté agent
|
||||||
|
(ex: dans `agent_v1/core/` ou `agent_v1/network/`), **ajoutez-le à
|
||||||
|
`REQUIRED_FILES`** pour qu'un fichier manquant fasse échouer le build plutôt
|
||||||
|
que de produire un zip incomplet.
|
||||||
|
|
||||||
|
### Note historique : `agent_v0/deploy/windows_client/`
|
||||||
|
|
||||||
|
Ce dossier a été créé par `agent_v0/deploy_windows.py` comme staging de build
|
||||||
|
et s'est désynchronisé. Il a été supprimé en avril 2026 — le build officiel
|
||||||
|
passe désormais par `deploy/build_package.sh` qui lit directement
|
||||||
|
`agent_v0/agent_v1/`.
|
||||||
112
docs/STATUS.md
Normal file
112
docs/STATUS.md
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
# STATUS — État réel du projet RPA Vision V3
|
||||||
|
|
||||||
|
> Dernière mise à jour : 14 avril 2026
|
||||||
|
>
|
||||||
|
> Ce document remplace les affirmations marketing du README historique.
|
||||||
|
> Il décrit l'état réel des modules, sans embellissement.
|
||||||
|
|
||||||
|
## Positionnement
|
||||||
|
|
||||||
|
**POC avancé** — certaines briques sont fonctionnelles de bout en bout
|
||||||
|
(capture, streaming, premier replay E2E sur Notepad), d'autres sont en cours
|
||||||
|
de stabilisation ou à l'état d'ébauche. Le projet n'est pas « production-ready ».
|
||||||
|
|
||||||
|
Les fonctionnalités ci-dessous sont documentées sans minimiser les limites.
|
||||||
|
|
||||||
|
## Légende
|
||||||
|
|
||||||
|
- **opérationnel** : testé, utilisé régulièrement, pas de régression récente connue
|
||||||
|
- **alpha** : branché et fonctionnel sur un cas d'usage de référence, manque
|
||||||
|
de recul sur la généralisation
|
||||||
|
- **en cours** : en développement actif, comportement instable
|
||||||
|
- **non démarré** : planifié, pas encore de code significatif
|
||||||
|
|
||||||
|
## Vue d'ensemble par module
|
||||||
|
|
||||||
|
| Module / fonctionnalité | État | Commentaire |
|
||||||
|
|---|---|---|
|
||||||
|
| Capture d'écran + événements (Agent V1 Windows) | opérationnel | `agent_v0/agent_v1/` — systray, streaming vers serveur |
|
||||||
|
| Streaming server (`agent_v0/server_v1/`) | opérationnel | FastAPI port 5005, sessions en mémoire |
|
||||||
|
| Stockage sessions (`RawSession`) | opérationnel | JSON + screenshots, rotation manuelle |
|
||||||
|
| Détection UI (`core/detection/`) | alpha | Cascade VLM + OCR + templates, sensible au modèle choisi |
|
||||||
|
| Embedding & FAISS (`core/embedding/`) | alpha | CLIP ViT-B/32 + index Flat, pas testé à grande échelle |
|
||||||
|
| Workflow Graph (`core/graph/`) | alpha | Construction depuis sessions, matching heuristique |
|
||||||
|
| Replay E2E (`agent_v0/server_v1/api_stream.py`) | alpha | Premier succès le 13 avril 2026 sur Notepad, asymétries strict/legacy connues |
|
||||||
|
| Mode apprentissage supervisé | alpha | Pause sur échec répété, demande d'intervention humaine |
|
||||||
|
| TargetMemoryStore (Phase 1 apprentissage) | alpha | Schéma SQLite en place, DB vide jusqu'au premier replay complet |
|
||||||
|
| Grounding visuel (UI-TARS, gemma4, qwen3-vl) | alpha | Switch de modèle via `.env` (`RPA_VLM_MODEL`) |
|
||||||
|
| SomEngine (YOLO + docTR + VLM) | alpha | Intégré, dormant dans la cascade par défaut |
|
||||||
|
| Web Dashboard (port 5001) | alpha | Flask + SocketIO, fonctionnel mais non durci |
|
||||||
|
| Visual Workflow Builder (VWB, ports 5002 + 3002) | en cours | Catalogue d'actions, UI React. Bugs DB runtime connus |
|
||||||
|
| Agent Chat (port 5004) | alpha | Planner autonome, basé LLM local |
|
||||||
|
| Module auth (`core/auth/`) | alpha | Vault Fernet + TOTP, CLI seul, pas d'intégration UI |
|
||||||
|
| Federation (`core/federation/`) | alpha | Export/import de LearningPacks, pas de test terrain |
|
||||||
|
| GPU Resource Manager (`core/gpu/`) | alpha | Gestion Ollama + warmup modèles, code utilisé mais peu testé |
|
||||||
|
| Self-healing / recovery | en cours | Heuristiques présentes, comportement global non stabilisé |
|
||||||
|
| Analytics / reporting | en cours | Prototype, pas de frontend finalisé |
|
||||||
|
| Tests end-to-end | en cours | 1 replay E2E réussi, 56 tests d'intégration verts hors cas connus |
|
||||||
|
| Deploy Windows (`deploy/build_package.sh`) | opérationnel | Produit `Lea_v<version>.zip`, vérification des fichiers requis |
|
||||||
|
| Conformité AI Act (journalisation, floutage, rétention logs) | alpha | Mécanismes en place, audit formel non fait |
|
||||||
|
|
||||||
|
## Limites connues (non exploitables comme failles)
|
||||||
|
|
||||||
|
- Plusieurs copies parallèles du code agent ont existé (source, staging
|
||||||
|
Windows, worktrees) avec risque de divergence. Le staging Windows obsolète
|
||||||
|
a été supprimé ; le build officiel passe par `deploy/build_package.sh`.
|
||||||
|
- La base `data/learning/target_memory.db` reste vide tant qu'un replay
|
||||||
|
complet n'a pas été cristallisé — l'apprentissage est câblé mais pas
|
||||||
|
encore éprouvé.
|
||||||
|
- Certaines asymétries entre chemins « strict » et « legacy » dans
|
||||||
|
`api_stream.py` peuvent faire retomber une erreur en mode strict vers
|
||||||
|
le retry+stop legacy au lieu de la pause d'apprentissage.
|
||||||
|
- Le worker de compilation sessions → `ExecutionPlan` (port 5099) n'est pas
|
||||||
|
lancé par défaut — les sessions enregistrées ne sont pas compilées
|
||||||
|
automatiquement.
|
||||||
|
- Le VWB présente des bugs en écriture DB identifiés et documentés.
|
||||||
|
- La détection VLM est sensible au choix de modèle ; le défaut est
|
||||||
|
`gemma4:latest` (cf. `.env.example`).
|
||||||
|
|
||||||
|
## Modèles utilisés
|
||||||
|
|
||||||
|
Définis dans `.env` (voir `.env.example`) :
|
||||||
|
|
||||||
|
| Variable | Valeur par défaut | Rôle |
|
||||||
|
|---|---|---|
|
||||||
|
| `RPA_VLM_MODEL` | `gemma4:latest` | Modèle VLM principal (Ollama) |
|
||||||
|
| `VLM_MODEL` | `gemma4:latest` | Alias de compatibilité |
|
||||||
|
| `CLIP_MODEL` | `ViT-B-32` | Embeddings visuels |
|
||||||
|
| `CLIP_PRETRAINED` | `openai` | Poids pré-entraînés |
|
||||||
|
| `VLM_ENDPOINT` | `http://localhost:11434` | Ollama local |
|
||||||
|
|
||||||
|
Modèles alternatifs testés : `qwen3-vl:8b`, `ui-tars` (grounding direct).
|
||||||
|
Aucun appel cloud par défaut — tout passe par Ollama local.
|
||||||
|
|
||||||
|
## Infrastructure
|
||||||
|
|
||||||
|
- **OS cible serveur** : Linux (Ubuntu 24.04 testé)
|
||||||
|
- **GPU recommandé** : NVIDIA (ex. RTX 5070) pour l'inférence VLM locale
|
||||||
|
- **OS cible client** : Windows 10/11 (Agent V1)
|
||||||
|
- **Python** : 3.10 à 3.12
|
||||||
|
- **Ollama** : service local obligatoire
|
||||||
|
|
||||||
|
## Ports utilisés (source : `services.conf`)
|
||||||
|
|
||||||
|
| Port | Service |
|
||||||
|
|---|---|
|
||||||
|
| 8000 | API Server (core upload) |
|
||||||
|
| 5001 | Web Dashboard |
|
||||||
|
| 5002 | VWB Backend (Flask) |
|
||||||
|
| 5003 | Monitoring |
|
||||||
|
| 5004 | Agent Chat |
|
||||||
|
| 5005 | Streaming Server (Agent V1) |
|
||||||
|
| 5006 | Session Cleaner |
|
||||||
|
| 5099 | Worker de compilation (optionnel) |
|
||||||
|
| 3002 | VWB Frontend (Vite/React) |
|
||||||
|
|
||||||
|
## Prochaines étapes prioritaires
|
||||||
|
|
||||||
|
1. Stabiliser le replay E2E sur 3 applications métier différentes
|
||||||
|
2. Alimenter `TargetMemoryStore` via des replays réussis réels
|
||||||
|
3. Harmoniser les branches `strict` / `legacy` dans `api_stream.py`
|
||||||
|
4. Durcir VWB ou pivoter vers un outil dédié plus simple
|
||||||
|
5. Activer le worker de compilation sessions → ExecutionPlan
|
||||||
Reference in New Issue
Block a user