7b. Web Intelligence

Les outils de Web Intelligence confèrent à ECHO la capacité de naviguer sur le Web de manière autonome, de lire et d'interagir avec des pages dynamiques, d'en extraire le contenu sémantique, et d'effectuer des recherches via un moteur souverain. Ces capacités reposent sur deux composants complémentaires : le Browser Agent (micro-service Docker FastAPI + Playwright) et le SearxNG Proxy (moteur de recherche méta souverain, outil séparé sovereign_web_search.py).

Architecture — Browser Agent (Playwright)

Le Browser Agent est un micro-service Docker dédié (browser_api.py v9.2, FastAPI + Playwright asyncio). Il pilote une instance Chromium headless via Playwright. Il gère plusieurs sessions navigateur simultanées (jusqu'à 20), chacune liée à un chat_id ECHO et nettoyée automatiquement après 1 heure d'inactivité.

AttributValeur
Conteneurecho-browser-agent
Port interne5002 (exposé via uvicorn host="0.0.0.0" port=5002)
Source22-docker-browser-agent/browser_api.py
Version9.2 (HEALTHCHECK)
MoteurPlaywright Chromium headless, mode Mobile (iPad) ou Desktop configurable
Bibliothèquesfastapi, playwright, orjson, pybase64, html2text
Max sessions simultanées20 (MAX_SESSIONS)
Timeout inactivité3 600 s = 1 heure (IDLE_TIMEOUT_DEFAULT)

Actions disponibles (API /action)

Toutes les actions transitent par le endpoint POST /action avec un champ action identifiant l'opération. Le tool ECHO navigation_engine_tool.py encapsule ces appels HTTP REST.

ActionDescription
goto Navigue vers une URL. Attend networkidle (timeout 60 s). Retourne title et url.
click Clique sur un élément par index (data-echo-index) ou selector CSS/XPath. Mouse shake anti-bot.
type Saisit du texte dans un champ via page.fill() (remplace le contenu). Cible par index ou selector.
press Presse une touche clavier (ex. Enter, Tab). Attend networkidle après.
hover Survole un élément (déclenche les menus déroulants, tooltips).
scroll Fait défiler la page : down, up, top, bottom.
read Extrait le contenu textuel de la page en Markdown via html2text. Limité à 30 000 caractères.
read_html Retourne le code HTML source complet, encodé en Base64 pour protéger le JSON.
get_attribute Récupère un attribut HTML (ex. href, src) d'un élément ciblé par index.
highlight Cartographie tous les éléments interactifs de la page avec numérotation visuelle (ECHO markers), prend un screenshot. Retourne screenshot_b64, liste des éléments (metadata) et count.
tab_new Ouvre un nouvel onglet (jusqu'à N onglets simultanés par session). Retourne l'index du nouvel onglet.
tab_switch Bascule sur l'onglet d'index donné.
tab_close Ferme l'onglet actif (refuse si dernier onglet restant).
reset Réinitialisation complète de la session : ferme le contexte Playwright et purge l'entrée dans SESSIONS.

⚙️ ECHO DOM Markers — cartographie visuelle

L'action highlight injecte un script JS (HIGHLIGHT_JS) qui scanne tous les éléments interactifs (liens, boutons, inputs, éléments cursor:pointer) et leur attache une étiquette numérotée rouge (.echo-marker). Le modèle peut alors cibler un élément précis par son index — plus fiable qu'un sélecteur CSS fragile sur des pages dynamiques.

Session Navigateur et Profils

Chaque session est initialisée via POST /start_session avec un session_id (= chat_id ECHO). Deux profils de navigateur sont disponibles :

Recherche Web Souveraine

La recherche Web est fournie par l'outil séparé sovereign_web_search.py, qui offre un double moteur : une recherche instantanée via DuckDuckGo (mode anonyme) et une recherche approfondie (deep search) via l'instance SearxNG interne (http://echo-searxng:8080). Aucune donnée de recherche ne transite par un moteur tiers tracé.

v9.3-9.4 — Distillation via call_cascade() centralisé

L'action distill_page utilise désormais EchoGeminiClient.call_cascade() (au lieu d'un appel direct) avec MODEL_FLASH clampé par la politique Pipe. La propagation du user_id vers clamp_model garantit que le fallback SQLite echo_settings est lu correctement même si OWUI ne propage pas les métadonnées du Pipe.

Cockpit de Replay Web

Après une session de navigation, l'action web_navigation_replay_action.py génère une interface HUD listant toutes les actions effectuées avec leurs captures d'écran. L'utilisateur peut rejouer ou exporter la session.

← Retour à l'Arsenal    Explorateur de l'Espace Personnel ➔