Un article de la communauté Hugging Face publié le 17 septembre 2026 présente funes, un outil de mémoire locale pour les agents de code. Il rassemble les traces de Claude Code, Codex, pi et Hermes dans un jeu de données Lance afin de rendre les sessions précédentes consultables. L’objectif est concret : retrouver un passage utile d’un échange antérieur, plutôt que recommencer chaque conversation sans accès direct à cet historique.

L’installation passe par des commandes comme funes add codex, avec des variantes pour Claude, pi et Hermes. La configuration crée le premier index, enregistre les outils concernés et installe des hooks chargés d’indexer automatiquement les nouveaux échanges. Une fois cette étape terminée, funes recall renvoie des passages classés provenant de sessions réelles. Chaque résultat indique son origine et peut être replacé dans son contexte grâce à la commande get, qui ouvre les échanges environnants.

Une mémoire fondée sur les échanges d’origine

Funes ne fait pas appel à un LLM pour résumer les traces au moment de leur ingestion. L’outil analyse les transcriptions, les découpe en blocs, crée localement des embeddings et stocke ces résultats dans Lance. Avec funes ask claude, il récupère d’abord les passages jugés pertinents sur la machine locale, puis transmet ce contenu à l’agent sélectionné, qui formule sa réponse à partir des éléments récupérés.

Ce choix conserve un lien avec les échanges sources. La mémoire ne repose pas sur un condensé généré automatiquement qui remplacerait les détails de la session : les fragments retrouvés restent consultables, avec leur provenance et leur environnement immédiat. Pour l’utilisateur, la contrepartie est que l’agent doit encore interpréter les passages récupérés au moment de répondre.

L’indexation est également déterministe. Le modèle d’embeddings est fixé et enregistré dans le jeu de données, tandis que funes refuse les requêtes adressées à une mémoire construite avec un modèle incompatible. Changer de modèle devient donc une frontière de compatibilité visible. Ce choix évite qu’une même mémoire produise des résultats différents à la suite d’un changement implicite du modèle utilisé pour représenter les fragments.

Le stockage local s’accompagne d’un contrôle avant partage

Funes fonctionne localement par défaut, et le partage des données reste laissé au choix de l’utilisateur. Lorsque TruffleHog est disponible, l’indexation masque les identifiants qu’il détecte avant leur stockage. Cette protection dépend donc de la présence de l’outil au moment où les traces sont indexées.

Le contrôle ne s’arrête pas là. La commande funes push ajoute une analyse permanente avec un blocage activé par défaut : si un bloc contient encore un secret signalé, l’envoi est empêché. Le masquage à l’indexation et le contrôle avant partage n’ont pas le même rôle, mais le second est conçu pour bloquer le contenu détecté au lieu de le transmettre silencieusement.

Le jeu de données Lance conserve dans la même table les fragments, leur texte d’origine, leur provenance et leurs embeddings vectoriels. Il comprend des index BM25 et vectoriels ainsi que des versions de jeux de données validées. Lors d’une récupération, funes combine la recherche vectorielle et la recherche BM25, reclasse les meilleurs candidats et applique une pondération liée à la récence.

Des identifiants de fragments déterministes complètent ce fonctionnement : ils évitent de recalculer les embeddings de fragments déjà enregistrés. L’outil peut ainsi maintenir un historique commun pour plusieurs agents tout en conservant une représentation stable des éléments déjà indexés.

Un historique commun, avec une traçabilité assumée

Pour les personnes qui utilisent plusieurs agents de code, le changement principal est la possibilité d’interroger localement le travail précédent depuis un même historique. Les résultats récupérés restent associés à leur source, ce qui permet de revenir aux échanges environnants lorsque le passage seul ne suffit pas.

Funes privilégie ainsi des fragments traçables à un résumé en langage naturel préparé à l’avance. Ce compromis renforce le contrôle sur ce qui est retrouvé et partagé, mais laisse à l’agent sélectionné la charge d’interpréter le contexte fourni. Les embeddings figés, la provenance des résultats et le blocage avant envoi forment une mémoire inspectable, tandis que son usage reste lié aux outils configurés et aux contrôles disponibles localement.

Funes transforme donc les sessions de Claude Code, Codex, pi et Hermes en une mémoire locale consultable dans Lance. Son apport ne tient pas à un résumé automatique des échanges, mais à la récupération de passages identifiables, accompagnés de leur contexte et soumis à un contrôle avant partage.

Sources officielles

Sources et méthodologie

  1. Official source: huggingface.co Ouvre une source externe