Dom
d5deac3029
feat: replay visuel VLM-first, worker séparé, package Léa, AZERTY, sécurité HTTPS
...
Pipeline replay visuel :
- VLM-first : l'agent appelle Ollama directement pour trouver les éléments
- Template matching en fallback (seuil strict 0.90)
- Stop immédiat si élément non trouvé (pas de clic blind)
- Replay depuis session brute (/replay-session) sans attendre le VLM
- Vérification post-action (screenshot hash avant/après)
- Gestion des popups (Enter/Escape/Tab+Enter)
Worker VLM séparé :
- run_worker.py : process distinct du serveur HTTP
- Communication par fichiers (_worker_queue.txt + _replay_active.lock)
- Le serveur HTTP ne fait plus jamais de VLM → toujours réactif
- Service systemd rpa-worker.service
Capture clavier :
- raw_keys (vk + press/release) pour replay exact indépendant du layout
- Fix AZERTY : ToUnicodeEx + AltGr detection
- Enter capturé comme \n, Tab comme \t
- Filtrage modificateurs seuls (Ctrl/Alt/Shift parasites)
- Fusion text_input consécutifs, dédup key_combo
Sécurité & Internet :
- HTTPS Let's Encrypt (lea.labs + vwb.labs.laurinebazin.design)
- Token API fixe dans .env.local
- HTTP Basic Auth sur VWB
- Security headers (HSTS, CSP, nosniff)
- CORS domaines publics, plus de wildcard
Infrastructure :
- DPI awareness (SetProcessDpiAwareness) Python + Rust
- Métadonnées système (dpi_scale, window_bounds, monitors, os_theme)
- Template matching multi-scale [0.5, 2.0]
- Résolution dynamique (plus de hardcode 1920x1080)
- VLM prefill fix (47x speedup, 3.5s au lieu de 180s)
Modules :
- core/auth/ : credential vault (Fernet AES), TOTP (RFC 6238), auth handler
- core/federation/ : LearningPack export/import anonymisé, FAISS global
- deploy/ : package Léa (config.txt, Lea.bat, install.bat, LISEZMOI.txt)
UX :
- Filtrage OS (VWB + Chat montrent que les workflows de l'OS courant)
- Bibliothèque persistante (cache local + SQLite)
- Clustering hybride (titre fenêtre + DBSCAN)
- EdgeConstraints + PostConditions peuplés
- GraphBuilder compound actions (toutes les frappes)
Agent Rust :
- Token Bearer auth (network.rs)
- sysinfo.rs (DPI, résolution, window bounds via Win32 API)
- config.txt lu automatiquement
- Support Chrome/Brave/Firefox (pas que Edge)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-26 10:19:18 +01:00
Dom
cf495dd82f
feat: chat unifié, GestureCatalog, Copilot, Léa UI, extraction données, vérification replay
...
Refonte majeure du système Agent Chat et ajout de nombreux modules :
- Chat unifié : suppression du dual Workflows/Agent Libre, tout passe par /api/chat
avec résolution en 3 niveaux (workflow → geste → "montre-moi")
- GestureCatalog : 38 raccourcis clavier universels Windows avec matching sémantique,
substitution automatique dans les replays, et endpoint /api/gestures
- Mode Copilot : exécution pas-à-pas des workflows avec validation humaine via WebSocket
(approve/skip/abort) avant chaque action
- Léa UI (agent_v0/lea_ui/) : interface PyQt5 pour Windows avec overlay transparent
pour feedback visuel pendant le replay
- Data Extraction (core/extraction/) : moteur d'extraction visuelle de données
(OCR + VLM → SQLite), avec schémas YAML et export CSV/Excel
- ReplayVerifier (agent_v0/server_v1/) : vérification post-action par comparaison
de screenshots, avec logique de retry (max 3)
- IntentParser durci : meilleur fallback regex, type GREETING, patterns améliorés
- Dashboard : nouvelles pages gestures, streaming, extractions
- Tests : 63 tests GestureCatalog, 47 tests extraction, corrections tests existants
- Dépréciation : /api/agent/plan et /api/agent/execute retournent HTTP 410,
suppression du code hardcodé _plan_to_replay_actions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-15 10:02:09 +01:00
Dom
e7657ee1e5
Fix: Embeddings CLIP + Nettoyage post-apprentissage
...
Ce commit corrige deux problèmes critiques dans le pipeline d'apprentissage:
**Fix A - Embeddings CLIP fonctionnels**
- Problème: Chemins relatifs (shots/shot_0001.png) causaient des erreurs
- Solution: Utilisation de chemins absolus dans processing_pipeline.py et graph_builder.py
- Résultat: Embeddings générés avec succès, patterns détectés par clustering DBSCAN
Modifications:
- server/processing_pipeline.py:279 - Chemin absolu pour ScreenState.raw.screenshot_path
- core/graph/graph_builder.py:310 - Chemin absolu pour GraphBuilder._create_screen_states()
**Fix B - Nettoyage post-apprentissage**
- Problème: Screenshots jamais nettoyés ou nettoyés trop tôt (avant apprentissage)
- Solution: Activation du nettoyage APRÈS création des screen_states
- Résultat: Gain d'espace ~99% (screenshots supprimés, screen_states conservés)
Modifications:
- server/processing_pipeline.py:165 - Nettoyage conditionnel si screen_states créés
Impact:
- ✅ CLIP ViT-B-32 chargé et fonctionnel (512D embeddings)
- ✅ 3 patterns détectés sur session test (40 screenshots)
- ✅ Nettoyage automatique: uploads/*.enc, uploads/*.zip, sessions/sess_*/ supprimés
- ✅ Données conservées: screen_states/, embeddings/, workflows/
- ✅ Gain d'espace: 98.3% (6 MB → 100 KB par session)
Testé avec: sess_20260107T220743_6be50905 (40 events, 40 screenshots)
Status: ✅ POC/MVP prêt pour démo investisseurs
🤖 Généré avec [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-07 22:24:19 +01:00