mm : un contexte multimodal rapide pour les agents
📌 MM est un outil en ligne de commande qui fournit un contexte multimodal rapide pour les agents d’IA, permettant d’extraire et de structurer le contenu de fichiers variés (images, vidéos, audio, PDF, code) dans un format directement exploitable par les modèles de langage visuels.
L’outil fonctionne selon trois niveaux de traitement : metadata, fast et accurate. Le niveau metadata extrait uniquement les informations brutes (dimensions, résolution, codec, durée, hash) sans appel à un LLM, idéal pour des scans rapides de répertoires volumineux. Le mode fast produit une sortie optimisée avec éventuellement une courte génération LLM pour certains types de fichiers, tandis que le mode accurate effectue un traitement complet avec génération LLM systématique pour obtenir des résultats de haute qualité. Cette séparation permet d’adapter l’effort computationnel aux besoins spécifiques : simple exploration de fichiers ou analyse approfondie.
MM supporte une large gamme de formats : images (JPEG, PNG, WebP, GIF), vidéos (MP4, MOV, WebM), audio (MP3, WAV, FLAC, M4A), documents PDF, et fichiers de code. Chaque type de fichier bénéficie de pipelines d’extraction spécialisés définis en YAML, configurables selon les besoins. Pour les images, les stratégies incluent resize, tile et mosaïque avec génération automatique de légendes. Les vidéos sont analysées par extraction d’images clés en mosaïque, l’audio transcrit (optionnellement avec Whisper), et les PDF convertis en mosaïques de pages pour préserver la mise en forme.
Les commandes principales offrent une flexibilité opérationnelle complète : mm find pour localiser des fichiers et afficher un schéma JSON, mm peek pour obtenir les métadonnées brutes, mm cat pour extraire le contenu selon le mode choisi, mm wc pour compter les fichiers et estimer les tokens, mm grep pour rechercher dans le contenu indexé, et mm sql pour interroger la base SQLite locale avec sqlite-vec pour la recherche vectorielle. Chaque commande supporte plusieurs formats de sortie (TTY, JSON, TSV, CSV, JSONL, dataset HF) s’adaptant aux différents cas d’usage.
● Extraction multimodale unifiée : images, vidéos, audio, PDF et code dans un seul outil en ligne de commande
● Trois modes de traitement : metadata (sans LLM), fast (optimisé), accurate (complet avec LLM)
● Base de données SQLite locale avec index vectoriel via sqlite-vec pour des recherches sémantiques rapides
● Pipelines YAML configurables par type de fichier avec stratégies d’encodage personnalisables
● Intégrations natives avec Claude Code, OpenCode, Codex et autres assistants universels
● Performance élevée : scan de 700 fichiers en 8ms, démarrage CLI en 60ms
La configuration des modèles LLM se gère par profils dans ~/.config/mm/mm.toml, supportant tous les providers compatibles OpenAI (OpenAI, OpenRouter, Ollama, Gemini, VLM.run). Chaque profil stocke base_url, api_key et model, avec possibilité d’en avoir plusieurs pour des cas d’usage différents. Le profil actif peut être changé dynamiquement par flag –profile ou variable d’environnement MM_PROFILE, offrant une flexibilité maximale pour adapter le traitement selon les contraintes de coût, de latence ou de qualité requises.
Les pipelines d’extraction suivent une architecture encode + generate : les encodeurs (classes Python sous encoders/) convertissent les fichiers en messages VLM-ready, et la génération optionnelle appelle un LLM pour enrichir le contenu. Les pipelines par défaut sont définis dans pipelines/{kind}/{mode}.yaml, mais peuvent être entièrement personnalisés ou surchargés depuis la ligne de commande. Par exemple, mm cat photo.jpg -m accurate –encode.strategy tile –generate.max-tokens 1024 permet de spécifier une stratégie de tuilage et un nombre maximum de tokens sans modifier la configuration globale.
Le stockage repose sur une base SQLite unique à ~/.local/share/mm/mm.db organisée en tables files (métadonnées + contenu), extractions (résumés générés), chunks (fragments de contenu par mode) et chunks_vec (vecteurs d’embeddings pour la recherche sémantique). Le cache stocke les résultats intermédiaires pour éviter les recalculs coûteux. Cette architecture permet des requêtes SQL complexes et des recherches vectorielles performantes tout en maintenant un historique complet des extractions effectuées.
En termes de performance, MM excelle sur Apple Silicon avec des latences très faibles : scan de métadonnées de 702 fichiers en 8ms, démarrage CLI en 60ms, extraction rapide de code en 52ms, d’images en 61ms, de PDF en 220ms. La génération de mosaïques pour PDF (par page) prend environ 10ms, et pour vidéos (48 frames) environ 1 seconde. Ces performances le rendent adapté au traitement de répertoires volumineux et à l’intégration dans des workflows d’agents nécessitant une réactivité rapide.
L’outil s’installe simplement via pip install mm-ctx avec des extras optionnels pour la transcription audio (faster-whisper). Une fois installé, mm config init crée une configuration par défaut avec un profil Ollama local, et mm config show permet de visualiser la configuration résolue. Les profils se gèrent avec mm profile add/update/list/remove/use, et mm config reset-db permet de réinitialiser complètement la base de données et les caches en cas de besoin. Cette approche CLI-first avec une configuration explicite facilite l’intégration dans des scripts et des systèmes d’automatisation.
MM s’intègre nativement avec plusieurs assistants d’IA comme Claude Code, OpenCode, Codex et Gemini CLI via des commandes spécifiques (mm cat ClaudeCode, mm cat OpenCode, etc.). Ces intégrations permettent d’utiliser directement les capacités multimodales de MM depuis ces assistants sans modification de leur configuration. Pour les assistants universels supportant la redirection de commandes (OpenClaw, NemoClaw), mm cat peut rediriger sa sortie vers une commande arbitraire, offrant une compatibilité maximale.
C’est un outil qui simplifie l’analyse de fichiers multimodales pour les agents d’IA en fournissant une interface CLI unifiée, des pipelines configurables et des performances élevées, rendant le contexte multimodal accessible sans nécessiter de développement spécifique.
