nicolas-ha.com · English

Une mémoire pour agents IA, mesurée avant d'être crue.

Flare, un serveur MCP local : recherche, mémoire et outils sur ses propres fichiers. En pré-version.

Le problème : un agent dit avoir noté un fait, et n'appelle aucun outil. Ce qu'il dit de lui-même ne prouve rien.

1Le schéma

L'agent interroge le serveur MCP Flare, qui cherche dans un index local ; un hook déclenche la sauvegarde
Dessiné dans Excalidraw.
l'agentFlarel'index localle hook, hors du modèle

2Ce que j'ai construit

  1. Le serveur MCP : 12 outils (search, save, extract, sql…) pour Claude Code, Claude Desktop et Codex.
    • Clojure : 202 fichiers, 52 000 lignes ; 1 264 tests.
  2. La recherche hybride : plein texte et sémantique, sur un index local.
    • SQLite ou FoundationDB ; binaires natifs GraalVM.
  3. La boucle d'écriture : un hook déterministe déclenche la sauvegarde, pas la bonne volonté du modèle.
    • Les secrets (un code, un mot de passe wifi) sont exclus exprès.
  4. Le banc de mesure : BEIR, la boucle d'écriture, le routage des indices, l'extraction de tableaux.

3Le résultat

  1. Faits retenus : de 0 à 0,67, p = 0,0013 (test de Fisher, 12 sessions par bras).
    • Hors secrets : 8 sur 8.
  2. Une recherche au niveau de la référence publiée : SciFact NDCG@10 0,714 contre 0,710 ; NFCorpus 0,352 contre 0,353.
  3. Routage des indices : précision 1,000, rappel 0,944, aucun faux positif.
  4. Une dizaine de pistes rejetées, chiffres à l'appui : le rerank par cross-encoder (SciFact −0,021, puis −0,224), un autre embedder, INT8.
    • Plus grand gain : un seuil PQ corrigé, +0,14 sur SciFact en dense.

4Mon rôle

  1. Mon projet : environ 18 mois de travail depuis mars 2025, à côté de mes missions.
    • En pré-version : pas encore de version signée.

5La vidéo

Une minute, voix de synthèse, sous-titrée.