<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ai-Agents | Antoine Weill--Duflos</title>
    <link>https://antoine.weill-duflos.fr/fr/tag/ai-agents/</link>
      <atom:link href="https://antoine.weill-duflos.fr/fr/tag/ai-agents/index.xml" rel="self" type="application/rss+xml" />
    <description>Ai-Agents</description>
    <generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>fr-fr</language><lastBuildDate>Wed, 03 Jun 2026 00:00:00 +0000</lastBuildDate>
    <image>
      <url>https://antoine.weill-duflos.fr/media/icon_hu_d686267daab28486.png</url>
      <title>Ai-Agents</title>
      <link>https://antoine.weill-duflos.fr/fr/tag/ai-agents/</link>
    </image>
    
    <item>
      <title>cortexmd : un cerveau de mémoire à long terme et de navigation de code pour agents IA</title>
      <link>https://antoine.weill-duflos.fr/fr/project/cortexmd/</link>
      <pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://antoine.weill-duflos.fr/fr/project/cortexmd/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/Leicas/cortexmd&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;cortexmd&lt;/a&gt; est un cerveau de mémoire à long terme et de navigation de code pour agents IA, exposé via le &lt;strong&gt;Model Context Protocol&lt;/strong&gt;. Tout a commencé par un projet privé sur mon homelab appelé obsidian-mcp, un serveur qui permettait à Claude de lire, chercher et écrire des notes dans mon coffre Obsidian. Je l&amp;rsquo;ai construit pour moi, puis je l&amp;rsquo;ai nettoyé pour le partager.&lt;/p&gt;
&lt;p&gt;Il fait deux choses.&lt;/p&gt;
&lt;p&gt;La première, c&amp;rsquo;est la &lt;strong&gt;mémoire&lt;/strong&gt;. Les agents oublient tout d&amp;rsquo;une session à l&amp;rsquo;autre. cortexmd leur offre un endroit où déposer ce qu&amp;rsquo;ils apprennent : des mémoires auto-catégorisées en types comme observation, décision, intuition et plan, avec un cycle de vie thermique où lire une mémoire la réchauffe et l&amp;rsquo;inactivité la refroidit. Le rappel est hybride, fusionnant la recherche plein texte et la recherche sémantique, amplifié par la température et les liens. Au début d&amp;rsquo;une session, l&amp;rsquo;agent effectue un réveil qui fait remonter les mémoires les plus chaudes et les plus pertinentes, pour reprendre là où il s&amp;rsquo;était arrêté.&lt;/p&gt;
&lt;p&gt;La seconde, c&amp;rsquo;est la &lt;strong&gt;navigation de code&lt;/strong&gt;. Un indexeur en Rust parcourt un dépôt, l&amp;rsquo;analyse avec tree-sitter et construit une base de données de symboles en SQLite qui enregistre, pour chaque symbole, son nom, son type, sa signature, sa docstring, sa plage dans le fichier et son graphe d&amp;rsquo;appels. Cet index est exposé sous forme d&amp;rsquo;outils MCP peu coûteux : recherche de symboles, plan de fichier, appelants et appelés, impact des changements, chaîne d&amp;rsquo;appels, code mort, cycles d&amp;rsquo;import et doublons issus de copier-coller. L&amp;rsquo;objectif de conception est qu&amp;rsquo;un agent navigue dans le code en interrogeant l&amp;rsquo;index, à environ 60 jetons par résultat, plutôt qu&amp;rsquo;en lisant des fichiers entiers. Un hook shell optionnel réécrit des commandes comme grep et cat sur un dépôt indexé en l&amp;rsquo;appel de navigation de code équivalent.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;élément qui l&amp;rsquo;a rendu publiable, c&amp;rsquo;est le &lt;strong&gt;modèle de coffre-cerveau&lt;/strong&gt; (brain-vault). cortexmd possède un coffre-cerveau distinct qui est la seule chose dans laquelle il écrit. Vos propres coffres sont attachés en tant que sources en lecture seule, indexés pour la recherche et la navigation de code, jamais modifiés, avec une liste d&amp;rsquo;autorisation par refus par défaut pour que les sous-arbres privés restent à l&amp;rsquo;écart. Les données circulent dans un seul sens, donc il n&amp;rsquo;y a aucun fichier mutable partagé et aucune course à la fusion.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  SOURCE_VAULTS[]  (read-only, opt-in, allowlisted)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ┌───────────┐  ┌───────────┐  ┌───────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  │  notes/   │  │  code/    │  │  docs/    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  └─────┬─────┘  └─────┬─────┘  └─────┬─────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        │  index (one-way, read)      │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        └──────────────┼──────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                       ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              ┌──────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              │     cortexmd     │   &amp;lt;- sole writer
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              │   (MCP server)   │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              └────────┬─────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                       │ writes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                       ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              ┌──────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              │   BRAIN_VAULT    │   memories · journal · diaries
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              │ (own dir, not    │   tasks · KG notes · code-repos.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              │  your vault)     │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              └──────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il fonctionne selon deux modes : un mode &lt;strong&gt;local-stdio&lt;/strong&gt; sans Docker, sans authentification et sans réseau, recommandé pour une seule personne ; et un mode &lt;strong&gt;HTTP auto-hébergé&lt;/strong&gt; avec authentification pour les configurations multi-clients. Le dépôt est un monorepo polyglotte, un serveur MCP en TypeScript et un binaire Rust unique, maintenus cohérents par un contrat partagé et une vérification de parité en CI.&lt;/p&gt;
&lt;p&gt;cortexmd est &lt;strong&gt;en pré-alpha et sous licence MIT&lt;/strong&gt;. Les API et les noms de configuration sont encore susceptibles de changer.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;histoire complète est racontée dans une série de quatre billets de blog. Commencez par &lt;a href=&#34;../../post/cortexmd-second-brain/&#34;&gt;Donner un second cerveau à un agent IA&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
