8c. Explorateur de l'Espace Personnel
L'Explorateur de l'Espace Personnel (file_content_explorer.py v5.193.0) 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 source_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).
|
source_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.
|
source_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.
|
source_id |
show_image_to_user |
Affiche une image dans le HUD interactif ECHO (WebPlayer local) ou délègue au Markdown pour le distant : - Cible locale (Base64) : Injecte le code JS du WebPlayer interactif (zoom, pan, drag). - Cible distante (URL) : Agit comme une Sonde Visuelle. Vérifie le lien (Head/Get) et ses en-têtes. En cas de succès (ou fallback), ordonne au modèle d'utiliser la syntaxe Markdown `` dans sa réponse. Bloque les erreurs 404. |
target (source_id ou URL) |
get_file_metadata |
Retourne les métadonnées physiques d'un fichier : nom, taille en octets, type MIME détecté via get_gemini_mime().
|
source_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. | source_ids (liste) |
Détection MIME
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, source_id, uploads_dir).
Cette fonction valide que le source_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 source_id.