7e. Exécution & Pilotage

L'outil d'exécution Python (python_code_executor.py) soumet du code au Python Worker — un micro-service Docker isolé. L'isolation est garantie par un processus OS distinct (multiprocessing.Process) pour chaque requête, avec son propre répertoire temporaire. Une fois le processus terminé ou expiré, il n'existe plus aucune trace en mémoire.

Python Worker (Sandbox)

AttributValeur vérifiée
Conteneurecho-python-worker
Port interne5000 (Flask, app.run(host='0.0.0.0', port=5000))
Source21-docker-python-worker/worker_api.py
Version1.4 (HEALTHCHECK)
FrameworkFlask (mode threaded=True) — pas FastAPI
Image de basepython:3.14-slim
Bibliothèques disponibles pandas, numpy, scipy, scikit-learn, yfinance, beautifulsoup4, openpyxl, regex, sympy, mgzip, orjson, pybase64, networkx + bibliothèque standard Python 3.14
Bibliothèques absentesmatplotlib et requests ne sont pas dans requirements.txt
Timeout30 s par défaut (paramètre timeout de la requête, configurable par l'appelant)
IsolationProcessus OS distinct (multiprocessing.Process) + répertoire temporaire dédié (tempfile.TemporaryDirectory)
Sortiestdout et stderr capturés séparément (contextlib.redirect_stdout/stderr)

Outil python_code_executor.py

L'outil soumet un bloc de code Python au Worker via POST /execute. La réponse contient :

?? Absence de matplotlib — alternative

matplotlib n'est pas installé dans le Worker. Pour produire des graphiques, ECHO utilise l'outil Visual Intelligence (universal_visual_generator.py) qui génère des interfaces interactives ECharts, Vega ou Mermaid côté navigateur — sans bibliothèque de rendu serveur.

?? Isolation par processus OS — mécanisme exact

Contrairement à un simple exec() dans un thread Python, le Worker crée un multiprocessing.Process pour chaque exécution. Cela garantit une vraie isolation mémoire (adress space séparé) et empêche les effets de bord entre requêtes concurrentes. Flask en mode threaded=True permet de servir plusieurs requêtes HTTP en parallèle, chacune lançant son propre sous-processus.

?? Sécurité de l'exécution

Le Worker n'est pas une sandbox hermétique contre du code malveillant intentionnel : le sous-processus a accès au réseau Docker interne. Il est conçu pour exécuter du code de confiance généré par le modèle, pas du code provenant de sources tierces non vérifiées.

? Mémoire & Cognition    Actions UI (HUD) ?