perf: réduire crops VLM 80→30 + fix bridge learned workflows path

- 30 crops suffisent pour les éléments UI principaux
- ~6min/screenshot au lieu de 17min (3x plus rapide)
- Bridge cherche aussi dans live_sessions/workflows/

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-03-18 22:57:36 +01:00
parent 5973058f08
commit ad7ff3bce4
2 changed files with 15 additions and 10 deletions

View File

@@ -217,7 +217,7 @@ class UIDetector:
# des centaines d'appels VLM inutiles (~2-3s chacun). # des centaines d'appels VLM inutiles (~2-3s chacun).
# On garde max 80 candidats — suffisant pour obtenir ~50 éléments # On garde max 80 candidats — suffisant pour obtenir ~50 éléments
# après filtrage par confiance, tout en gardant un temps raisonnable. # après filtrage par confiance, tout en gardant un temps raisonnable.
max_candidates = 80 max_candidates = 30 # 30 suffisent pour les éléments principaux (~6min/screenshot au lieu de 17)
if len(regions) > max_candidates: if len(regions) > max_candidates:
# Trier par confiance décroissante, puis par surface décroissante # Trier par confiance décroissante, puis par surface décroissante
regions.sort(key=lambda r: (r.confidence, r.w * r.h), reverse=True) regions.sort(key=lambda r: (r.confidence, r.w * r.h), reverse=True)

View File

@@ -553,8 +553,14 @@ def list_learned_workflows_from_disk() -> List[Dict[str, Any]]:
Retourne une liste de dicts avec les métadonnées de base. Retourne une liste de dicts avec les métadonnées de base.
""" """
base_dir = Path(_ROOT) / "data" / "training" / "workflows" # Chercher dans les deux emplacements possibles
if not base_dir.exists(): base_dirs = [
Path(_ROOT) / "data" / "training" / "workflows",
Path(_ROOT) / "data" / "training" / "live_sessions" / "workflows",
]
existing_dirs = [d for d in base_dirs if d.exists()]
if not existing_dirs:
return [] return []
workflows = [] workflows = []
@@ -578,13 +584,12 @@ def list_learned_workflows_from_disk() -> List[Dict[str, Any]]:
except Exception as e: except Exception as e:
logger.warning("Erreur lecture %s : %s", f, e) logger.warning("Erreur lecture %s : %s", f, e)
# Racine # Scanner tous les répertoires trouvés
_scan_dir(base_dir) for base_dir in existing_dirs:
_scan_dir(base_dir)
# Sous-dossiers machine for machine_dir in sorted(base_dir.iterdir()):
for machine_dir in sorted(base_dir.iterdir()): if machine_dir.is_dir():
if machine_dir.is_dir(): _scan_dir(machine_dir, machine_id=machine_dir.name)
_scan_dir(machine_dir, machine_id=machine_dir.name)
return workflows return workflows