7c. Explorateur de l'Espace Personnel
L'Explorateur de l'Espace Personnel (file_content_explorer.py v5.109.10) permet à ECHO
d'analyser, de sonder sémantiquement, d'afficher et de télécharger des fichiers depuis le Vault de
l'utilisateur (/app/backend/data/users/{uid}/files/).
Il supporte la lecture paginée de texte, l'analyse multimodale (images, PDF, audio) et le
téléchargement Stealth depuis des URLs distantes.
Fonctions disponibles
?? Noms réels des fonctions
Les noms ci-dessous sont les noms exacts des méthodes Python dans le code source. C'est sous ces noms que Gemini les voit et les invoque via Tool Call.
| Fonction | Description | Paramètres clés |
|---|---|---|
read_raw_file_content |
Lecture paginée d'un fichier par son file_id. Trois modes de sortie :
text (lignes numérotées), base64 (12 Ko par chunk), hex (8 Ko par chunk).
Limité à 16 Ko par appel (MAX_READ_SIZE_KB).
|
file_id, start_line, end_line, output_mode, byte_offset |
semantic_probe |
Sonde sémantiquement un fichier via le modèle configuré (ANALYSE_MODEL — valve utilisateur, défaut MODEL_FLASH).
Injecte le fichier entier en inlineData Base64 + une question. Retourne la réponse + la pensée (CoT) séparée.
|
file_id, query |
read_multimedia_file |
Transmet un fichier multimédia supporté par Gemini (image, audio, vidéo, PDF) au moteur d'inférence
via inlineData. Vérifie le MIME via get_gemini_mime() avant l'injection.
|
file_id |
show_image_to_user |
Affiche une image dans le HUD interactif ECHO (même moteur que le navigateur web :
zoom, pan, drag, resize, minimisation).
Accepte un file_id local (Base64 inline) ou une URL distante.
Fallback gracieux si le serveur ne peut pas valider l'URL (CDN restrictifs type Wikimedia) —
l'image est quand même injectée côté client.
|
target (file_id ou URL) |
download_from_url |
Télécharge un fichier depuis une URL distante avec le Stealth Engine (User-Agent mimic navigateur,
gestion des redirections 302, anti-403). Le fichier est sauvegardé dans le Vault et enregistré dans processed_files.
|
url, filename (optionnel) |
get_file_metadata |
Retourne les métadonnées physiques d'un fichier : nom, taille en octets, type MIME détecté via get_gemini_mime().
|
file_id |
calculate_file_hashes |
Calcule les empreintes SHA-256 d'une liste de fichiers. Utile pour vérifier l'intégrité ou détecter les doublons dans le Vault. | file_ids (liste) |
Détection MIME robuste
Toutes les fonctions qui manipulent des binaires utilisent get_gemini_mime(fpath)
(echo_constants.py) pour détecter le type réel du fichier selon six niveaux de
fiabilité croissante (mappings ECHO ? mimetypes ? Magic Numbers ?
liste blanche Gemini ? Null-Byte Sniffing ? fallback application/octet-stream).
Isolation Utilisateur
La résolution des chemins passe systématiquement par resolve_upload_file_path(uid, file_id, uploads_dir).
Cette fonction valide que le file_id appartient bien à l'utilisateur courant.
Un modèle ne peut jamais accéder aux fichiers d'un autre utilisateur, même s'il connaît
son file_id.