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>
This commit is contained in:
275
deploy/build_lea_exe.sh
Executable file
275
deploy/build_lea_exe.sh
Executable file
@@ -0,0 +1,275 @@
|
||||
#!/bin/bash
|
||||
# ============================================================
|
||||
# build_lea_exe.sh — Cree un executable Windows autonome via PyInstaller
|
||||
#
|
||||
# IMPORTANT : Ce script doit tourner SUR WINDOWS (ou dans Wine/WSL
|
||||
# avec acces a un Python Windows). PyInstaller ne peut pas produire
|
||||
# un .exe Windows depuis Linux natif.
|
||||
#
|
||||
# Procedure recommandee :
|
||||
# 1. Sur le PC Windows (192.168.1.11 ou autre) :
|
||||
# - Installer Python 3.12 (https://python.org)
|
||||
# - pip install pyinstaller
|
||||
# 2. Copier ce script et le dossier agent_v0/ sur le PC Windows
|
||||
# 3. Executer depuis PowerShell/cmd :
|
||||
# python -m PyInstaller --onefile --windowed ^
|
||||
# --name "Lea" ^
|
||||
# --add-data "agent_v1;agent_v1" ^
|
||||
# --add-data "lea_ui;lea_ui" ^
|
||||
# --add-data "config.txt;." ^
|
||||
# --hidden-import "pynput.keyboard._win32" ^
|
||||
# --hidden-import "pynput.mouse._win32" ^
|
||||
# --hidden-import "pystray._win32" ^
|
||||
# --hidden-import "plyer.platforms.win.notification" ^
|
||||
# --hidden-import "win32api" ^
|
||||
# --hidden-import "win32con" ^
|
||||
# --hidden-import "win32gui" ^
|
||||
# run_agent_v1.py
|
||||
#
|
||||
# Le .exe resultant sera dans dist/Lea.exe (~50-100 MB)
|
||||
#
|
||||
# ============================================================
|
||||
#
|
||||
# OPTION ALTERNATIVE : Python Embedded (recommandee)
|
||||
#
|
||||
# Python Embedded est un Python portable officiel (pas d'installation).
|
||||
# Combine avec le code source, c'est la methode la plus fiable
|
||||
# pour les non-informaticiens.
|
||||
#
|
||||
# Sur une machine Windows :
|
||||
# 1. Telecharger Python Embedded 3.12 :
|
||||
# https://www.python.org/ftp/python/3.12.9/python-3.12.9-embed-amd64.zip
|
||||
#
|
||||
# 2. Dezipper dans un dossier temporaire
|
||||
#
|
||||
# 3. Activer pip dans Python Embedded :
|
||||
# - Editer python312._pth, decommenter "import site"
|
||||
# - Telecharger get-pip.py : https://bootstrap.pypa.io/get-pip.py
|
||||
# - Executer : python.exe get-pip.py
|
||||
#
|
||||
# 4. Installer les dependances :
|
||||
# python.exe -m pip install -r requirements_agent.txt
|
||||
#
|
||||
# 5. Copier le code source (agent_v1/, lea_ui/, run_agent_v1.py)
|
||||
#
|
||||
# 6. Zipper le tout → Lea_Portable.zip (~40-60 MB)
|
||||
#
|
||||
# Le Lea.bat dans ce cas utiliserait :
|
||||
# python\python.exe run_agent_v1.py
|
||||
# au lieu de .venv\Scripts\python.exe
|
||||
#
|
||||
# ============================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
||||
|
||||
echo "============================================================"
|
||||
echo " Build Lea.exe (PyInstaller)"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " Ce script ne peut pas produire un .exe Windows depuis Linux."
|
||||
echo ""
|
||||
echo " OPTIONS DISPONIBLES :"
|
||||
echo ""
|
||||
echo " 1. OPTION VIA PC WINDOWS (recommandee pour .exe) :"
|
||||
echo " Copiez le dossier deploy/ sur le PC Windows"
|
||||
echo " puis lancez la commande PyInstaller ci-dessous."
|
||||
echo ""
|
||||
echo " 2. OPTION ZIP + VENV (recommandee pour deploiement rapide) :"
|
||||
echo " Lancez ./deploy/build_package.sh"
|
||||
echo " Le zip resultant contient install.bat + Lea.bat"
|
||||
echo ""
|
||||
echo " 3. OPTION PYTHON EMBEDDED (recommandee pour zero install) :"
|
||||
echo " Suivez les instructions dans ce script (section ALTERNATIVE)"
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
|
||||
# Generer le .spec PyInstaller pour reference
|
||||
SPEC_FILE="$SCRIPT_DIR/Lea.spec"
|
||||
cat > "$SPEC_FILE" << 'PYINSTALLER_SPEC'
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
# Lea.spec — Configuration PyInstaller pour l'agent Lea
|
||||
#
|
||||
# Usage sur Windows :
|
||||
# pip install pyinstaller
|
||||
# pyinstaller Lea.spec
|
||||
#
|
||||
# Le .exe resultant sera dans dist/Lea.exe
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
block_cipher = None
|
||||
|
||||
# Repertoire de travail (ou se trouve ce .spec)
|
||||
SPEC_DIR = os.path.dirname(os.path.abspath(SPEC())) if 'SPEC' in dir() else '.'
|
||||
|
||||
a = Analysis(
|
||||
['run_agent_v1.py'],
|
||||
pathex=['.'],
|
||||
binaries=[],
|
||||
datas=[
|
||||
('agent_v1', 'agent_v1'),
|
||||
('lea_ui', 'lea_ui'),
|
||||
('config.txt', '.'),
|
||||
('LISEZMOI.txt', '.'),
|
||||
],
|
||||
hiddenimports=[
|
||||
# pynput backends Windows
|
||||
'pynput.keyboard._win32',
|
||||
'pynput.mouse._win32',
|
||||
# pystray backend Windows
|
||||
'pystray._win32',
|
||||
# plyer notification Windows
|
||||
'plyer.platforms.win',
|
||||
'plyer.platforms.win.notification',
|
||||
# pywin32
|
||||
'win32api',
|
||||
'win32con',
|
||||
'win32gui',
|
||||
'win32com',
|
||||
'pythoncom',
|
||||
# tkinter (stdlib, parfois manquant dans PyInstaller)
|
||||
'tkinter',
|
||||
'tkinter.simpledialog',
|
||||
'tkinter.messagebox',
|
||||
'tkinter.filedialog',
|
||||
],
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
runtime_hooks=[],
|
||||
excludes=[
|
||||
# Exclure les modules lourds non necessaires cote client
|
||||
'torch',
|
||||
'torchvision',
|
||||
'transformers',
|
||||
'clip',
|
||||
'open_clip',
|
||||
'faiss',
|
||||
'cv2', # opencv pas obligatoire (blur_sensitive a un fallback)
|
||||
'numpy', # requis par PIL mais pas directement
|
||||
'scipy',
|
||||
'sklearn',
|
||||
'matplotlib',
|
||||
'pandas',
|
||||
'tensorflow',
|
||||
],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False,
|
||||
)
|
||||
|
||||
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
||||
|
||||
exe = EXE(
|
||||
pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
[],
|
||||
name='Lea',
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
runtime_tmpdir=None,
|
||||
console=False, # --windowed : pas de console visible
|
||||
disable_windowed_traceback=False,
|
||||
argv_emulation=False,
|
||||
target_arch=None,
|
||||
codesign_identity=None,
|
||||
entitlements_file=None,
|
||||
# icon='assets/lea_icon.ico', # Decommenter quand l'icone sera creee
|
||||
)
|
||||
PYINSTALLER_SPEC
|
||||
|
||||
echo " Fichier Lea.spec genere dans : $SPEC_FILE"
|
||||
echo ""
|
||||
echo " Pour builder sur Windows :"
|
||||
echo " 1. Copier le dossier Lea/ (apres build_package.sh) sur le PC Windows"
|
||||
echo " 2. pip install pyinstaller"
|
||||
echo " 3. cd Lea"
|
||||
echo " 4. pyinstaller ../Lea.spec"
|
||||
echo " 5. Le .exe sera dans dist/Lea.exe"
|
||||
echo ""
|
||||
|
||||
# Generer aussi un script batch pour builder sur Windows
|
||||
WIN_BUILD="$SCRIPT_DIR/build_exe_windows.bat"
|
||||
cat > "$WIN_BUILD" << 'WIN_BATCH'
|
||||
@echo off
|
||||
chcp 65001 >nul 2>&1
|
||||
title Build Lea.exe
|
||||
|
||||
echo ============================================================
|
||||
echo Build Lea.exe (PyInstaller)
|
||||
echo ============================================================
|
||||
echo.
|
||||
|
||||
:: Verifier PyInstaller
|
||||
pip show pyinstaller >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo Installation de PyInstaller...
|
||||
pip install pyinstaller
|
||||
)
|
||||
|
||||
:: Builder
|
||||
echo Build en cours (cela prend 2-5 minutes)...
|
||||
echo.
|
||||
|
||||
pyinstaller --onefile --windowed ^
|
||||
--name "Lea" ^
|
||||
--add-data "agent_v1;agent_v1" ^
|
||||
--add-data "lea_ui;lea_ui" ^
|
||||
--add-data "config.txt;." ^
|
||||
--add-data "LISEZMOI.txt;." ^
|
||||
--hidden-import "pynput.keyboard._win32" ^
|
||||
--hidden-import "pynput.mouse._win32" ^
|
||||
--hidden-import "pystray._win32" ^
|
||||
--hidden-import "plyer.platforms.win.notification" ^
|
||||
--hidden-import "win32api" ^
|
||||
--hidden-import "win32con" ^
|
||||
--hidden-import "win32gui" ^
|
||||
--hidden-import "tkinter" ^
|
||||
--hidden-import "tkinter.simpledialog" ^
|
||||
--hidden-import "tkinter.messagebox" ^
|
||||
--exclude-module "torch" ^
|
||||
--exclude-module "torchvision" ^
|
||||
--exclude-module "transformers" ^
|
||||
--exclude-module "clip" ^
|
||||
--exclude-module "faiss" ^
|
||||
--exclude-module "scipy" ^
|
||||
--exclude-module "sklearn" ^
|
||||
--exclude-module "matplotlib" ^
|
||||
--exclude-module "pandas" ^
|
||||
--exclude-module "tensorflow" ^
|
||||
run_agent_v1.py
|
||||
|
||||
if errorlevel 1 (
|
||||
echo.
|
||||
echo ERREUR : Le build a echoue.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo.
|
||||
echo ============================================================
|
||||
echo Build termine !
|
||||
echo.
|
||||
echo Lea.exe est dans le dossier dist\
|
||||
echo Taille :
|
||||
dir dist\Lea.exe | findstr "Lea.exe"
|
||||
echo.
|
||||
echo Pour deployer : copiez dist\Lea.exe + config.txt + LISEZMOI.txt
|
||||
echo ============================================================
|
||||
pause
|
||||
WIN_BATCH
|
||||
|
||||
echo " Script Windows genere : $WIN_BUILD"
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
166
deploy/build_package.sh
Executable file
166
deploy/build_package.sh
Executable file
@@ -0,0 +1,166 @@
|
||||
#!/bin/bash
|
||||
# ============================================================
|
||||
# build_package.sh — Assemble le package Lea pour deploiement Windows
|
||||
#
|
||||
# Produit : Lea_v<version>.zip (< 5 MB sans venv)
|
||||
#
|
||||
# Usage :
|
||||
# ./deploy/build_package.sh # Package standard
|
||||
# ./deploy/build_package.sh --clean # Nettoyer avant de builder
|
||||
#
|
||||
# Le zip contient tout ce qu'il faut pour un deploiement :
|
||||
# - install.bat (premiere installation)
|
||||
# - Lea.bat (lancement quotidien)
|
||||
# - config.txt (parametres serveur)
|
||||
# - LISEZMOI.txt (documentation utilisateur)
|
||||
# - Code Python de l'agent
|
||||
# ============================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Couleurs pour les messages
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Repertoire racine du projet
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
||||
|
||||
# Version (lue depuis config.py de l'agent)
|
||||
VERSION=$(grep -oP 'AGENT_VERSION\s*=\s*"([^"]+)"' "$PROJECT_ROOT/agent_v0/agent_v1/config.py" | grep -oP '"[^"]+"' | tr -d '"' || echo "1.0.0")
|
||||
|
||||
# Dossier de sortie
|
||||
BUILD_DIR="$SCRIPT_DIR/build"
|
||||
PACKAGE_DIR="$BUILD_DIR/Lea"
|
||||
OUTPUT_ZIP="$SCRIPT_DIR/Lea_v${VERSION}.zip"
|
||||
|
||||
echo -e "${GREEN}============================================================${NC}"
|
||||
echo -e "${GREEN} Build du package Lea v${VERSION}${NC}"
|
||||
echo -e "${GREEN}============================================================${NC}"
|
||||
echo ""
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# Option --clean
|
||||
# ---------------------------------------------------------------
|
||||
if [[ "${1:-}" == "--clean" ]]; then
|
||||
echo -e "${YELLOW}Nettoyage du build precedent...${NC}"
|
||||
rm -rf "$BUILD_DIR"
|
||||
rm -f "$SCRIPT_DIR"/Lea_v*.zip
|
||||
echo " OK"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# 1. Creer le dossier de build
|
||||
# ---------------------------------------------------------------
|
||||
echo "[1/7] Preparation du dossier de build..."
|
||||
rm -rf "$PACKAGE_DIR"
|
||||
mkdir -p "$PACKAGE_DIR"
|
||||
echo " $PACKAGE_DIR cree"
|
||||
echo ""
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# 2. Copier les fichiers de deploiement (bat, config, readme)
|
||||
# ---------------------------------------------------------------
|
||||
echo "[2/7] Copie des fichiers de deploiement..."
|
||||
cp "$SCRIPT_DIR/lea_package/Lea.bat" "$PACKAGE_DIR/"
|
||||
cp "$SCRIPT_DIR/lea_package/install.bat" "$PACKAGE_DIR/"
|
||||
cp "$SCRIPT_DIR/lea_package/config.txt" "$PACKAGE_DIR/"
|
||||
cp "$SCRIPT_DIR/lea_package/LISEZMOI.txt" "$PACKAGE_DIR/"
|
||||
cp "$SCRIPT_DIR/lea_package/requirements_agent.txt" "$PACKAGE_DIR/"
|
||||
echo " 5 fichiers copies"
|
||||
echo ""
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# 3. Copier le point d'entree
|
||||
# ---------------------------------------------------------------
|
||||
echo "[3/7] Copie du point d'entree..."
|
||||
cp "$PROJECT_ROOT/agent_v0/run_agent_v1.py" "$PACKAGE_DIR/"
|
||||
echo " run_agent_v1.py copie"
|
||||
echo ""
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# 4. Copier le package agent_v1 (code Python)
|
||||
# ---------------------------------------------------------------
|
||||
echo "[4/7] Copie du code agent_v1..."
|
||||
# Copier tout le dossier en excluant les fichiers inutiles
|
||||
rsync -a \
|
||||
--exclude='__pycache__' \
|
||||
--exclude='*.pyc' \
|
||||
--exclude='.pytest_cache' \
|
||||
--exclude='sessions/' \
|
||||
--exclude='logs/*.log' \
|
||||
--exclude='.hypothesis' \
|
||||
"$PROJECT_ROOT/agent_v0/agent_v1/" \
|
||||
"$PACKAGE_DIR/agent_v1/"
|
||||
|
||||
# Creer les dossiers necessaires (vides)
|
||||
mkdir -p "$PACKAGE_DIR/agent_v1/sessions"
|
||||
mkdir -p "$PACKAGE_DIR/agent_v1/logs"
|
||||
|
||||
echo " agent_v1/ copie ($(find "$PACKAGE_DIR/agent_v1" -name "*.py" | wc -l) fichiers Python)"
|
||||
echo ""
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# 5. Copier le module lea_ui (client serveur pour le chat)
|
||||
# ---------------------------------------------------------------
|
||||
echo "[5/7] Copie du module lea_ui..."
|
||||
mkdir -p "$PACKAGE_DIR/lea_ui"
|
||||
cp "$PROJECT_ROOT/agent_v0/lea_ui/"*.py "$PACKAGE_DIR/lea_ui/"
|
||||
echo " lea_ui/ copie ($(ls "$PACKAGE_DIR/lea_ui/"*.py | wc -l) fichiers)"
|
||||
echo ""
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# 6. Copier le __init__.py racine (pour les imports relatifs)
|
||||
# ---------------------------------------------------------------
|
||||
echo "[6/7] Configuration des packages Python..."
|
||||
# Le __init__.py au niveau racine du package (agent_v0 level)
|
||||
# n'est PAS necessaire car run_agent_v1.py est au meme niveau que agent_v1/
|
||||
# Mais lea_ui est importe avec un import relatif depuis agent_v1/main.py
|
||||
# via `from ..lea_ui.server_client import LeaServerClient`
|
||||
# Cet import fonctionne uniquement si l'arborescence est un package.
|
||||
# Or, dans le deploiement, lea_ui est au meme niveau que agent_v1,
|
||||
# et le fallback dans main.py fait `from lea_ui.server_client import LeaServerClient`
|
||||
# qui fonctionne car run_agent_v1.py ajoute current_dir au sys.path.
|
||||
echo " Structure d'imports verifiee"
|
||||
echo ""
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# 7. Creer le zip
|
||||
# ---------------------------------------------------------------
|
||||
echo "[7/7] Creation du zip..."
|
||||
cd "$BUILD_DIR"
|
||||
rm -f "$OUTPUT_ZIP"
|
||||
zip -r "$OUTPUT_ZIP" "Lea/" -x "Lea/.venv/*" "Lea/__pycache__/*" "Lea/*/__pycache__/*"
|
||||
cd "$PROJECT_ROOT"
|
||||
|
||||
# Taille du zip
|
||||
ZIP_SIZE=$(du -h "$OUTPUT_ZIP" | cut -f1)
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}============================================================${NC}"
|
||||
echo -e "${GREEN} Build termine !${NC}"
|
||||
echo -e "${GREEN}============================================================${NC}"
|
||||
echo ""
|
||||
echo " Package : $OUTPUT_ZIP"
|
||||
echo " Taille : $ZIP_SIZE"
|
||||
echo " Version : $VERSION"
|
||||
echo ""
|
||||
echo " Contenu du package :"
|
||||
echo " --------------------"
|
||||
echo ""
|
||||
|
||||
# Lister le contenu du zip (structure lisible)
|
||||
unzip -l "$OUTPUT_ZIP" | tail -n +4 | head -n -2 | awk '{print " " $4}'
|
||||
|
||||
echo ""
|
||||
echo -e "${YELLOW} Deploiement :${NC}"
|
||||
echo " 1. Copier le zip sur le PC Windows du collaborateur"
|
||||
echo " 2. Dezipper dans un dossier (ex: C:\\Lea)"
|
||||
echo " 3. Editer config.txt si besoin (adresse serveur, token)"
|
||||
echo " 4. Double-cliquer install.bat (une seule fois)"
|
||||
echo " 5. Double-cliquer Lea.bat pour lancer"
|
||||
echo ""
|
||||
echo -e "${GREEN}============================================================${NC}"
|
||||
85
deploy/lea_package/LISEZMOI.txt
Normal file
85
deploy/lea_package/LISEZMOI.txt
Normal file
@@ -0,0 +1,85 @@
|
||||
============================================================
|
||||
Lea - Votre assistante intelligente
|
||||
============================================================
|
||||
|
||||
Bienvenue ! Lea est une assistante qui apprend vos taches
|
||||
repetitives sur l'ordinateur et peut les refaire a votre place.
|
||||
|
||||
|
||||
PREMIERE INSTALLATION
|
||||
---------------------
|
||||
|
||||
1. Double-cliquez sur "install.bat"
|
||||
(cela prend 2-3 minutes, une seule fois)
|
||||
|
||||
2. Si une fenetre vous demande d'autoriser Python,
|
||||
cliquez "Oui" ou "Autoriser".
|
||||
|
||||
3. A la fin, vous verrez "Installation terminee !"
|
||||
|
||||
|
||||
LANCER LEA
|
||||
----------
|
||||
|
||||
Double-cliquez sur "Lea.bat"
|
||||
|
||||
Lea apparait en bas a droite de votre ecran, dans la barre
|
||||
des taches (petite icone ronde, a cote de l'horloge).
|
||||
|
||||
Clic droit sur l'icone pour ouvrir le menu :
|
||||
|
||||
- "Apprenez-moi une tache" : Lea observe ce que vous faites
|
||||
et memorise les etapes.
|
||||
|
||||
- "Mes taches" : Liste des taches que Lea a apprises.
|
||||
Cliquez sur une tache pour que Lea la refasse.
|
||||
|
||||
- "Discuter avec Lea" : Ouvre une fenetre de discussion
|
||||
pour poser des questions ou donner des instructions.
|
||||
|
||||
- "ARRET D'URGENCE" : Arrete immediatement tout ce que
|
||||
Lea est en train de faire.
|
||||
|
||||
- "Quitter Lea" : Ferme le programme.
|
||||
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
|
||||
Si vous devez modifier l'adresse du serveur, ouvrez le fichier
|
||||
"config.txt" avec le Bloc-notes et changez les valeurs.
|
||||
|
||||
Ne modifiez rien d'autre sans l'accord de votre administrateur.
|
||||
|
||||
|
||||
EN CAS DE PROBLEME
|
||||
-------------------
|
||||
|
||||
- "Python n'est pas installe" : Demandez a votre
|
||||
service informatique d'installer Python 3.10
|
||||
depuis https://python.org
|
||||
|
||||
- Lea ne demarre pas : Relancez "install.bat" puis
|
||||
relancez "Lea.bat"
|
||||
|
||||
- Lea est deconnectee : Verifiez votre connexion
|
||||
internet/reseau. Le serveur est peut-etre en
|
||||
maintenance.
|
||||
|
||||
- En cas de doute, contactez votre administrateur.
|
||||
|
||||
|
||||
INFORMATIONS
|
||||
------------
|
||||
|
||||
Lea est un systeme base sur l'intelligence artificielle.
|
||||
|
||||
Quand Lea enregistre vos actions, elle capture votre ecran,
|
||||
vos clics et vos frappes clavier. Les donnees sensibles
|
||||
(mots de passe, informations medicales) sont automatiquement
|
||||
floutees avant envoi.
|
||||
|
||||
Vous pouvez arreter l'enregistrement ou le replay a tout
|
||||
moment via le menu ou le bouton "ARRET D'URGENCE".
|
||||
|
||||
============================================================
|
||||
54
deploy/lea_package/Lea.bat
Normal file
54
deploy/lea_package/Lea.bat
Normal file
@@ -0,0 +1,54 @@
|
||||
@echo off
|
||||
chcp 65001 >nul 2>&1
|
||||
title Lea - Assistante IA
|
||||
|
||||
:: ---------------------------------------------------------------
|
||||
:: Se placer dans le dossier du script (important pour les chemins)
|
||||
:: ---------------------------------------------------------------
|
||||
cd /d "%~dp0"
|
||||
|
||||
:: ---------------------------------------------------------------
|
||||
:: Verifier que l'installation a ete faite
|
||||
:: ---------------------------------------------------------------
|
||||
if not exist ".venv\Scripts\python.exe" (
|
||||
echo.
|
||||
echo Lea n'est pas encore installee.
|
||||
echo Lancez d'abord "install.bat" puis revenez ici.
|
||||
echo.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:: ---------------------------------------------------------------
|
||||
:: Charger la configuration depuis config.txt
|
||||
:: Les lignes commencant par # sont ignorees (commentaires)
|
||||
:: Format attendu : NOM_VARIABLE=valeur
|
||||
:: ---------------------------------------------------------------
|
||||
if exist "config.txt" (
|
||||
for /f "usebackq eol=# tokens=1,* delims==" %%a in ("config.txt") do (
|
||||
if not "%%a"=="" if not "%%b"=="" set "%%a=%%b"
|
||||
)
|
||||
) else (
|
||||
echo ATTENTION : config.txt introuvable, utilisation des valeurs par defaut.
|
||||
)
|
||||
|
||||
:: ---------------------------------------------------------------
|
||||
:: Lancer Lea
|
||||
:: ---------------------------------------------------------------
|
||||
echo.
|
||||
echo Demarrage de Lea...
|
||||
echo (Lea apparait dans la barre des taches, en bas a droite)
|
||||
echo.
|
||||
echo Pour arreter Lea : clic droit sur l'icone ^> "Quitter Lea"
|
||||
echo Vous pouvez fermer cette fenetre.
|
||||
echo.
|
||||
|
||||
.venv\Scripts\pythonw.exe run_agent_v1.py
|
||||
if errorlevel 1 (
|
||||
echo.
|
||||
echo Lea a rencontre un probleme au demarrage.
|
||||
echo Tentative avec affichage des erreurs...
|
||||
echo.
|
||||
.venv\Scripts\python.exe run_agent_v1.py
|
||||
pause
|
||||
)
|
||||
31
deploy/lea_package/config.txt
Normal file
31
deploy/lea_package/config.txt
Normal file
@@ -0,0 +1,31 @@
|
||||
# ============================================================
|
||||
# Configuration Lea
|
||||
# ============================================================
|
||||
#
|
||||
# Ce fichier contient les parametres de connexion au serveur.
|
||||
# Modifiez uniquement les valeurs apres le signe =
|
||||
# Ne touchez pas aux noms des parametres (a gauche du =).
|
||||
#
|
||||
# Les lignes commencant par # sont des commentaires (ignorees).
|
||||
#
|
||||
# ============================================================
|
||||
|
||||
# Adresse du serveur Lea (URL complete avec /api/v1)
|
||||
RPA_SERVER_URL=https://lea.labs.laurinebazin.design/api/v1
|
||||
|
||||
# Cle d'authentification (fournie par l'administrateur)
|
||||
RPA_API_TOKEN=86031addb338e449fccdb1a983f61807aec15d42d482b9c7748ad607dc23caab
|
||||
|
||||
# Nom du serveur (sans https://, sans /api/v1)
|
||||
RPA_SERVER_HOST=lea.labs.laurinebazin.design
|
||||
|
||||
# ============================================================
|
||||
# Parametres avances (ne pas modifier sauf indication)
|
||||
# ============================================================
|
||||
|
||||
# Flouter les zones de texte dans les captures (securite donnees)
|
||||
# Mettre false uniquement pour le developpement/tests
|
||||
RPA_BLUR_SENSITIVE=true
|
||||
|
||||
# Duree de conservation des logs en jours (minimum 180 pour conformite)
|
||||
RPA_LOG_RETENTION_DAYS=180
|
||||
127
deploy/lea_package/install.bat
Normal file
127
deploy/lea_package/install.bat
Normal file
@@ -0,0 +1,127 @@
|
||||
@echo off
|
||||
chcp 65001 >nul 2>&1
|
||||
title Lea - Installation
|
||||
|
||||
echo.
|
||||
echo ============================================================
|
||||
echo Lea - Installation
|
||||
echo ============================================================
|
||||
echo.
|
||||
echo Cette installation prend 2-3 minutes.
|
||||
echo Ne fermez pas cette fenetre.
|
||||
echo.
|
||||
echo ============================================================
|
||||
echo.
|
||||
|
||||
:: ---------------------------------------------------------------
|
||||
:: 0. Verifier que Python est installe
|
||||
:: ---------------------------------------------------------------
|
||||
echo [1/5] Verification de Python...
|
||||
|
||||
python --version >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo.
|
||||
echo ERREUR : Python n'est pas installe sur cet ordinateur.
|
||||
echo.
|
||||
echo Pour installer Python :
|
||||
echo 1. Allez sur https://python.org
|
||||
echo 2. Cliquez "Download Python 3.12"
|
||||
echo 3. IMPORTANT : cochez "Add Python to PATH" pendant l'installation
|
||||
echo 4. Relancez install.bat apres l'installation de Python
|
||||
echo.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:: Afficher la version Python detectee
|
||||
for /f "tokens=*" %%v in ('python --version 2^>^&1') do echo %%v detecte - OK
|
||||
echo.
|
||||
|
||||
:: ---------------------------------------------------------------
|
||||
:: 1. Creer l'environnement virtuel
|
||||
:: ---------------------------------------------------------------
|
||||
if not exist ".venv" (
|
||||
echo [2/5] Creation de l'environnement isole...
|
||||
python -m venv .venv
|
||||
if errorlevel 1 (
|
||||
echo ERREUR : Impossible de creer l'environnement virtuel.
|
||||
echo Verifiez que Python est correctement installe.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo Environnement cree - OK
|
||||
) else (
|
||||
echo [2/5] Environnement existant detecte - OK
|
||||
)
|
||||
echo.
|
||||
|
||||
:: ---------------------------------------------------------------
|
||||
:: 2. Activer l'environnement
|
||||
:: ---------------------------------------------------------------
|
||||
echo [3/5] Activation de l'environnement...
|
||||
call .venv\Scripts\activate.bat
|
||||
echo Active - OK
|
||||
echo.
|
||||
|
||||
:: ---------------------------------------------------------------
|
||||
:: 3. Installer les dependances
|
||||
:: ---------------------------------------------------------------
|
||||
echo [4/5] Installation des composants (cela peut prendre 1-2 min)...
|
||||
python -m pip install --upgrade pip --quiet 2>nul
|
||||
pip install -r requirements_agent.txt --quiet 2>nul
|
||||
if errorlevel 1 (
|
||||
echo.
|
||||
echo ATTENTION : Certains composants n'ont pas pu etre installes.
|
||||
echo Nouvelle tentative avec affichage des details...
|
||||
echo.
|
||||
pip install -r requirements_agent.txt
|
||||
if errorlevel 1 (
|
||||
echo.
|
||||
echo ERREUR : L'installation a echoue.
|
||||
echo Verifiez votre connexion internet et reessayez.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
)
|
||||
echo Composants installes - OK
|
||||
echo.
|
||||
|
||||
:: ---------------------------------------------------------------
|
||||
:: 4. Post-installation Windows (pywin32)
|
||||
:: ---------------------------------------------------------------
|
||||
echo [5/5] Configuration Windows...
|
||||
python -c "import win32api" >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
python .venv\Scripts\pywin32_postinstall.py -install >nul 2>&1
|
||||
)
|
||||
echo Configuration terminee - OK
|
||||
echo.
|
||||
|
||||
:: ---------------------------------------------------------------
|
||||
:: 5. Verification finale
|
||||
:: ---------------------------------------------------------------
|
||||
echo ============================================================
|
||||
echo Verification finale...
|
||||
echo ============================================================
|
||||
echo.
|
||||
|
||||
python -c "import mss; import pynput; import pystray; import plyer; import requests; import PIL; print(' Tous les composants sont OK !')"
|
||||
if errorlevel 1 (
|
||||
echo.
|
||||
echo ATTENTION : Certains composants manquent.
|
||||
echo Essayez de relancer install.bat.
|
||||
echo Si le probleme persiste, contactez votre administrateur.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo.
|
||||
echo ============================================================
|
||||
echo.
|
||||
echo Installation terminee !
|
||||
echo.
|
||||
echo Pour lancer Lea, double-cliquez sur "Lea.bat"
|
||||
echo.
|
||||
echo ============================================================
|
||||
echo.
|
||||
pause
|
||||
13
deploy/lea_package/requirements_agent.txt
Normal file
13
deploy/lea_package/requirements_agent.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
# Dependances Lea Agent (client leger)
|
||||
# Pas de CLIP, PyTorch, ou modele lourd - tout le calcul est sur le serveur
|
||||
|
||||
mss>=9.0.1 # Capture d'ecran haute performance
|
||||
pynput>=1.7.7 # Clavier/Souris
|
||||
Pillow>=10.0.0 # Traitement image (crops, compression)
|
||||
requests>=2.31.0 # Communication serveur
|
||||
psutil>=5.9.0 # Monitoring CPU/RAM
|
||||
pystray>=0.19.5 # Icone systray
|
||||
plyer>=2.1.0 # Notifications toast natives
|
||||
|
||||
# Windows specifique
|
||||
pywin32>=306 ; sys_platform == 'win32'
|
||||
Reference in New Issue
Block a user