Présentation de funes
funes est un binaire unique qui crée une couche de mémoire durable pour les agents de codage tels que Claude Code, Codex, pi et Hermes. L’installation se fait en une ligne :
curl -fsSL https://huggingface.co/buckets/huggingface/funes/resolve/install.sh | sh. Aucun runtime de machine learning n’est requis ; les embeddings et le reranking s’exécutent entièrement sur la machine locale, ce qui élimine la dépendance à un serveur externe.Architecture d’indexation et de recherche
Lorsqu’on ajoute un agent avec
funes add claude, le premier index est construit à partir des traces de session déjà présentes. Chaque trace est transformée en une structure « turn‑and‑block », découpée en blocs, puis embarquée dans un modèle d’embedding local. Les vecteurs ainsi obtenus sont stockés dans un dataset Lance, format optimisé pour les requêtes vectorielles. La recherche combine un vecteur‑based retrieval et un moteur BM25, fusionne les scores, puis applique un cross‑encoder pour le reranking final. Un facteur de récence re‑pèse les résultats, et les blocs voisins sont ajoutés pour fournir le contexte complet.Fonctionnalités et flux de travail
Le système propose trois propriétés majeures : une mémoire partagée entre plusieurs agents, la conservation de la preuve brute (le texte original est renvoyé avec l’agent, le timestamp, la session et le tour d’origine) et une exécution locale par défaut. L’indexation est incrémentale ; chaque nouveau tour est ajouté sans ré‑embarquer l’historique complet, ce qui limite le coût de mise à jour. La commande
funes ask claude "what did we decide about the streaming parser" interroge la mémoire locale et renvoie les passages exacts, tandis que l’option --memory huggingface/funes-memory permet de cibler un dataset partagé sur le Hub.Déploiement multi‑machine et sécurité
En liant un agent à une mémoire distante (
funes add codex acme/funes-memory), le même dataset Lance est publié sur Hugging Face, privé par défaut. Le processus de publication scanne chaque chunk pour masquer les secrets, comme détaillé dans le fichier SECURITY.md. Lors d’une lecture distante, les fichiers du dataset sont mis en cache localement, assurant des temps de réponse comparables à une requête purement locale. Cette approche évite la création d’un compte dédié à un service de mémoire externe et supprime la facturation d’API.