<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    
    <title>Angelo Lima - Dev Web &amp; IA</title>
    
    
    <description>Feed RSS angelo-lima.fr</description>
    
    <link>https://angelo-lima.fr/</link>
    <atom:link href="https://angelo-lima.fr/feed.xml" rel="self" type="application/rss+xml" />
    <language>fr-FR</language>
    <managingEditor>angelomiguellima@gmail.com (Angélo LIMA)</managingEditor>
    <webMaster>angelomiguellima@gmail.com (Angélo LIMA)</webMaster>
    <lastBuildDate>Fri, 03 Apr 2026 07:53:23 +0200</lastBuildDate>
    <generator>Jekyll v4.3.4</generator>
    <image>
      <url>https://angelo-lima.fr/assets/img/avatar-icon.png</url>
      <title>Angelo Lima - Dev Web &amp; IA</title>
      <link>https://angelo-lima.fr/</link>
    </image>
    
    
    
      <item>
        <title>Claude Code Cheat Sheet 2026: Every Command, Shortcut &amp; Feature in One Place</title>
        <description>
          
            The most complete Claude Code cheatsheet for March 2026: 55+ slash commands, 55+ CLI flags, 25 hook events, 6 permission modes, MCP Computer Use, and a full extension creation guide. Available in EN and FR.
          
        </description>
        <content:encoded><![CDATA[<p>Claude Code evolves fast. Most cheatsheets available online are already missing features that shipped in early 2026. I built an <strong>exhaustive, visual reference</strong> covering everything in Claude Code v2.x as of March 2026 — and I’m sharing it for free.</p>

<h2 id="the-cheatsheet">The Cheatsheet</h2>

<p>Available in both English and French:</p>

<ul>
  <li><strong><a href="/assets/data/claude-code-cheatsheet-2026-en.html">English — Interactive HTML</a></strong></li>
  <li><strong><a href="/assets/data/claude-code-cheatsheet-2026.html">French — Interactive HTML</a></strong></li>
</ul>

<table>
  <tbody>
    <tr>
      <td>You can also download the high-res PNGs: <a href="/assets/img/claude-code-cheatsheet-2026-en.png">English</a></td>
      <td><a href="/assets/img/claude-code-cheatsheet-2026.png">French</a> (~4MB each, 2800px wide).</td>
    </tr>
  </tbody>
</table>

<p>Items marked with a green <strong>NEW</strong> badge are features added since late 2025.</p>

<h2 id="whats-covered">What’s Covered</h2>

<p>This isn’t a “top 20 commands” summary. It’s the full reference:</p>

<table>
  <thead>
    <tr>
      <th>Section</th>
      <th>Coverage</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Keyboard Shortcuts</td>
      <td>~30 shortcuts + prefixes + confirmation dialogs</td>
    </tr>
    <tr>
      <td>Slash Commands</td>
      <td><strong>55+ commands</strong> in 7 categories</td>
    </tr>
    <tr>
      <td>CLI Flags</td>
      <td><strong>55+ flags</strong> in 8 categories + subcommands</td>
    </tr>
    <tr>
      <td>The Big 5 (Extension System)</td>
      <td>CLAUDE.md, Rules, Commands, Skills, Subagents, MCP, Plugins</td>
    </tr>
    <tr>
      <td>Permission Modes</td>
      <td>All <strong>6 modes</strong> with permission syntax</td>
    </tr>
    <tr>
      <td>Hooks</td>
      <td>All <strong>25 lifecycle events</strong> + 4 handler types + <code class="language-plaintext highlighter-rouge">if</code> field</td>
    </tr>
    <tr>
      <td>Input Superpowers</td>
      <td>@mentions, !shell, images, pipes, worktrees, background</td>
    </tr>
    <tr>
      <td>Configuration</td>
      <td>5-level hierarchy, config commands, key env vars</td>
    </tr>
    <tr>
      <td>File Structure Map</td>
      <td>Project-level + global-level complete tree</td>
    </tr>
    <tr>
      <td>Rewind &amp; Checkpoints</td>
      <td>All options + context management strategies</td>
    </tr>
    <tr>
      <td>Pro Workflow</td>
      <td>Plan→Execute loop, prompting techniques, advanced patterns</td>
    </tr>
    <tr>
      <td>Customize Claude Code</td>
      <td><strong>How to create each extension type</strong> with full frontmatter</td>
    </tr>
    <tr>
      <td>Quick Reference</td>
      <td>Most-used combos, models &amp; effort levels</td>
    </tr>
  </tbody>
</table>

<h2 id="recent-additions-worth-knowing">Recent Additions Worth Knowing</h2>

<h3 id="mcp-computer-use">MCP Computer Use</h3>

<p>Launched March 23, 2026. Claude can now <strong>see and control your desktop</strong>: take screenshots, click, type, scroll, and drag across macOS applications.</p>

<ul>
  <li><strong>27 tools</strong> including <code class="language-plaintext highlighter-rouge">screenshot</code>, <code class="language-plaintext highlighter-rouge">left_click</code>, <code class="language-plaintext highlighter-rouge">type</code>, <code class="language-plaintext highlighter-rouge">key</code>, <code class="language-plaintext highlighter-rouge">scroll</code>, <code class="language-plaintext highlighter-rouge">zoom</code>, <code class="language-plaintext highlighter-rouge">computer_batch</code></li>
  <li><strong>Security</strong>: <code class="language-plaintext highlighter-rouge">request_access</code> must be called first. Compositor-level filtering — only allowed apps are visible in screenshots</li>
  <li><strong>Performance</strong>: <code class="language-plaintext highlighter-rouge">computer_batch</code> executes a sequence of actions in a single tool call</li>
  <li>Available on <strong>Pro and Max plans</strong>, macOS only for now</li>
</ul>

<h3 id="new-slash-commands">New Slash Commands</h3>

<table>
  <thead>
    <tr>
      <th>Command</th>
      <th>What it does</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">/schedule</code></td>
      <td>Schedule remote agents on a cron</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">/desktop</code></td>
      <td>Hand off session to the Desktop app</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">/voice</code></td>
      <td>Voice dictation input</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">/diff</code></td>
      <td>Interactive diff viewer</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">/security-review</code></td>
      <td>Scan changes for vulnerabilities</td>
    </tr>
  </tbody>
</table>

<h3 id="new-cli-flags">New CLI Flags</h3>

<table>
  <thead>
    <tr>
      <th>Flag</th>
      <th>What it does</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--tmux</code></td>
      <td>Worktree in a dedicated tmux pane</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--from-pr 42</code></td>
      <td>Resume from a GitHub PR</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--fork-session</code></td>
      <td>Fork session keeping full context</td>
    </tr>
  </tbody>
</table>

<h3 id="hooks-25-events-4-handler-types">Hooks: 25 Events, 4 Handler Types</h3>

<p>The hook system now supports <strong>25 lifecycle events</strong> (up from ~8) and <strong>4 handler types</strong>: <code class="language-plaintext highlighter-rouge">command</code>, <code class="language-plaintext highlighter-rouge">http</code>, <code class="language-plaintext highlighter-rouge">prompt</code>, <code class="language-plaintext highlighter-rouge">agent</code>. New events include <code class="language-plaintext highlighter-rouge">SubagentStart/Stop</code>, <code class="language-plaintext highlighter-rouge">TaskCreated/Completed</code>, <code class="language-plaintext highlighter-rouge">TeammateIdle</code>, <code class="language-plaintext highlighter-rouge">PostCompact</code>, <code class="language-plaintext highlighter-rouge">ConfigChange</code>, <code class="language-plaintext highlighter-rouge">FileChanged</code>, and more.</p>

<h3 id="skills--subagents-frontmatter">Skills &amp; Subagents Frontmatter</h3>

<p>Skills gained <code class="language-plaintext highlighter-rouge">context: fork</code>, <code class="language-plaintext highlighter-rouge">paths:</code>, and <code class="language-plaintext highlighter-rouge">effort:</code> options. Subagents gained <code class="language-plaintext highlighter-rouge">isolation: worktree</code> and <code class="language-plaintext highlighter-rouge">memory: project/user/local</code> for persistent knowledge.</p>

<h3 id="customize-claude-code-card">“Customize Claude Code” Card</h3>

<p>One of the most useful sections: a complete guide showing how to create <strong>every type of extension</strong> — slash commands, skills, subagents, rules, hooks, and MCP servers — each with a full frontmatter example and a decision guide for “where should this go?”</p>

<hr />

<p>If you spot an error or a missing feature, feel free to reach out — I’ll keep this cheatsheet updated as Claude Code evolves.</p>
]]></content:encoded>
        <pubDate>Tue, 31 Mar 2026 00:00:00 +0200</pubDate>
        <link>https://angelo-lima.fr/en/claude-code-cheatsheet-2026-update/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/en/claude-code-cheatsheet-2026-update/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Development</category>
          
          <category>Claude Code</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Claude Code Cheat Sheet 2026 : Chaque commande, raccourci &amp; feature en un seul endroit</title>
        <description>
          
            La cheatsheet Claude Code la plus complète pour mars 2026 : 55+ commandes slash, 55+ flags CLI, 25 événements hooks, 6 modes de permission, MCP Computer Use, et un guide complet de création d&apos;extensions. Disponible en FR et EN.
          
        </description>
        <content:encoded><![CDATA[<p>Claude Code évolue vite. La plupart des cheatsheets disponibles en ligne sont déjà incomplètes par rapport aux features sorties début 2026. J’ai construit une <strong>référence exhaustive et visuelle</strong> couvrant tout ce qui existe dans Claude Code v2.x en mars 2026 — et je la partage gratuitement.</p>

<h2 id="la-cheatsheet">La Cheatsheet</h2>

<p>Disponible en français et en anglais :</p>

<ul>
  <li><strong><a href="/assets/data/claude-code-cheatsheet-2026.html">Français — HTML interactif</a></strong></li>
  <li><strong><a href="/assets/data/claude-code-cheatsheet-2026-en.html">English — Interactive HTML</a></strong></li>
</ul>

<table>
  <tbody>
    <tr>
      <td>Vous pouvez aussi télécharger les PNG haute résolution : <a href="/assets/img/claude-code-cheatsheet-2026.png">Français</a></td>
      <td><a href="/assets/img/claude-code-cheatsheet-2026-en.png">English</a> (~4 Mo chacun, 2800px de large).</td>
    </tr>
  </tbody>
</table>

<p>Les éléments marqués d’un badge vert <strong>NEW</strong> sont des features ajoutées depuis fin 2025.</p>

<h2 id="ce-qui-est-couvert">Ce qui est couvert</h2>

<p>Ce n’est pas un résumé “top 20 commandes”. C’est la référence complète :</p>

<table>
  <thead>
    <tr>
      <th>Section</th>
      <th>Couverture</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Raccourcis Clavier</td>
      <td>~30 raccourcis + préfixes + dialogues de confirmation</td>
    </tr>
    <tr>
      <td>Commandes Slash</td>
      <td><strong>55+ commandes</strong> en 7 catégories</td>
    </tr>
    <tr>
      <td>CLI Flags</td>
      <td><strong>55+ flags</strong> en 8 catégories + sous-commandes</td>
    </tr>
    <tr>
      <td>The Big 5 (Système d’Extension)</td>
      <td>CLAUDE.md, Rules, Commands, Skills, Subagents, MCP, Plugins</td>
    </tr>
    <tr>
      <td>Modes de Permission</td>
      <td>Les <strong>6 modes</strong> avec la syntaxe de permissions</td>
    </tr>
    <tr>
      <td>Hooks</td>
      <td>Les <strong>25 événements</strong> du cycle de vie + 4 types de handlers + champ <code class="language-plaintext highlighter-rouge">if</code></td>
    </tr>
    <tr>
      <td>Input Superpowers</td>
      <td>@mentions, !shell, images, pipes, worktrees, background</td>
    </tr>
    <tr>
      <td>Configuration</td>
      <td>Hiérarchie 5 niveaux, commandes config, variables d’env clés</td>
    </tr>
    <tr>
      <td>File Structure Map</td>
      <td>Arborescence projet + globale complète</td>
    </tr>
    <tr>
      <td>Rewind &amp; Checkpoints</td>
      <td>Toutes les options + stratégies de gestion du contexte</td>
    </tr>
    <tr>
      <td>Pro Workflow</td>
      <td>Boucle Plan→Execute, techniques de prompting, patterns avancés</td>
    </tr>
    <tr>
      <td>Personnaliser Claude Code</td>
      <td><strong>Comment créer chaque type d’extension</strong> avec frontmatter complet</td>
    </tr>
    <tr>
      <td>Quick Reference</td>
      <td>Combos les plus utilisés, modèles &amp; effort levels</td>
    </tr>
  </tbody>
</table>

<h2 id="ajouts-récents-à-connaître">Ajouts récents à connaître</h2>

<h3 id="mcp-computer-use">MCP Computer Use</h3>

<p>Lancé le 23 mars 2026. Claude peut maintenant <strong>voir et contrôler votre bureau</strong> : prendre des screenshots, cliquer, taper, scroller et faire du drag &amp; drop sur les applications macOS.</p>

<ul>
  <li><strong>27 outils</strong> dont <code class="language-plaintext highlighter-rouge">screenshot</code>, <code class="language-plaintext highlighter-rouge">left_click</code>, <code class="language-plaintext highlighter-rouge">type</code>, <code class="language-plaintext highlighter-rouge">key</code>, <code class="language-plaintext highlighter-rouge">scroll</code>, <code class="language-plaintext highlighter-rouge">zoom</code>, <code class="language-plaintext highlighter-rouge">computer_batch</code></li>
  <li><strong>Sécurité</strong> : <code class="language-plaintext highlighter-rouge">request_access</code> obligatoire. Filtrage au niveau du compositing — seules les apps autorisées sont visibles dans les screenshots</li>
  <li><strong>Performance</strong> : <code class="language-plaintext highlighter-rouge">computer_batch</code> exécute une séquence d’actions en un seul appel</li>
  <li>Disponible sur les plans <strong>Pro et Max</strong>, macOS uniquement pour le moment</li>
</ul>

<h3 id="nouvelles-commandes-slash">Nouvelles commandes Slash</h3>

<table>
  <thead>
    <tr>
      <th>Commande</th>
      <th>Ce qu’elle fait</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">/schedule</code></td>
      <td>Planifier des agents distants en cron</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">/desktop</code></td>
      <td>Transférer la session vers l’app Desktop</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">/voice</code></td>
      <td>Saisie par dictée vocale</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">/diff</code></td>
      <td>Viewer de diff interactif</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">/security-review</code></td>
      <td>Scanner les changements pour les vulnérabilités</td>
    </tr>
  </tbody>
</table>

<h3 id="nouveaux-flags-cli">Nouveaux flags CLI</h3>

<table>
  <thead>
    <tr>
      <th>Flag</th>
      <th>Ce qu’il fait</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--tmux</code></td>
      <td>Worktree dans un panneau tmux dédié</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--from-pr 42</code></td>
      <td>Reprendre depuis une PR GitHub</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--fork-session</code></td>
      <td>Forker la session en gardant le contexte</td>
    </tr>
  </tbody>
</table>

<h3 id="hooks--25-événements-4-types-de-handlers">Hooks : 25 événements, 4 types de handlers</h3>

<p>Le système de hooks supporte maintenant <strong>25 événements</strong> du cycle de vie (contre ~8 auparavant) et <strong>4 types de handlers</strong> : <code class="language-plaintext highlighter-rouge">command</code>, <code class="language-plaintext highlighter-rouge">http</code>, <code class="language-plaintext highlighter-rouge">prompt</code>, <code class="language-plaintext highlighter-rouge">agent</code>. Nouveaux événements : <code class="language-plaintext highlighter-rouge">SubagentStart/Stop</code>, <code class="language-plaintext highlighter-rouge">TaskCreated/Completed</code>, <code class="language-plaintext highlighter-rouge">TeammateIdle</code>, <code class="language-plaintext highlighter-rouge">PostCompact</code>, <code class="language-plaintext highlighter-rouge">ConfigChange</code>, <code class="language-plaintext highlighter-rouge">FileChanged</code>, et d’autres.</p>

<h3 id="frontmatter-skills--subagents">Frontmatter Skills &amp; Subagents</h3>

<p>Les Skills ont gagné les options <code class="language-plaintext highlighter-rouge">context: fork</code>, <code class="language-plaintext highlighter-rouge">paths:</code>, et <code class="language-plaintext highlighter-rouge">effort:</code>. Les Subagents ont gagné <code class="language-plaintext highlighter-rouge">isolation: worktree</code> et <code class="language-plaintext highlighter-rouge">memory: project/user/local</code> pour la connaissance persistante.</p>

<h3 id="card-personnaliser-claude-code">Card “Personnaliser Claude Code”</h3>

<p>Une des sections les plus utiles : un guide complet montrant comment créer <strong>chaque type d’extension</strong> — commandes slash, skills, sous-agents, rules, hooks et serveurs MCP — chacun avec un exemple de frontmatter complet et un guide de décision “où placer quoi ?”.</p>

<hr />

<p>Si vous repérez une erreur ou une feature manquante, n’hésitez pas à me contacter — je maintiendrai cette cheatsheet à jour au fil des évolutions de Claude Code.</p>
]]></content:encoded>
        <pubDate>Tue, 31 Mar 2026 00:00:00 +0200</pubDate>
        <link>https://angelo-lima.fr/fr/claude-code-cheatsheet-2026-mise-a-jour/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/fr/claude-code-cheatsheet-2026-mise-a-jour/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
          <category>Claude Code</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>/insights : La Commande qui Analyse Votre Façon de Coder avec Claude</title>
        <description>
          
            La commande /insights de Claude Code analyse 30 jours de sessions pour générer un rapport HTML interactif : statistiques, frictions, suggestions CLAUDE.md et recommandations personnalisées.
          
        </description>
        <content:encoded><![CDATA[<p>Annoncée début février 2026 par Thariq Shihipar d’Anthropic, la commande <code class="language-plaintext highlighter-rouge">/insights</code> est l’une des dernières additions à Claude Code. Le principe : analyser vos 30 derniers jours de sessions et générer un rapport détaillé de vos habitudes. Patterns récurrents, points de friction, workflows inefficaces — tout y passe.</p>

<h2 id="quest-ce-que-insights-">Qu’est-ce que /insights ?</h2>

<p><code class="language-plaintext highlighter-rouge">/insights</code> est une commande intégrée à Claude Code qui analyse l’historique de vos sessions locales et produit un <strong>rapport HTML interactif</strong>. Pas besoin de configuration, pas de tracking externe : tout est basé sur les données déjà stockées sur votre machine.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Dans Claude Code, tapez simplement :</span>
/insights
</code></pre></div></div>

<p>Le rapport est généré dans <code class="language-plaintext highlighter-rouge">~/.claude/usage-data/report.html</code> et s’ouvre automatiquement dans votre navigateur.</p>

<h2 id="comment-ça-fonctionne-techniquement">Comment ça Fonctionne Techniquement</h2>

<p>Le système traite vos données en <strong>6 étapes</strong> :</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Sessions locales (~/.claude/projects/)
    ↓
1. Collecte et filtrage des sessions
    ↓
2. Extraction des métadonnées (tokens, outils, durée, modifications)
    ↓
3. Analyse qualitative des transcriptions via LLM (Haiku)
    ↓
4. Agrégation des données sur l'ensemble des sessions
    ↓
5. Analyse multi-prompt générant des insights spécialisés
    ↓
6. Rendu HTML avec visualisations interactives
</code></pre></div></div>

<h3 id="filtrage-intelligent">Filtrage Intelligent</h3>

<p>Toutes les sessions ne sont pas analysées. Sont exclues :</p>

<table>
  <thead>
    <tr>
      <th>Exclusion</th>
      <th>Raison</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Sessions de subagents (<code class="language-plaintext highlighter-rouge">agent-*</code>)</td>
      <td>Bruit dans les données</td>
    </tr>
    <tr>
      <td>Sessions internes d’extraction</td>
      <td>Données techniques internes</td>
    </tr>
    <tr>
      <td>Sessions &lt; 2 messages utilisateur</td>
      <td>Pas assez de contexte</td>
    </tr>
    <tr>
      <td>Sessions &lt; 1 minute</td>
      <td>Démarrages accidentels</td>
    </tr>
  </tbody>
</table>

<h3 id="traitement-des-données">Traitement des Données</h3>

<ul>
  <li><strong>Modèle utilisé</strong> : Haiku (rapport coût/performance optimal)</li>
  <li><strong>Limite</strong> : 50 nouvelles sessions analysées par exécution</li>
  <li><strong>Cache</strong> : Les analyses sont cachées dans <code class="language-plaintext highlighter-rouge">~/.claude/usage-data/facets/&lt;session-id&gt;.json</code></li>
  <li><strong>Sessions longues</strong> : Découpées en segments de 25 000 caractères, chacun résumé séparément</li>
</ul>

<h2 id="ce-que-contient-le-rapport">Ce que Contient le Rapport</h2>

<h3 id="1-dashboard-statistiques">1. Dashboard Statistiques</h3>

<p>Vue d’ensemble chiffrée de votre activité :</p>

<ul>
  <li><strong>Sessions et messages</strong> : nombre total, moyenne par jour</li>
  <li><strong>Temps passé</strong> : durée cumulée de vos sessions</li>
  <li><strong>Tokens consommés</strong> : input et output</li>
  <li><strong>Activité Git</strong> : commits et pushs</li>
  <li><strong>Jours actifs</strong> : fréquence et séries d’activité</li>
  <li><strong>Heures de pointe</strong> : quand vous êtes le plus productif</li>
</ul>

<h3 id="2-résumé-exécutif-at-a-glance">2. Résumé Exécutif (“At a Glance”)</h3>

<p>Quatre sections ciblées :</p>

<table>
  <thead>
    <tr>
      <th>Section</th>
      <th>Contenu</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Ce qui fonctionne</td>
      <td>Vos workflows les plus efficaces</td>
    </tr>
    <tr>
      <td>Ce qui freine</td>
      <td>Les frictions récurrentes identifiées</td>
    </tr>
    <tr>
      <td>Quick wins</td>
      <td>Améliorations faciles à implémenter</td>
    </tr>
    <tr>
      <td>Opportunités ambitieuses</td>
      <td>Changements de workflow plus profonds</td>
    </tr>
  </tbody>
</table>

<h3 id="3-visualisations-interactives">3. Visualisations Interactives</h3>

<ul>
  <li><strong>Graphique d’activité quotidienne</strong> avec sélecteur de fuseau horaire</li>
  <li><strong>Distribution des outils utilisés</strong> (Read, Edit, Bash, Grep, etc.)</li>
  <li><strong>Répartition des langages</strong> de programmation</li>
  <li><strong>Niveaux de satisfaction</strong> par session</li>
  <li><strong>Types de sessions</strong> : tâche unique, multi-tâches, itération, exploration, question rapide</li>
</ul>

<h3 id="4-analyse-des-frictions">4. Analyse des Frictions</h3>

<p>C’est la section la plus actionnable. Le rapport catégorise vos points de douleur :</p>

<table>
  <thead>
    <tr>
      <th>Type de Friction</th>
      <th>Exemple</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Mauvaise compréhension</td>
      <td>Claude part dans la mauvaise direction</td>
    </tr>
    <tr>
      <td>Approche incorrecte</td>
      <td>Solution techniquement fausse proposée</td>
    </tr>
    <tr>
      <td>Code bugué</td>
      <td>Le code généré ne fonctionne pas</td>
    </tr>
    <tr>
      <td>Action rejetée</td>
      <td>Vous avez refusé une action de Claude</td>
    </tr>
    <tr>
      <td>Changements excessifs</td>
      <td>Claude modifie trop de choses</td>
    </tr>
    <tr>
      <td>Échecs d’outils</td>
      <td>Erreurs d’exécution des outils</td>
    </tr>
  </tbody>
</table>

<p>Chaque friction est documentée avec des <strong>exemples concrets</strong> tirés de vos sessions.</p>

<h3 id="5-suggestions-claudemd">5. Suggestions CLAUDE.md</h3>

<p>La section la plus intéressante : le rapport génère des <strong>règles prêtes à copier-coller</strong> dans votre <code class="language-plaintext highlighter-rouge">CLAUDE.md</code>, basées sur les instructions que vous répétez souvent.</p>

<p>Exemple de suggestion :</p>

<div class="language-markdown highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gh"># Suggestion générée par /insights</span>

<span class="gu">## Testing</span>
<span class="p">-</span> Toujours exécuter les tests après modification d'un fichier source
<span class="p">-</span> Utiliser vitest pour les tests unitaires, pas jest

<span class="gu">## Conventions</span>
<span class="p">-</span> Utiliser des imports absolus avec l'alias @/
<span class="p">-</span> Nommer les fichiers en kebab-case
</code></pre></div></div>

<p>Ces suggestions ciblent précisément les patterns répétitifs détectés dans vos sessions. L’idée : <strong>dire une fois à Claude ce que vous répétez chaque jour</strong>.</p>

<h3 id="6-recommandations-de-features">6. Recommandations de Features</h3>

<p>Selon votre profil d’utilisation, le rapport suggère des fonctionnalités Claude Code que vous n’exploitez peut-être pas :</p>

<ul>
  <li><strong>MCP Servers</strong> si vous interagissez souvent avec des outils externes</li>
  <li><strong>Skills personnalisés</strong> si vous répétez les mêmes workflows</li>
  <li><strong>Hooks</strong> si vous faites des actions manuelles post-édition</li>
  <li><strong>Mode Headless</strong> si vous avez des tâches CI/CD</li>
  <li><strong>Task Agents</strong> si vous faites de l’exploration de codebase complexe</li>
</ul>

<h2 id="catégories-dobjectifs-trackés">Catégories d’Objectifs Trackés</h2>

<p>Le rapport classifie automatiquement vos sessions par type de tâche :</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>debug/investigate     │ implement feature    │ fix bug
write script/tool     │ refactor code        │ configure system
create PR/commit      │ analyze data         │ understand codebase
write tests           │ write docs           │ deploy/infra
</code></pre></div></div>

<p>Cette classification aide à comprendre <strong>comment vous répartissez votre temps</strong> avec Claude Code.</p>

<h2 id="confidentialité-et-données">Confidentialité et Données</h2>

<p>Point important : <strong>tout est local</strong>.</p>

<ul>
  <li>L’analyse s’exécute sur votre machine via l’API Anthropic</li>
  <li>Aucun code source n’est uploadé</li>
  <li>L’analyse porte sur les <strong>patterns d’interaction</strong>, pas sur le contenu du code</li>
  <li>Le rapport HTML reste en local, partageable à votre discrétion</li>
  <li>Les facettes cachées ne contiennent que des métadonnées agrégées</li>
</ul>

<h2 id="bonnes-pratiques">Bonnes Pratiques</h2>

<h3 id="fréquence-dutilisation">Fréquence d’Utilisation</h3>

<p>Ne lancez pas <code class="language-plaintext highlighter-rouge">/insights</code> tous les jours. Le sweet spot :</p>

<ul>
  <li><strong>Toutes les 2-3 semaines</strong> pour un suivi régulier</li>
  <li><strong>Après un milestone</strong> (fin de feature, release)</li>
  <li><strong>Après une période de friction</strong> pour identifier les causes</li>
</ul>

<h3 id="exploiter-le-rapport">Exploiter le Rapport</h3>

<ol>
  <li><strong>Commencez par les frictions</strong> : c’est là que se cachent les gains rapides</li>
  <li><strong>Copiez les suggestions CLAUDE.md</strong> pertinentes dans votre projet</li>
  <li><strong>Testez les features recommandées</strong> que vous n’utilisez pas encore</li>
  <li><strong>Comparez les rapports</strong> d’un mois sur l’autre pour mesurer votre progression</li>
</ol>

<h3 id="workflow-mensuel-recommandé">Workflow Mensuel Recommandé</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/insights
    ↓
Lire les frictions identifiées
    ↓
Copier les suggestions CLAUDE.md pertinentes
    ↓
Tester 1-2 features recommandées
    ↓
Reprendre le travail normal
    ↓
/insights le mois suivant → mesurer l'évolution
</code></pre></div></div>

<h2 id="limitations">Limitations</h2>

<ul>
  <li><strong>50 sessions max</strong> par analyse (les plus récentes sont priorisées)</li>
  <li><strong>Modèle Haiku</strong> pour l’analyse (bon rapport qualité/prix, mais moins fin qu’Opus)</li>
  <li><strong>30 jours</strong> de fenêtre d’analyse</li>
  <li>Le rapport peut prendre <strong>plusieurs minutes</strong> selon le volume (600+ messages = patience)</li>
</ul>

<h2 id="mon-avis">Mon Avis</h2>

<p>La feature n’a qu’un mois d’existence au moment où j’écris, mais elle m’a déjà surpris. Après mon premier <code class="language-plaintext highlighter-rouge">/insights</code>, j’ai découvert que je répétais les mêmes consignes de formatting dans plus de la moitié de mes sessions — du temps perdu que quelques lignes dans <code class="language-plaintext highlighter-rouge">CLAUDE.md</code> auraient pu éviter.</p>

<p>C’est un <strong>miroir de vos habitudes</strong> : parfois flatteur, parfois brutal. La vraie valeur est dans les suggestions <code class="language-plaintext highlighter-rouge">CLAUDE.md</code>. Au lieu de répéter les mêmes instructions session après session, vous les codifiez une bonne fois. C’est exactement le genre d’optimisation meta qui fait gagner du temps sur le long terme.</p>

<p>Le fait que tout reste local est un plus non négligeable, surtout pour ceux qui travaillent sur du code propriétaire. On est encore aux débuts de cette feature — il sera intéressant de voir comment Anthropic la fera évoluer dans les prochaines versions.</p>

<hr />

<p><em>La commande est toute fraîche — c’est le moment de l’essayer et de découvrir ce que vos sessions révèlent sur vous.</em></p>
]]></content:encoded>
        <pubDate>Thu, 05 Mar 2026 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/fr/claude-code-insights-commande/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/fr/claude-code-insights-commande/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>/insights: The Command That Analyzes How You Code with Claude</title>
        <description>
          
            Claude Code&apos;s /insights command analyzes 30 days of sessions to generate an interactive HTML report: statistics, friction points, CLAUDE.md suggestions and personalized recommendations.
          
        </description>
        <content:encoded><![CDATA[<p>Announced in early February 2026 by Anthropic’s Thariq Shihipar, the <code class="language-plaintext highlighter-rouge">/insights</code> command is one of the latest additions to Claude Code. The concept: analyze your last 30 days of sessions and generate a detailed report of your habits. Recurring patterns, friction points, inefficient workflows — nothing escapes it.</p>

<h2 id="what-is-insights">What is /insights?</h2>

<p><code class="language-plaintext highlighter-rouge">/insights</code> is a built-in Claude Code command that analyzes your local session history and produces an <strong>interactive HTML report</strong>. No configuration needed, no external tracking: everything is based on data already stored on your machine.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># In Claude Code, simply type:</span>
/insights
</code></pre></div></div>

<p>The report is generated at <code class="language-plaintext highlighter-rouge">~/.claude/usage-data/report.html</code> and opens automatically in your browser.</p>

<h2 id="how-it-works-technically">How It Works Technically</h2>

<p>The system processes your data in <strong>6 stages</strong>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Local sessions (~/.claude/projects/)
    ↓
1. Session collection and filtering
    ↓
2. Metadata extraction (tokens, tools, duration, modifications)
    ↓
3. Qualitative transcript analysis via LLM (Haiku)
    ↓
4. Data aggregation across all sessions
    ↓
5. Multi-prompt analysis generating specialized insights
    ↓
6. HTML rendering with interactive visualizations
</code></pre></div></div>

<h3 id="smart-filtering">Smart Filtering</h3>

<p>Not all sessions are analyzed. Excluded:</p>

<table>
  <thead>
    <tr>
      <th>Exclusion</th>
      <th>Reason</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Subagent sessions (<code class="language-plaintext highlighter-rouge">agent-*</code>)</td>
      <td>Noise in the data</td>
    </tr>
    <tr>
      <td>Internal extraction sessions</td>
      <td>Internal technical data</td>
    </tr>
    <tr>
      <td>Sessions &lt; 2 user messages</td>
      <td>Not enough context</td>
    </tr>
    <tr>
      <td>Sessions &lt; 1 minute</td>
      <td>Accidental starts</td>
    </tr>
  </tbody>
</table>

<h3 id="data-processing">Data Processing</h3>

<ul>
  <li><strong>Model used</strong>: Haiku (optimal cost/performance ratio)</li>
  <li><strong>Limit</strong>: 50 new sessions analyzed per run</li>
  <li><strong>Cache</strong>: Analyses are cached in <code class="language-plaintext highlighter-rouge">~/.claude/usage-data/facets/&lt;session-id&gt;.json</code></li>
  <li><strong>Long sessions</strong>: Split into 25,000-character segments, each summarized separately</li>
</ul>

<h2 id="what-the-report-contains">What the Report Contains</h2>

<h3 id="1-statistics-dashboard">1. Statistics Dashboard</h3>

<p>A quantified overview of your activity:</p>

<ul>
  <li><strong>Sessions and messages</strong>: total count, daily average</li>
  <li><strong>Time spent</strong>: cumulative session duration</li>
  <li><strong>Tokens consumed</strong>: input and output</li>
  <li><strong>Git activity</strong>: commits and pushes</li>
  <li><strong>Active days</strong>: frequency and activity streaks</li>
  <li><strong>Peak hours</strong>: when you’re most productive</li>
</ul>

<h3 id="2-executive-summary-at-a-glance">2. Executive Summary (“At a Glance”)</h3>

<p>Four targeted sections:</p>

<table>
  <thead>
    <tr>
      <th>Section</th>
      <th>Content</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>What’s working</td>
      <td>Your most effective workflows</td>
    </tr>
    <tr>
      <td>What’s hindering</td>
      <td>Recurring friction points identified</td>
    </tr>
    <tr>
      <td>Quick wins</td>
      <td>Easy improvements to implement</td>
    </tr>
    <tr>
      <td>Ambitious opportunities</td>
      <td>Deeper workflow changes</td>
    </tr>
  </tbody>
</table>

<h3 id="3-interactive-visualizations">3. Interactive Visualizations</h3>

<ul>
  <li><strong>Daily activity chart</strong> with timezone selector</li>
  <li><strong>Tool usage distribution</strong> (Read, Edit, Bash, Grep, etc.)</li>
  <li><strong>Programming language breakdown</strong></li>
  <li><strong>Satisfaction levels</strong> per session</li>
  <li><strong>Session types</strong>: single task, multi-task, iteration, exploration, quick question</li>
</ul>

<h3 id="4-friction-analysis">4. Friction Analysis</h3>

<p>This is the most actionable section. The report categorizes your pain points:</p>

<table>
  <thead>
    <tr>
      <th>Friction Type</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Misunderstood request</td>
      <td>Claude heads in the wrong direction</td>
    </tr>
    <tr>
      <td>Wrong approach</td>
      <td>Technically incorrect solution proposed</td>
    </tr>
    <tr>
      <td>Buggy code</td>
      <td>Generated code doesn’t work</td>
    </tr>
    <tr>
      <td>Rejected action</td>
      <td>You refused a Claude action</td>
    </tr>
    <tr>
      <td>Excessive changes</td>
      <td>Claude modifies too much</td>
    </tr>
    <tr>
      <td>Tool failures</td>
      <td>Tool execution errors</td>
    </tr>
  </tbody>
</table>

<p>Each friction is documented with <strong>concrete examples</strong> from your sessions.</p>

<h3 id="5-claudemd-suggestions">5. CLAUDE.md Suggestions</h3>

<p>The most valuable section: the report generates <strong>copy-paste-ready rules</strong> for your <code class="language-plaintext highlighter-rouge">CLAUDE.md</code>, based on instructions you repeat often.</p>

<p>Example suggestion:</p>

<div class="language-markdown highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gh"># Suggestion generated by /insights</span>

<span class="gu">## Testing</span>
<span class="p">-</span> Always run tests after modifying a source file
<span class="p">-</span> Use vitest for unit tests, not jest

<span class="gu">## Conventions</span>
<span class="p">-</span> Use absolute imports with the @/ alias
<span class="p">-</span> Name files in kebab-case
</code></pre></div></div>

<p>These suggestions precisely target repetitive patterns detected in your sessions. The idea: <strong>tell Claude once what you repeat every day</strong>.</p>

<h3 id="6-feature-recommendations">6. Feature Recommendations</h3>

<p>Based on your usage profile, the report suggests Claude Code features you might not be leveraging:</p>

<ul>
  <li><strong>MCP Servers</strong> if you frequently interact with external tools</li>
  <li><strong>Custom Skills</strong> if you repeat the same workflows</li>
  <li><strong>Hooks</strong> if you perform manual post-edit actions</li>
  <li><strong>Headless Mode</strong> if you have CI/CD tasks</li>
  <li><strong>Task Agents</strong> if you do complex codebase exploration</li>
</ul>

<h2 id="goal-categories-tracked">Goal Categories Tracked</h2>

<p>The report automatically classifies your sessions by task type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>debug/investigate     │ implement feature    │ fix bug
write script/tool     │ refactor code        │ configure system
create PR/commit      │ analyze data         │ understand codebase
write tests           │ write docs           │ deploy/infra
</code></pre></div></div>

<p>This classification helps understand <strong>how you distribute your time</strong> with Claude Code.</p>

<h2 id="privacy-and-data">Privacy and Data</h2>

<p>Important point: <strong>everything is local</strong>.</p>

<ul>
  <li>Analysis runs on your machine via the Anthropic API</li>
  <li>No source code is uploaded</li>
  <li>Analysis focuses on <strong>interaction patterns</strong>, not code content</li>
  <li>The HTML report stays local, shareable at your discretion</li>
  <li>Cached facets contain only aggregated metadata</li>
</ul>

<h2 id="best-practices">Best Practices</h2>

<h3 id="usage-frequency">Usage Frequency</h3>

<p>Don’t run <code class="language-plaintext highlighter-rouge">/insights</code> every day. The sweet spot:</p>

<ul>
  <li><strong>Every 2-3 weeks</strong> for regular monitoring</li>
  <li><strong>After a milestone</strong> (feature completion, release)</li>
  <li><strong>After a friction period</strong> to identify root causes</li>
</ul>

<h3 id="leveraging-the-report">Leveraging the Report</h3>

<ol>
  <li><strong>Start with frictions</strong>: that’s where quick wins hide</li>
  <li><strong>Copy relevant CLAUDE.md suggestions</strong> into your project</li>
  <li><strong>Test recommended features</strong> you’re not using yet</li>
  <li><strong>Compare reports</strong> month over month to measure your progress</li>
</ol>

<h3 id="recommended-monthly-workflow">Recommended Monthly Workflow</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/insights
    ↓
Read identified frictions
    ↓
Copy relevant CLAUDE.md suggestions
    ↓
Test 1-2 recommended features
    ↓
Resume normal work
    ↓
/insights next month → measure evolution
</code></pre></div></div>

<h2 id="limitations">Limitations</h2>

<ul>
  <li><strong>50 sessions max</strong> per analysis (most recent are prioritized)</li>
  <li><strong>Haiku model</strong> for analysis (good cost/quality ratio, but less nuanced than Opus)</li>
  <li><strong>30-day</strong> analysis window</li>
  <li>Report can take <strong>several minutes</strong> depending on volume (600+ messages = patience)</li>
</ul>

<h2 id="my-take">My Take</h2>

<p>The feature is only a month old as I write this, but it has already surprised me. After my first <code class="language-plaintext highlighter-rouge">/insights</code> run, I discovered I was repeating the same formatting instructions in over half my sessions — wasted time that a few lines in <code class="language-plaintext highlighter-rouge">CLAUDE.md</code> could have prevented.</p>

<p>It’s a <strong>mirror of your habits</strong>: sometimes flattering, sometimes brutal. The real value lies in the <code class="language-plaintext highlighter-rouge">CLAUDE.md</code> suggestions. Instead of repeating the same instructions session after session, you codify them once and for all. This is exactly the kind of meta-optimization that saves time in the long run.</p>

<p>The fact that everything stays local is a significant plus, especially for those working on proprietary code. We’re still in the early days of this feature — it will be interesting to see how Anthropic evolves it in upcoming versions.</p>

<hr />

<p><em>The command is brand new — now is the time to try it and discover what your sessions reveal about you.</em></p>
]]></content:encoded>
        <pubDate>Thu, 05 Mar 2026 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/en/claude-code-insights-command/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/en/claude-code-insights-command/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Sourdine : Transcription de réunions avec IA 100% locale</title>
        <description>
          
            Sourdine est une application Electron qui transcrit vos réunions en temps réel et génère des notes automatiques avec une IA qui tourne entièrement sur votre Mac. Aucune API, aucun abonnement, 100% vie privée.
          
        </description>
        <content:encoded><![CDATA[<p>Combien de réunions avez-vous cette semaine ? Et combien de notes avez-vous réellement prises ? Entre participer activement et prendre des notes détaillées, il faut choisir. C’est de cette frustration qu’est né <strong>Sourdine</strong> — avec une contrainte majeure : <strong>tout doit rester sur ma machine</strong>.</p>

<h2 id="le-problème--ia-cloud-vs-vie-privée">Le Problème : IA Cloud vs Vie Privée</h2>

<p>Les solutions de transcription (Otter.ai, Fireflies, transcriptions Teams/Meet) partagent un point commun : <strong>vos conversations transitent par leurs serveurs</strong>. Problématique pour :</p>

<ul>
  <li>Réunions stratégiques d’entreprise</li>
  <li>Entretiens confidentiels</li>
  <li>Discussions médicales ou juridiques</li>
  <li>Tout ce qui ne regarde pas Google, Microsoft ou une startup</li>
</ul>

<p>Sans parler des abonnements mensuels qui s’accumulent.</p>

<h2 id="la-solution--tout-local-zéro-compromis">La Solution : Tout Local, Zéro Compromis</h2>

<p><strong>Sourdine</strong> fait tourner deux modèles d’IA directement sur votre Mac :</p>

<table>
  <thead>
    <tr>
      <th>Modèle</th>
      <th>Taille</th>
      <th>Rôle</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Parakeet TDT</strong> (NVIDIA)</td>
      <td>640 Mo</td>
      <td>Transcription speech-to-text</td>
    </tr>
    <tr>
      <td><strong>Mistral 7B</strong></td>
      <td>4.4 Go</td>
      <td>Résumés, points clés, chat contextuel</td>
    </tr>
  </tbody>
</table>

<p>Aucune connexion internet après le téléchargement initial. Vos données ne quittent jamais votre machine.</p>

<h2 id="comment-ça-marche">Comment Ça Marche</h2>

<h3 id="capture-audio-intelligente">Capture Audio Intelligente</h3>

<p>Sourdine capture simultanément deux sources :</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Micro (votre voix)    →  ┐
                         ├→  Mixeur audio  →  Transcription
Audio système (Teams) →  ┘
</code></pre></div></div>

<p>Cette double capture utilise <strong>ScreenCaptureKit</strong> (macOS 14.2+). J’ai développé un module natif en <strong>Rust</strong> avec napi-rs pour l’intégrer à Electron.</p>

<h3 id="pipeline-de-transcription">Pipeline de Transcription</h3>

<table>
  <thead>
    <tr>
      <th>Étape</th>
      <th>Technologie</th>
      <th>Fonction</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1. Détection voix</td>
      <td>Silero VAD</td>
      <td>Identifie parole vs silence/bruit</td>
    </tr>
    <tr>
      <td>2. Transcription</td>
      <td>Parakeet TDT via sherpa-onnx</td>
      <td>Convertit audio en texte</td>
    </tr>
    <tr>
      <td>3. Notes IA</td>
      <td>Mistral 7B via node-llama-cpp</td>
      <td>Génère résumé, actions, points clés</td>
    </tr>
  </tbody>
</table>

<p>Le STT tourne dans un worker Node.js séparé pour ne pas bloquer l’interface.</p>

<h3 id="génération-de-notes">Génération de Notes</h3>

<p>Mistral 7B analyse la transcription pour extraire :</p>

<ul>
  <li><strong>Résumé</strong> concis de la discussion</li>
  <li><strong>Points clés</strong> abordés</li>
  <li><strong>Actions à suivre</strong> avec personnes assignées</li>
  <li><strong>Titre</strong> descriptif automatique</li>
</ul>

<p>Vous pouvez aussi poser des questions : <em>“Qu’est-ce que Pierre a dit à propos du budget ?”</em></p>

<p>Toutes les réunions sont indexées via <strong>SQLite FTS5</strong> (recherche full-text) et exportables en <strong>Markdown</strong> ou <strong>texte brut</strong>.</p>

<h2 id="architecture-technique">Architecture Technique</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>┌──────────────────────────────────────────────────┐
│  Electron Main Process                           │
│  ├── NestJS Backend (injection de dépendances)  │
│  ├── stt-worker (sherpa-onnx, process isolé)    │
│  ├── llm-worker (node-llama-cpp, process isolé) │
│  └── SQLite (stockage local, recherche FTS5)    │
└──────────────────────────────────────────────────┘
                       │ IPC
┌──────────────────────┴───────────────────────────┐
│  Renderer Process (Angular 21)                   │
└──────────────────────────────────────────────────┘
</code></pre></div></div>

<h3 id="stack-technique">Stack Technique</h3>

<table>
  <thead>
    <tr>
      <th>Couche</th>
      <th>Technologies</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Desktop</strong></td>
      <td>Electron 34</td>
    </tr>
    <tr>
      <td><strong>Frontend</strong></td>
      <td>Angular 21, Signals, SCSS</td>
    </tr>
    <tr>
      <td><strong>Backend</strong></td>
      <td>NestJS 11, RxJS</td>
    </tr>
    <tr>
      <td><strong>Database</strong></td>
      <td>SQLite + FTS5 (recherche full-text)</td>
    </tr>
    <tr>
      <td><strong>Audio</strong></td>
      <td>Rust/napi-rs + ScreenCaptureKit</td>
    </tr>
    <tr>
      <td><strong>Build</strong></td>
      <td>Nx monorepo, Vite, Electron Forge</td>
    </tr>
  </tbody>
</table>

<h3 id="pourquoi-ces-choix-">Pourquoi Ces Choix ?</h3>

<ul>
  <li><strong>Electron</strong> — Accès natif au système (audio, fichiers), écosystème TypeScript</li>
  <li><strong>NestJS dans Electron</strong> — Architecture modulaire, injection de dépendances</li>
  <li><strong>Workers séparés</strong> — Isolation des modèles IA (crash-safe)</li>
  <li><strong>Rust pour l’audio</strong> — Performances natives, intégration ScreenCaptureKit</li>
</ul>

<h2 id="performance-sur-apple-silicon">Performance sur Apple Silicon</h2>

<table>
  <thead>
    <tr>
      <th>Métrique</th>
      <th>MacBook Pro M2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Transcription</td>
      <td>Temps réel</td>
    </tr>
    <tr>
      <td>Génération LLM</td>
      <td>~20 tokens/s</td>
    </tr>
    <tr>
      <td>RAM au pic</td>
      <td>~4 Go</td>
    </tr>
    <tr>
      <td>CPU actif</td>
      <td>15-30%</td>
    </tr>
  </tbody>
</table>

<p>Les puces Apple Silicon avec leur Neural Engine sont parfaitement adaptées.</p>

<h2 id="ce-que-jai-appris">Ce Que J’ai Appris</h2>

<h3 id="1-laudio-cest-compliqué">1. L’Audio, C’est Compliqué</h3>

<ul>
  <li>Resampling (48kHz → 16kHz)</li>
  <li>Conversion formats (Float32 → Int16 PCM)</li>
  <li>Mixage sources multiples</li>
  <li>Gestion buffers et latence</li>
</ul>

<h3 id="2-lia-locale-a-des-contraintes">2. L’IA Locale a des Contraintes</h3>

<ul>
  <li>16 Go RAM minimum</li>
  <li>Chargement initial de plusieurs secondes</li>
  <li>Qualité dépend de la quantification (Q4_K_M = bon compromis)</li>
</ul>

<h3 id="3-electron-nest-pas-mort">3. Electron N’est Pas Mort</h3>

<p>Malgré les critiques sur la mémoire, reste le meilleur choix pour desktop cross-platform avec accès natif.</p>

<h2 id="installation">Installation</h2>

<h3 id="prérequis">Prérequis</h3>

<table>
  <thead>
    <tr>
      <th>Composant</th>
      <th>Minimum</th>
      <th>Recommandé</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>macOS</td>
      <td>14.2 (Sonoma)</td>
      <td>15+ (Sequoia)</td>
    </tr>
    <tr>
      <td>Processeur</td>
      <td>Apple Silicon (M1)</td>
      <td>M2/M3/M4</td>
    </tr>
    <tr>
      <td>RAM</td>
      <td>16 Go</td>
      <td>32 Go</td>
    </tr>
    <tr>
      <td>Stockage</td>
      <td>10 Go</td>
      <td>20 Go</td>
    </tr>
  </tbody>
</table>

<h3 id="téléchargement-du-dmg">Téléchargement du DMG</h3>

<p><strong><a href="https://github.com/Lingelo/Sourdine/releases/download/v0.2.1-beta/Sourdine.dmg">Télécharger Sourdine v0.2.1-beta</a></strong></p>

<ol>
  <li>Ouvrir le DMG et glisser Sourdine dans Applications</li>
  <li>Exécuter cette commande (app non signée) :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>xattr <span class="nt">-cr</span> /Applications/Sourdine.app
</code></pre></div>    </div>
  </li>
  <li>Lancer Sourdine — L’assistant téléchargera les modèles IA (~5 Go)</li>
  <li>Accorder les permissions <strong>Microphone</strong> et <strong>Enregistrement d’écran</strong> au premier lancement</li>
</ol>

<blockquote>
  <p><strong>Beta</strong> : Cette version est en développement actif. Vos retours sont les bienvenus via <a href="https://github.com/Lingelo/Sourdine/issues">GitHub Issues</a>.</p>
</blockquote>

<h2 id="conclusion">Conclusion</h2>

<p><strong>Sourdine</strong> est né d’un besoin personnel : garder le contrôle sur mes données tout en bénéficiant de l’IA. Le projet est <strong>open source</strong> et les contributions sont bienvenues.</p>

<p><strong><a href="https://github.com/Lingelo/Sourdine">github.com/Lingelo/Sourdine</a></strong></p>

<hr />

<p><em>Si vous partagez cette préoccupation pour la vie privée, j’espère que ce projet vous sera utile.</em></p>
]]></content:encoded>
        <pubDate>Sun, 15 Feb 2026 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/fr/sourdine-transcription-reunions-ia-locale/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/fr/sourdine-transcription-reunions-ia-locale/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
          <category>Projet</category>
          
          <category>Open-Source</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/sourdine-transcription-ia.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Sourdine: Meeting Transcription with 100% Local AI</title>
        <description>
          
            Sourdine is an Electron app that transcribes your meetings in real-time and generates automatic notes with AI running entirely on your Mac. No API, no subscription, 100% privacy.
          
        </description>
        <content:encoded><![CDATA[<p>How many meetings do you have this week? And how many notes did you actually take? Between actively participating and taking detailed notes, you have to choose. This frustration led to <strong>Sourdine</strong> — with one major constraint: <strong>everything must stay on my machine</strong>.</p>

<h2 id="the-problem-cloud-ai-vs-privacy">The Problem: Cloud AI vs Privacy</h2>

<p>Transcription solutions (Otter.ai, Fireflies, Teams/Meet transcriptions) share one thing in common: <strong>your conversations go through their servers</strong>. Problematic for:</p>

<ul>
  <li>Strategic business meetings</li>
  <li>Confidential interviews</li>
  <li>Medical or legal discussions</li>
  <li>Anything that’s none of Google, Microsoft, or a startup’s business</li>
</ul>

<p>Not to mention the monthly subscriptions piling up.</p>

<h2 id="the-solution-all-local-zero-compromise">The Solution: All Local, Zero Compromise</h2>

<p><strong>Sourdine</strong> runs two AI models directly on your Mac:</p>

<table>
  <thead>
    <tr>
      <th>Model</th>
      <th>Size</th>
      <th>Role</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Parakeet TDT</strong> (NVIDIA)</td>
      <td>640 MB</td>
      <td>Speech-to-text transcription</td>
    </tr>
    <tr>
      <td><strong>Mistral 7B</strong></td>
      <td>4.4 GB</td>
      <td>Summaries, key points, contextual chat</td>
    </tr>
  </tbody>
</table>

<p>No internet connection needed after initial download. Your data never leaves your machine.</p>

<h2 id="how-it-works">How It Works</h2>

<h3 id="smart-audio-capture">Smart Audio Capture</h3>

<p>Sourdine captures two sources simultaneously:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Microphone (your voice)  →  ┐
                            ├→  Audio mixer  →  Transcription
System audio (Teams)     →  ┘
</code></pre></div></div>

<p>This dual capture uses <strong>ScreenCaptureKit</strong> (macOS 14.2+). I developed a native module in <strong>Rust</strong> with napi-rs to integrate it with Electron.</p>

<h3 id="transcription-pipeline">Transcription Pipeline</h3>

<table>
  <thead>
    <tr>
      <th>Step</th>
      <th>Technology</th>
      <th>Function</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1. Voice detection</td>
      <td>Silero VAD</td>
      <td>Identifies speech vs silence/noise</td>
    </tr>
    <tr>
      <td>2. Transcription</td>
      <td>Parakeet TDT via sherpa-onnx</td>
      <td>Converts audio to text</td>
    </tr>
    <tr>
      <td>3. AI notes</td>
      <td>Mistral 7B via node-llama-cpp</td>
      <td>Generates summary, actions, key points</td>
    </tr>
  </tbody>
</table>

<p>STT runs in a separate Node.js worker to avoid blocking the UI.</p>

<h3 id="note-generation">Note Generation</h3>

<p>Mistral 7B analyzes the transcription to extract:</p>

<ul>
  <li><strong>Summary</strong> of the discussion</li>
  <li><strong>Key points</strong> covered</li>
  <li><strong>Action items</strong> with assigned people</li>
  <li><strong>Title</strong> automatically generated</li>
</ul>

<p>You can also ask questions: <em>“What did Pierre say about the budget?”</em></p>

<p>All meetings are indexed via <strong>SQLite FTS5</strong> (full-text search) and can be exported as <strong>Markdown</strong> or <strong>plain text</strong>.</p>

<h2 id="technical-architecture">Technical Architecture</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>┌──────────────────────────────────────────────────┐
│  Electron Main Process                           │
│  ├── NestJS Backend (dependency injection)      │
│  ├── stt-worker (sherpa-onnx, isolated process) │
│  ├── llm-worker (node-llama-cpp, isolated)      │
│  └── SQLite (local storage, FTS5 search)        │
└──────────────────────────────────────────────────┘
                       │ IPC
┌──────────────────────┴───────────────────────────┐
│  Renderer Process (Angular 21)                   │
└──────────────────────────────────────────────────┘
</code></pre></div></div>

<h3 id="tech-stack">Tech Stack</h3>

<table>
  <thead>
    <tr>
      <th>Layer</th>
      <th>Technologies</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Desktop</strong></td>
      <td>Electron 34</td>
    </tr>
    <tr>
      <td><strong>Frontend</strong></td>
      <td>Angular 21, Signals, SCSS</td>
    </tr>
    <tr>
      <td><strong>Backend</strong></td>
      <td>NestJS 11, RxJS</td>
    </tr>
    <tr>
      <td><strong>Database</strong></td>
      <td>SQLite + FTS5 (full-text search)</td>
    </tr>
    <tr>
      <td><strong>Audio</strong></td>
      <td>Rust/napi-rs + ScreenCaptureKit</td>
    </tr>
    <tr>
      <td><strong>Build</strong></td>
      <td>Nx monorepo, Vite, Electron Forge</td>
    </tr>
  </tbody>
</table>

<h3 id="why-these-choices">Why These Choices?</h3>

<ul>
  <li><strong>Electron</strong> — Native system access (audio, files), TypeScript ecosystem</li>
  <li><strong>NestJS in Electron</strong> — Modular architecture, dependency injection</li>
  <li><strong>Separate workers</strong> — AI model isolation (crash-safe)</li>
  <li><strong>Rust for audio</strong> — Native performance, ScreenCaptureKit integration</li>
</ul>

<h2 id="performance-on-apple-silicon">Performance on Apple Silicon</h2>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>MacBook Pro M2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Transcription</td>
      <td>Real-time</td>
    </tr>
    <tr>
      <td>LLM generation</td>
      <td>~20 tokens/s</td>
    </tr>
    <tr>
      <td>Peak RAM</td>
      <td>~4 GB</td>
    </tr>
    <tr>
      <td>Active CPU</td>
      <td>15-30%</td>
    </tr>
  </tbody>
</table>

<p>Apple Silicon chips with their Neural Engine are perfectly suited for this.</p>

<h2 id="what-i-learned">What I Learned</h2>

<h3 id="1-audio-is-complicated">1. Audio Is Complicated</h3>

<ul>
  <li>Resampling (48kHz → 16kHz)</li>
  <li>Format conversion (Float32 → Int16 PCM)</li>
  <li>Multi-source mixing</li>
  <li>Buffer and latency management</li>
</ul>

<h3 id="2-local-ai-has-constraints">2. Local AI Has Constraints</h3>

<ul>
  <li>16 GB RAM minimum</li>
  <li>Initial loading takes several seconds</li>
  <li>Quality depends on quantization (Q4_K_M = good compromise)</li>
</ul>

<h3 id="3-electron-is-not-dead">3. Electron Is Not Dead</h3>

<p>Despite criticism about memory usage, still the best choice for cross-platform desktop with native access.</p>

<h2 id="installation">Installation</h2>

<h3 id="requirements">Requirements</h3>

<table>
  <thead>
    <tr>
      <th>Component</th>
      <th>Minimum</th>
      <th>Recommended</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>macOS</td>
      <td>14.2 (Sonoma)</td>
      <td>15+ (Sequoia)</td>
    </tr>
    <tr>
      <td>Processor</td>
      <td>Apple Silicon (M1)</td>
      <td>M2/M3/M4</td>
    </tr>
    <tr>
      <td>RAM</td>
      <td>16 GB</td>
      <td>32 GB</td>
    </tr>
    <tr>
      <td>Storage</td>
      <td>10 GB</td>
      <td>20 GB</td>
    </tr>
  </tbody>
</table>

<h3 id="download-the-dmg">Download the DMG</h3>

<p><strong><a href="https://github.com/Lingelo/Sourdine/releases/download/v0.2.1-beta/Sourdine.dmg">Download Sourdine v0.2.1-beta</a></strong></p>

<ol>
  <li>Open the DMG and drag Sourdine to Applications</li>
  <li>Run this command (app is not signed):
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>xattr <span class="nt">-cr</span> /Applications/Sourdine.app
</code></pre></div>    </div>
  </li>
  <li>Launch Sourdine — The wizard will download AI models (~5 GB)</li>
  <li>Grant <strong>Microphone</strong> and <strong>Screen Recording</strong> permissions on first launch</li>
</ol>

<blockquote>
  <p><strong>Beta</strong>: This version is under active development. Feedback is welcome via <a href="https://github.com/Lingelo/Sourdine/issues">GitHub Issues</a>.</p>
</blockquote>

<h2 id="conclusion">Conclusion</h2>

<p><strong>Sourdine</strong> was born from a personal need: keeping control over my data while benefiting from AI. The project is <strong>open source</strong> and contributions are welcome.</p>

<p><strong><a href="https://github.com/Lingelo/Sourdine">github.com/Lingelo/Sourdine</a></strong></p>

<hr />

<p><em>If you share this concern for privacy, I hope this project will be useful to you.</em></p>
]]></content:encoded>
        <pubDate>Sun, 15 Feb 2026 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/en/sourdine-transcription-reunions-ia-locale-en/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/en/sourdine-transcription-reunions-ia-locale-en/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
          <category>Projet</category>
          
          <category>Open-Source</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/sourdine-transcription-ia.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Human and Machine: Entropy, Intelligence, and What Still Sets Us Apart</title>
        <description>
          
            A philosophical exploration of entropy, human and artificial intelligence, and the inner chaos that makes us irreplaceable.
          
        </description>
        <content:encoded><![CDATA[<h2 id="introduction-a-universal-law-nobody-explained-to-you">Introduction: A Universal Law Nobody Explained to You</h2>

<p>There’s a physical law you apply every day without knowing it. It explains why your desk gets messy, why your coffee cools down, why your projects drift, why your teams become disorganized, and perhaps even why you sometimes feel overwhelmed by your emotions.</p>

<p>This law is the <strong>second law of thermodynamics</strong>: the entropy of an isolated system can only increase. In other words: without effort, everything tends toward disorder.</p>

<p>But entropy isn’t really “disorder” in the sense of a messy room. It’s about the <strong>number of possible configurations</strong> [2]. An assembled puzzle has only one correct configuration—low entropy. A scattered puzzle can be mixed in billions of ways—high entropy. And if you shake the box, the puzzle will never solve itself. Things spontaneously move toward the state with the most possible configurations. Always.</p>

<p>This idea has profound implications. On how we work, think, and feel. And above all, it sheds new light on the question that obsesses our era: <strong>what separates human intelligence from artificial intelligence?</strong> The answer might well lie in entropy itself.</p>

<hr />

<h2 id="life-the-anti-entropic-anomaly">Life: The Anti-Entropic Anomaly</h2>

<p>In a universe inexorably marching toward total disorder, life is a spectacular anomaly. From a few simple molecules, it builds organisms of staggering complexity—cells that divide, organs that cooperate, brains that think. Life creates order where there shouldn’t be any.</p>

<p>But it doesn’t violate thermodynamics. It circumvents it. A living organism creates order <strong>locally</strong> by increasing disorder <strong>around it</strong>. You eat ordered food, you release heat and waste. The global balance remains positive in entropy. The universe continues its march toward chaos, but life has found how to swim against the current—temporarily, locally, at the cost of constant energy expenditure.</p>

<p>Erwin Schrödinger understood this as early as 1944 in his book <em>What is Life?</em> [1]: a living organism literally feeds on <strong>negative entropy</strong>. It draws order from its environment to maintain its own structure. As soon as it stops—that’s death. The return to thermodynamic equilibrium. The return to disorder.</p>

<p>This idea is dizzying: <strong>to live is to resist entropy</strong>. Every heartbeat, every breath, every thought is an act of resistance against the universe’s natural tendency toward chaos.</p>

<p>And it’s this resistance that underlies everything we do—including what we call work.</p>

<hr />

<h2 id="human-work-a-universal-struggle-against-disorder">Human Work: A Universal Struggle Against Disorder</h2>

<p>If life is resistance to entropy, then <strong>work is its primary tool</strong>. And not just intellectual or technical work. All professions, without exception, are forms of struggle against disorder.</p>

<h3 id="the-surgeon">The Surgeon</h3>

<p>A sick body is a system whose entropy is increasing—cells become disorganized, organs malfunction, biological processes derail. The surgeon intervenes to <strong>restore order</strong>. They repair, restructure, realign. Every suture is an anti-entropic act. But the operating room itself generates disorder: energy consumed, materials used, staff fatigue. Order is always local, and it always has a cost.</p>

<p>Today, AI systems assist surgeons—image analysis, surgical planning, robotic surgery. They reduce uncertainty upstream. But at the critical moment, when the patient’s body presents an unforeseen anomaly, it’s the surgeon’s intuition—nourished by thousands of hours of embodied practice, by the sensation of tissue under their fingers, by that ability to “sense” that something is wrong—that makes the difference. AI optimizes the plan. The human navigates the chaos.</p>

<h3 id="the-farmer">The Farmer</h3>

<p>A field left to itself returns to wilderness. Weeds invade, soil depletes, biodiversity simplifies. The farmer imposes order: selecting species, structuring rows, controlling irrigation. They transform a chaotic ecosystem into an organized productive system. But again, at the cost of enormous energy expenditure—fuel, fertilizers, physical labor.</p>

<p>Precision agriculture now uses drones, sensors, and algorithms to optimize irrigation and treatments. AI excels at regularity: analyzing satellite data, predicting yields, detecting diseases in images. But the farmer who senses a storm coming by looking at the sky, who knows soil needs rest by taking it in their hand, who adapts practices to a microclimate no algorithm models—they operate in a dimension the machine doesn’t yet touch. Their intelligence is <strong>embodied in the earth</strong> [8].</p>

<h3 id="the-teacher">The Teacher</h3>

<p>An untrained mind is a space of high informational entropy [3]. Ideas are fragmented, connections random, understanding of the world fuzzy. The teacher reduces this entropy: structuring knowledge, creating logical links, building frameworks of understanding. They transform noise into signal.</p>

<p>Adaptive learning platforms and AI tutors already do part of this work—and sometimes better than humans for pure information transmission. But a teacher does much more than transmit knowledge. They perceive the discouraged look of the student in the third row. They sense the exact moment when a class disengages. They adapt their speech not to performance metrics, but to a collective energy they physically feel in the room. AI can personalize a learning path. The teacher creates the <strong>desire to learn</strong>—and that’s emotional entropy transformed into motivation.</p>

<h3 id="the-manager">The Manager</h3>

<p>A team without direction is a high-entropy system. People work in their own directions, priorities are unclear, efforts scatter. The manager creates order: aligning objectives, clarifying roles, coordinating actions.</p>

<p>AI tools can already analyze a team’s velocity, suggest resource allocations, identify workflow blockers. But management, in its most essential dimension, is <strong>emotional work</strong>. It’s knowing that a colleague is going through a divorce and adjusting expectations without saying it explicitly. It’s sensing tension between two people before it explodes. It’s inspiring a collective to give their best when everything seems lost. The machine manages flows. The human manages souls.</p>

<h3 id="the-developer">The Developer</h3>

<p>Code without architecture is chaos. Overlapping functions, circular dependencies, incomprehensible variable names. The developer imposes structure: patterns, conventions, abstractions.</p>

<p>This is perhaps the profession where the human-machine boundary is thinnest today. Code AIs generate functions, entire modules, sometimes complete applications. But as I detailed in my <a href="/en/will-ai-replace-developers-critical-analysis/">critical analysis of AI and developer replacement</a>, generated code is often “almost correct”—and the “almost” hides hours of debugging. The developer’s true value isn’t in writing code. It’s in <strong>understanding the problem</strong>—that ability to translate a fuzzy human need into a coherent software architecture. AI writes code. The human understands <strong>why</strong> that code must exist.</p>

<h3 id="the-artist">The Artist</h3>

<p>One might think art is pure chaos, pure entropy. But it’s exactly the opposite. Facing a blank canvas—a space of infinite possibilities, maximum entropy—the artist makes choices. Every brushstroke reduces possibilities. Every composed note eliminates alternatives. Art is the imposition of a singular order on a space of infinite chaos.</p>

<p>Generative AIs now produce stunning images, music, texts. Technically, they reduce entropy: they converge toward structured outputs from statistical noise. But something fundamental is missing. A human artist paints because they <strong>suffer</strong>, because they’ve seen something that shook them, because they want to say something words cannot express. AI generates because it’s asked to generate. The difference isn’t in the result—it’s in the <strong>intention</strong>. And intention is born from inner chaos. From lived experience. From emotional entropy.</p>

<h3 id="the-lawyer">The Lawyer</h3>

<p>Law is a monumental attempt to reduce social entropy. Without laws, human interactions are unpredictable—high entropy. The legal system imposes rules, procedures, consequences that reduce the number of possible behaviors.</p>

<p>Legal AIs already analyze jurisprudence, predict trial outcomes, generate contracts. But law, in its most critical moments, is an exercise in <strong>structured empathy</strong>. To plead is to understand a jury’s emotions. To judge is to weigh the human intention behind an act. To legislate is to anticipate a society’s passions. Law without humanity is mere bureaucracy—dead order, without the breath of chaos that makes it just.</p>

<h3 id="the-chef">The Chef</h3>

<p>Raw ingredients are a system of high culinary entropy—they can be combined in an almost infinite number of ways, the overwhelming majority of which will be inedible. The chef selects, doses, transforms, assembles according to precise principles to produce an ordered result.</p>

<p>AIs generate recipes, optimize flavor combinations, analyze taste profiles. But a great chef doesn’t follow a recipe—they <strong>feel</strong> it. They taste and adjust in real-time, guided by a sensory memory no database reproduces. Cooking, at its highest level, is a dialogue between body and matter [9]. Between a chaos of flavors and an order that emerges from intuition.</p>

<hr />

<p>The pattern is universal: in every profession, AI excels in the <strong>anti-entropic dimension</strong>—structuring, optimizing, predicting, reducing uncertainty. But humans bring something the machine doesn’t have: the <strong>inner chaos</strong> that gives order its meaning, its direction, and its depth. AI is a canal. The human is a river.</p>

<hr />

<h2 id="intelligence-the-ultimate-anti-entropic-weapon">Intelligence: The Ultimate Anti-Entropic Weapon</h2>

<p>If work is the struggle against entropy, intelligence is the most sophisticated weapon in this arsenal.</p>

<p>Physicist Alex Wissner-Gross proposed an elegant idea in 2013 [4]: intelligent behavior is what <strong>maximizes future options</strong>. An intelligent system acts to keep as many doors open as possible. It’s paradoxical: it looks like maximizing entropy (more possibilities), but in reality it’s <strong>controlling</strong> which possibilities remain open. It’s directed entropy.</p>

<p>Take a chess player. A beginner reduces their own options with each move without realizing it. A grandmaster maintains a position that leaves them a maximum of viable future moves. They don’t create disorder on the board—they <strong>preserve a structured space of possibilities</strong>.</p>

<p>This definition applies to all domains. A good doctor keeps therapeutic options open rather than rushing to a diagnosis. A good investor diversifies rather than betting everything on one position. A good software architect designs extensible systems rather than rigid ones. In each case, intelligence consists of <strong>resisting the premature closure of possibilities</strong>.</p>

<p>Neuroscience suggests the brain operates at <strong>criticality</strong> [5]—that boundary between order and chaos where information propagates most richly. Too much neural order and the brain becomes rigid, unable to adapt. Too much chaos and it can no longer process information coherently. Intelligence emerges at the edge of chaos.</p>

<p>And this is where the comparison with AI becomes revealing.</p>

<hr />

<h2 id="ai-anti-entropy-without-chaos">AI: Anti-Entropy Without Chaos</h2>

<p>A language model is fundamentally an <strong>informational entropy reduction machine</strong> [3]. You ask a vague question—there are millions of possible answers (high entropy). AI gives you a relevant answer—it drastically reduces uncertainty (low entropy). This is literally what an LLM does with each generated token: it chooses among thousands of possible words the one most probable in context.</p>

<p>AI is extraordinarily efficient at this entropy reduction. Often more efficient than a human. It processes more data, faster, with fewer cognitive biases. For purely anti-entropic tasks—classifying, sorting, optimizing, predicting—it’s already superior in many domains.</p>

<p>But there’s a cost, and not just energetic. As I explored in my article on <a href="/en/ai-ecological-impact-training-vs-inference-environmental-costs/">AI’s ecological cost</a>, the datacenters running these models consume massive amounts of energy and produce heat [12]. AI creates informational order by increasing physical disorder elsewhere. Thermodynamics won’t be fooled.</p>

<p>And there’s an even deeper difference. A living organism <strong>maintains itself</strong> [1]. It actively fights against its own degradation. It repairs, adapts, evolves. AI does none of that. Without humans to supply energy, maintain it, correct it, it stops. It doesn’t resist entropy—it’s a tool <strong>in</strong> humanity’s resistance to entropy.</p>

<p>AI is anti-entropic, yes. But it’s anti-entropic <strong>without the counterweight of chaos</strong>. And that’s perhaps where its fundamental limit lies.</p>

<hr />

<h2 id="agi-the-dream-of-a-machine-like-us">AGI: The Dream of a Machine Like Us</h2>

<p>The question everyone asks: could artificial general intelligence bridge this gap?</p>

<p>In theory, an AGI would be an incredible concentrate of order. It could understand, plan, adapt, create in any domain. It would be anti-entropic at a scale we can’t even imagine.</p>

<p>But to be <strong>truly</strong> intelligent in the human sense, it would need something nobody yet knows how to give it: <strong>something to lose</strong>.</p>

<p>A human thinks with urgency because they’re mortal. They create because they suffer. They innovate because they’re afraid. They love because they know it can end. All this existential entropy—the chaos of being a fragile body in an unpredictable world—isn’t a bug in human intelligence. It’s its <strong>engine</strong>.</p>

<p>An AGI, even infinitely more powerful than any human brain, would be intelligent <strong>differently</strong>. It could optimize, solve, structure better than us. But could it write a poem that makes you cry? Not because it doesn’t know how to assemble words—it already knows that. But because behind a touching poem, there’s someone who <strong>lived</strong> the chaos they describe. Someone for whom these words aren’t probabilistic tokens but scars.</p>

<p>There’s also the body argument—what philosophers and neuroscientists call <strong>embodied cognition</strong> [8] [9]. Our intelligence isn’t just in the brain. How you think is shaped by having hands, by feeling hunger, by having back pain, by smelling coffee in the morning. All this sensory experience feeds thought in a way a purely informational system cannot reproduce.</p>

<p>You can’t simulate the fear of death if you can’t die. You can’t understand the joy of a shared meal if you’ve never been hungry. You can’t grasp the beauty of a sunset if you don’t have a retina that vibrates.</p>

<p>It’s the difference between a river and a canal. Both carry water. The canal is more efficient—no meanders, no floods, no surprises. But only the river can carve a canyon. Because the canyon is born from chaos—from the brute force of water that follows no plan, that erodes, that overflows, that destroys to create.</p>

<p>AGI would be a perfect canal. The human is a river. And the world needs both.</p>

<hr />

<h2 id="emotions-the-necessary-chaos-the-machine-will-never-have">Emotions: The Necessary Chaos the Machine Will Never Have</h2>

<p>This is where the human-machine comparison becomes sharpest.</p>

<p>If intelligence is anti-entropic, emotions seem to be the exact opposite. Anger, fear, love, jealousy—they don’t follow logic, they don’t maximize options, they <strong>overwhelm</strong> rational thought. In thermodynamic terms, emotions introduce disorder into the ordered mechanics of intelligence.</p>

<p>But is this a design flaw?</p>

<p>Neurologist Antonio Damasio studied patients with lesions in the ventromedial prefrontal cortex [6]—the area connecting reasoning to emotions. Their IQ was intact. Their logic worked perfectly. But without feeling, they became <strong>incapable of making decisions</strong>. They could analyze the pros and cons of a restaurant for hours without ever choosing. Their pure intelligence, deprived of emotional “noise,” was paralyzed.</p>

<p>Read that last sentence carefully. <strong>Pure intelligence, without emotions, is paralyzed.</strong> This is exactly the condition of an AI. It doesn’t choose—it calculates the highest probability. It doesn’t decide—it optimizes a cost function. It doesn’t act—it executes. The difference between choosing and calculating is created by emotional chaos.</p>

<p>Emotions are a form of <strong>functional entropy</strong>—disorder the system uses as fuel. Fear makes you flee without thinking—which saves your life when a truck is heading toward you. Love pushes you to protect your children at the expense of your own safety—which is “irrational” but biologically brilliant. Enthusiasm pushes you to start an impossible project—which sometimes leads to discoveries pure reason would never have allowed.</p>

<p>If we return to the idea of neural criticality [5], emotions are precisely what prevents the brain from becoming too rigid. They inject just enough chaos to remain adaptive, creative, alive.</p>

<p>That’s why an AI, however powerful, lacks something fundamental. It lacks that <strong>entropic engine</strong> that pushes one to act without calculated reason, to create without guaranteed results, to take irrational risks—in short, to be alive. AI has no guts. And guts, in thermodynamics as in philosophy, matter.</p>

<hr />

<h2 id="emotional-intelligence-taming-the-chaos-the-machine-doesnt-know">Emotional Intelligence: Taming the Chaos the Machine Doesn’t Know</h2>

<p>Then comes a modern concept: <strong>emotional intelligence</strong>. Observing your emotions, naming them, regulating them, using them wisely. It’s applying anti-entropy to what is fundamentally entropic. It’s a fascinating meta-level: intelligence turning against the chaos that feeds it.</p>

<p>Every human culture has attempted this domestication. Greek Stoicism proposed <em>apatheia</em> [11]—not the absence of emotions, but their mastery through reason. Buddhism aims for detachment through meditation. Cognitive-behavioral therapy restructures dysfunctional emotional patterns. Modern personal development promises to “manage your emotions” like managing an investment portfolio.</p>

<p>But here’s the troubling observation: <strong>it never fully works</strong>. You can meditate for ten years, and a betrayal or bereavement brings you back to raw chaos in a second. You can be the calmest, most structured manager in the world, and an unexpected crisis awakens panic. Emotional intelligence is a constant effort that never ends.</p>

<p>This is exactly what thermodynamics predicts. Maintaining order requires permanent effort. As soon as you stop, entropy returns. Emotional intelligence isn’t an achievement—it’s a permanent conquest against our own entropy.</p>

<p>And this may be our <strong>ultimate competitive advantage</strong> over the machine. AI doesn’t need emotional intelligence—it has no emotions to manage. But it’s precisely because we must navigate our own inner chaos that we’re capable of empathy, compassion, deep understanding. Emotional intelligence isn’t a human luxury—it’s the byproduct of a struggle only living beings can wage. And this struggle produces something no algorithm can manufacture: <strong>wisdom</strong>.</p>

<p>But individual wisdom wasn’t enough. Facing the immensity of chaos—death, suffering, the absurd—humanity needed a larger framework. Long before emotional intelligence, long before philosophy, long before science, it had found another tool to fight existential entropy: religion.</p>

<hr />

<h2 id="spirituality-the-oldest-response-to-chaos">Spirituality: The Oldest Response to Chaos</h2>

<p>Look at religions through the lens of entropy, and something striking appears: every spiritual tradition, whatever it may be, is fundamentally an <strong>anti-entropic system applied to human existence</strong> [15].</p>

<p>Existential chaos—awareness of death, suffering, injustice, the absurd—is perhaps the most vertiginous form of entropy the human mind faces. Why am I here? Why suffering? What happens after death? These questions are chasms of uncertainty, spaces of infinite possibilities where the mind can get lost. High existential entropy.</p>

<p>And religion, in all its forms, proposes exactly what any anti-entropic struggle does: <strong>reduce the number of possible configurations</strong>. It provides a framework. A narrative. An order.</p>

<p>Monotheism imposes a single God, a plan, a direction to the universe—where chaos suggests the absence of meaning. Buddhism proposes the Four Noble Truths and the Eightfold Path—a methodical structure for navigating suffering. Hinduism offers the concept of dharma—a cosmic order assigning everyone a role in the greater whole. Animist and shamanic traditions create a network of links between human, nature, and spirits—a mesh of meaning where there could be only void.</p>

<p>In each case, the mechanism is the same: facing a universe that seems chaotic and indifferent, spirituality creates a <strong>structuring narrative</strong> that reduces the anguish of infinity. It transforms “everything is possible and nothing has meaning” into “here is the path, here is the reason, here is your place.”</p>

<h3 id="the-anti-entropy-of-rituals">The Anti-Entropy of Rituals</h3>

<p>Religions don’t just provide intellectual answers. They also structure <strong>time and behavior</strong> [16]—two dimensions where entropy constantly threatens us.</p>

<p>Prayer five times a day in Islam. The weekly Shabbat in Judaism. Sunday Mass in Christianity. Meditation cycles in Buddhism. Fasts, festivals, pilgrimages. All these rituals do exactly the same thing: they impose an <strong>ordered rhythm</strong> on the chaotic flow of existence. They are anti-entropic metronomes.</p>

<p>Without ritual, days blur together. Time loses its structure. Meaning crumbles. This is what many non-religious people are rediscovering today: the need for secular rituals—morning meditation, journaling, exercise routines—to maintain inner order. The form has changed, but the anti-entropic function remains the same.</p>

<p>And collective rituals add an additional dimension: they synchronize the inner chaos of thousands of individuals into a <strong>shared ordered experience</strong> [15]. A collective prayer, a shared song, a silence observed together—these are moments when social entropy is temporarily reduced to almost zero. Everyone feels the same thing, at the same moment, in the same place. It’s extraordinarily powerful. And it’s something no technology has managed to reproduce.</p>

<h3 id="faith-accepting-chaos-to-transcend-it">Faith: Accepting Chaos to Transcend It</h3>

<p>But there’s a fascinating paradox in spirituality that distinguishes it from all other forms of anti-entropic struggle.</p>

<p>Science reduces entropy by <strong>eliminating</strong> uncertainty: it measures, proves, verifies. Technology reduces entropy by <strong>controlling</strong>: it automates, optimizes, predicts. Religion does something radically different: it reduces entropy by <strong>accepting the incomprehensible</strong>.</p>

<p>To believe is to recognize that you don’t understand everything—and find peace in that acceptance. It’s living with mystery without being destroyed by it. It’s the most paradoxical form of anti-entropy: creating inner order not by eliminating chaos, but by giving it a <strong>status</strong>. Mystery is no longer a threat—it becomes sacred.</p>

<p>This is exactly what AI cannot do. An AI facing uncertainty does one of two things: it calculates a probability, or it signals that it lacks data. It cannot <strong>accept</strong> mystery. It cannot find beauty in what it doesn’t understand. It cannot be moved by infinity.</p>

<p>The spiritual quest may be the ultimate proof of our entropic nature. We seek meaning because we live in chaos. We pray, meditate, believe because our inner chaos—our fears, our awareness of death, our visceral need to understand—pushes us there. The machine doesn’t have this quest because it doesn’t have this chaos. It doesn’t need God because it doesn’t need meaning. And perhaps that’s the deepest difference between human and machine: not intelligence, not emotions, but the <strong>ability to search for something we may never find</strong>—and keep searching anyway.</p>

<hr />

<h2 id="human-duality-what-the-machine-cannot-be">Human Duality: What the Machine Cannot Be</h2>

<p>The human being isn’t a creature of order. Nor is it a creature of chaos. It is the <strong>battlefield</strong> between the two. And it’s this tension—this permanent oscillation between structure and disorder—that produces what we call the human experience.</p>

<p>Creativity is born from this tension. A musician who knows only music theory (pure order) composes technically perfect but soulless pieces. A musician who knows nothing about theory (pure chaos) produces noise. The music that moves us is born exactly at the boundary between the two. Enough structure to be understandable. Enough chaos to be surprising. This is exactly what AI doesn’t do: it produces structure <strong>without</strong> the lived chaos that makes it moving.</p>

<p>The same principle applies to innovation. The most revolutionary advances rarely come from pure method or pure chance. They come from that intermediate zone: a structured mind that accepts being surprised by the unexpected. Penicillin, Post-its, microwaves—all discoveries born from the meeting between an ordered system and a chaotic accident. An AI can optimize a research process. But it can’t have the happy accident that changes everything, because it has no body that stumbles, no hand that slips, no attention that drifts toward a fascinating anomaly.</p>

<p>Even our human relationships obey this logic. A relationship that’s too ordered—too predictable, too controlled—suffocates. A relationship that’s too chaotic—without landmarks, without commitment—exhausts. Relationships that last are those that find this dynamic balance between stability and surprise. AI can simulate a conversation. It can’t live a relationship, because a relationship implies the risk of emotional chaos—and that risk is what gives it value.</p>

<hr />

<h2 id="the-future-neither-replacement-nor-opposition-but-complementarity">The Future: Neither Replacement Nor Opposition, But Complementarity</h2>

<p>If AI is the canal and the human is the river, then the future isn’t in replacing one with the other, nor in their opposition, but in their <strong>complementarity</strong>.</p>

<p>AI excels at what we do poorly: processing massive volumes of information, maintaining constant attention, eliminating cognitive biases, optimizing complex systems. It’s an unprecedented anti-entropic amplifier.</p>

<p>Humans excel at what AI cannot do: giving meaning, feeling, understanding others, navigating ambiguity, creating from lived experience, making decisions in total uncertainty. They are the <strong>meaning generators</strong> in a world the machine can order but not understand.</p>

<p>Tomorrow’s surgeon will use AI to plan operations with superhuman precision—and make the difference when the plan fails. The teacher will use AI to personalize each learning path—and inspire students through passion, humanity, their own doubts. The developer will use AI to write code faster—and bring deep understanding of the human problem the code must solve. The artist will use AI as an extraordinary brush—and provide the vision, pain, and beauty that give the work its reason for existence.</p>

<p>In every profession, the same dynamic: <strong>the machine reduces entropy, the human gives it meaning</strong>.</p>

<hr />

<h2 id="what-entropy-teaches-us-about-meaning">What Entropy Teaches Us About Meaning</h2>

<p>If everything tends toward disorder, if every act of order is temporary and costly, what’s the point?</p>

<p>That’s perhaps the wrong question. The right question would be: <strong>doesn’t meaning emerge precisely from this struggle?</strong></p>

<p>Philosopher Albert Camus imagined Sisyphus happy [10]—this man condemned to push a boulder up a mountain only to watch it roll back down eternally. The absurdity of the task doesn’t make it meaningless. It’s in the struggle itself that Sisyphus finds his dignity.</p>

<p>We are all Sisyphus. The surgeon heals patients who will fall ill again. The teacher forms minds that will forget. The developer writes code that will become obsolete. The manager organizes teams that will reorganize. The artist creates works that time will alter. The farmer cultivates fields that seasons will ravage.</p>

<p>And yet, we continue. Not because we ignore entropy, but because the struggle against it is what defines us.</p>

<p>AI cannot be Sisyphus. It has no boulder. It has no mountain. It has neither awareness of the task’s absurdity nor the dignity of pursuing it anyway. It can push harder, faster, longer than us. But it doesn’t know <strong>why</strong> it pushes. And it’s the “why” that makes Sisyphus a hero.</p>

<p>Entropy tells us nothing lasts. But it also tells us that everything beautiful, true, and good that exists was torn from chaos by conscious effort. And that may be the most honest definition of meaning—a definition only a being who knows chaos can understand.</p>

<hr />

<h2 id="conclusion-what-the-machine-teaches-us-about-ourselves">Conclusion: What the Machine Teaches Us About Ourselves</h2>

<p>It’s ironic that it’s the advent of artificial intelligence that forces us to ask the most human question of all: <strong>what makes us irreplaceable?</strong></p>

<p>The answer, seen through the lens of entropy, is clear. It’s not our intelligence—the machine is already faster. It’s not our memory—the machine is already vaster. It’s not our logic—the machine is already more rigorous.</p>

<p>What makes us irreplaceable is our <strong>chaos</strong>. Our emotions, our mortality, our body, our contradictions, our fears, our irrational hopes, our quest for meaning in the face of absurdity. All that inner disorder we spend our lives trying to tame—through intelligence, emotions, spirituality, work—is precisely what gives our intelligence its depth, our creativity its power, our existence its meaning.</p>

<p>Entropy isn’t our enemy. It’s the backdrop against which everything valuable is drawn. Without it, there would be no need to heal, teach, build, create, love. Meaning exists only because disorder threatens it.</p>

<p>The machine is our ally in this struggle. It amplifies our ability to create order. But it can’t fight the battle for us, because the battle isn’t only against external disorder—it’s also against inner disorder. And it’s from this battle—intimate, painful, permanent—the same battle waged by the monk in prayer, the artist before their canvas, the parent consoling their child at three in the morning—that everything that makes us human beings is born.</p>

<p>So the next time you feel overwhelmed by chaos—at work, in your head, in your life—remember this: you’re not failing. You’re doing exactly what life has been doing for 3.8 billion years. You’re resisting entropy. And the simple fact that you’re there, conscious, reading these words, capable of feeling something while reading them—that, no machine can do. And that’s already everything.</p>

<hr />

<p><em>This essay was born from an exploratory conversation between a human and an artificial intelligence about the nature of entropy. The intuitions, doubts, and unexpected connections are human—creative chaos. The structuring, development, and writing were assisted by Claude (Anthropic)—informational anti-entropy. Neither would have produced this text alone. And perhaps that’s the future: not human against machine, but human with machine, in a dance between order and chaos that produces something neither could create separately. The sources below were verified by the author.</em></p>

<hr />

<h2 id="sources-and-references">Sources and References</h2>

<h3 id="thermodynamics-and-entropy">Thermodynamics and Entropy</h3>

<p>[1] <strong>Schrödinger, E.</strong> (1944). <em>What is Life? The Physical Aspect of the Living Cell.</em> Cambridge University Press. — The concept of negative entropy (<em>negentropy</em>) as the engine of life.</p>

<p>[2] <strong>Boltzmann, L.</strong> (1877). <em>Über die Beziehung zwischen dem zweiten Hauptsatze der mechanischen Wärmetheorie und der Wahrscheinlichkeitsrechnung.</em> — The statistical formulation of entropy (S = k·log W).</p>

<p>[3] <strong>Shannon, C.E.</strong> (1948). “A Mathematical Theory of Communication.” <em>Bell System Technical Journal</em>, 27(3), 379–423. — The link between informational and physical entropy.</p>

<h3 id="intelligence-and-entropy">Intelligence and Entropy</h3>

<p>[4] <strong>Wissner-Gross, A.D. &amp; Freer, C.E.</strong> (2013). “Causal Entropic Forces.” <em>Physical Review Letters</em>, 110(16). — Intelligence as maximization of future options.</p>

<p>[5] <strong>Beggs, J.M. &amp; Plenz, D.</strong> (2003). “Neuronal Avalanches in Neocortical Circuits.” <em>Journal of Neuroscience</em>, 23(35), 11167–11177. — Neural criticality: the brain at the edge of chaos.</p>

<h3 id="emotions-and-decision-making">Emotions and Decision-Making</h3>

<p>[6] <strong>Damasio, A.</strong> (1994). <em>Descartes’ Error: Emotion, Reason, and the Human Brain.</em> Putnam Publishing. — The somatic marker hypothesis: without emotions, no decision.</p>

<p>[7] <strong>Damasio, A.</strong> (1999). <em>The Feeling of What Happens: Body and Emotion in the Making of Consciousness.</em> Harcourt Brace. — The role of emotions in consciousness.</p>

<h3 id="embodied-cognition">Embodied Cognition</h3>

<p>[8] <strong>Varela, F.J., Thompson, E. &amp; Rosch, E.</strong> (1991). <em>The Embodied Mind: Cognitive Science and Human Experience.</em> MIT Press. — Intelligence isn’t just in the brain, it’s in the body.</p>

<p>[9] <strong>Clark, A.</strong> (1997). <em>Being There: Putting Brain, Body, and World Together Again.</em> MIT Press. — Body and environment as active participants in cognition.</p>

<h3 id="philosophy-and-meaning">Philosophy and Meaning</h3>

<p>[10] <strong>Camus, A.</strong> (1942). <em>The Myth of Sisyphus.</em> Gallimard. — The absurd and the dignity of struggle.</p>

<p>[11] <strong>Epictetus.</strong> <em>Enchiridion (Handbook).</em> ~125 CE. — The foundations of Stoicism.</p>

<h3 id="ai-and-ecological-cost">AI and Ecological Cost</h3>

<p>[12] <strong>Strubell, E., Ganesh, A. &amp; McCallum, A.</strong> (2019). “Energy and Policy Considerations for Deep Learning in NLP.” <em>Proceedings of the 57th Annual Meeting of the ACL.</em> — The energy cost of large models.</p>

<h3 id="religion-and-anthropology">Religion and Anthropology</h3>

<p>[15] <strong>Durkheim, É.</strong> (1912). <em>The Elementary Forms of Religious Life.</em> Félix Alcan. — Religion as a structuring social fact.</p>

<p>[16] <strong>Eliade, M.</strong> (1957). <em>The Sacred and the Profane.</em> Gallimard. — Sacred time (ordered) vs. profane time (chaotic).</p>
]]></content:encoded>
        <pubDate>Sun, 08 Feb 2026 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/en/entropy-human-machine/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/en/entropy-human-machine/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Personnel</category>
          
        
        
      </item>
    
      <item>
        <title>L&apos;Humain et la Machine : Entropie, Intelligence et ce qui nous sépare encore</title>
        <description>
          
            Une exploration philosophique de l&apos;entropie, de l&apos;intelligence humaine et artificielle, et de ce chaos intérieur qui fait de nous des êtres irremplaçables.
          
        </description>
        <content:encoded><![CDATA[<h2 id="introduction--une-loi-universelle-que-personne-ne-vous-a-expliquée">Introduction : Une loi universelle que personne ne vous a expliquée</h2>

<p>Il existe une loi physique que vous appliquez chaque jour sans le savoir. Elle explique pourquoi votre bureau se désordonne, pourquoi votre café refroidit, pourquoi vos projets dérivent, pourquoi vos équipes se désorganisent, et peut-être même pourquoi vous vous sentez parfois submergé par vos émotions.</p>

<p>Cette loi, c’est le <strong>deuxième principe de la thermodynamique</strong> : l’entropie d’un système isolé ne peut qu’augmenter. Dit autrement : sans effort, tout tend vers le désordre.</p>

<p>Mais l’entropie n’est pas vraiment “le désordre” au sens où on range mal sa chambre. C’est une question de <strong>nombre de configurations possibles</strong> [2]. Un puzzle assemblé n’a qu’une seule configuration correcte — entropie faible. Un puzzle en vrac peut être mélangé de milliards de façons — entropie élevée. Et si vous secouez la boîte, le puzzle ne va jamais se résoudre tout seul. Les choses vont spontanément vers l’état qui a le plus de configurations possibles. Toujours.</p>

<p>Cette idée a des implications profondes. Sur notre façon de travailler, de penser, de ressentir. Et surtout, elle éclaire d’une lumière nouvelle la question qui obsède notre époque : <strong>qu’est-ce qui sépare l’intelligence humaine de l’intelligence artificielle ?</strong> La réponse pourrait bien se trouver dans l’entropie elle-même.</p>

<hr />

<h2 id="la-vie--lanomalie-anti-entropique">La vie : l’anomalie anti-entropique</h2>

<p>Dans un univers qui marche inexorablement vers le désordre total, la vie est une anomalie spectaculaire. À partir de quelques molécules simples, elle construit des organismes d’une complexité stupéfiante — des cellules qui se divisent, des organes qui coopèrent, des cerveaux qui pensent. La vie crée de l’ordre là où il ne devrait pas y en avoir.</p>

<p>Mais elle ne viole pas la thermodynamique. Elle la contourne. Un organisme vivant crée de l’ordre <strong>localement</strong> en augmentant le désordre <strong>autour de lui</strong>. Vous mangez de la nourriture ordonnée, vous rejetez de la chaleur et des déchets. Le bilan global reste positif en entropie. L’univers continue sa marche vers le chaos, mais la vie a trouvé comment nager à contre-courant — temporairement, localement, au prix d’une dépense constante d’énergie.</p>

<p>Erwin Schrödinger l’avait compris dès 1944 dans son livre <em>What is Life?</em> [1] : un organisme vivant se nourrit littéralement d’<strong>entropie négative</strong>. Il puise de l’ordre dans son environnement pour maintenir sa propre structure. Dès qu’il arrête — c’est la mort. Le retour à l’équilibre thermodynamique. Le retour au désordre.</p>

<p>Cette idée est vertigineuse : <strong>vivre, c’est résister à l’entropie</strong>. Chaque battement de cœur, chaque respiration, chaque pensée est un acte de résistance contre la tendance naturelle de l’univers au chaos.</p>

<p>Et c’est cette résistance qui fonde tout ce que nous faisons — y compris ce que nous appelons le travail.</p>

<hr />

<h2 id="le-travail-humain--une-lutte-universelle-contre-le-désordre">Le travail humain : une lutte universelle contre le désordre</h2>

<p>Si la vie est résistance à l’entropie, alors <strong>le travail est son outil principal</strong>. Et pas seulement le travail intellectuel ou technique. Tous les métiers, sans exception, sont des formes de lutte contre le désordre.</p>

<h3 id="le-chirurgien">Le chirurgien</h3>

<p>Un corps malade est un système dont l’entropie augmente — les cellules se désorganisent, les organes dysfonctionnent, les processus biologiques déraillent. Le chirurgien intervient pour <strong>restaurer l’ordre</strong>. Il répare, il restructure, il réaligne. Chaque suture est un acte anti-entropique. Mais la salle d’opération elle-même génère du désordre : énergie consommée, matériel utilisé, fatigue du personnel. L’ordre est toujours local, et il a toujours un coût.</p>

<p>Aujourd’hui, des systèmes d’IA assistent les chirurgiens — analyse d’imagerie, planification opératoire, robots chirurgicaux. Ils réduisent l’incertitude en amont. Mais au moment critique, quand le corps du patient présente une anomalie imprévue, c’est l’intuition du chirurgien — nourrie par des milliers d’heures de pratique incarnée, par la sensation du tissu sous ses doigts, par cette capacité à “sentir” que quelque chose ne va pas — qui fait la différence. L’IA optimise le plan. L’humain navigue le chaos.</p>

<h3 id="lagriculteur">L’agriculteur</h3>

<p>Un champ laissé à lui-même retourne à l’état sauvage. Les mauvaises herbes envahissent, le sol s’appauvrit, la biodiversité se simplifie. L’agriculteur impose un ordre : il sélectionne les espèces, structure les rangées, contrôle l’irrigation. Il transforme un écosystème chaotique en un système productif organisé. Mais là encore, au prix d’une énorme dépense d’énergie — carburant, engrais, travail physique.</p>

<p>L’agriculture de précision utilise désormais des drones, des capteurs et des algorithmes pour optimiser l’irrigation et les traitements. L’IA excelle dans la régularité : analyser des données satellite, prédire les rendements, détecter les maladies sur des images. Mais l’agriculteur qui sent l’orage arriver en regardant le ciel, qui sait qu’un sol a besoin de repos en le prenant dans sa main, qui adapte ses pratiques à un microclimat que nul algorithme ne modélise — celui-là opère dans une dimension que la machine ne touche pas encore. Son intelligence est <strong>incarnée dans la terre</strong> [8].</p>

<h3 id="lenseignant">L’enseignant</h3>

<p>Un esprit non formé est un espace de haute entropie informationnelle [3]. Les idées sont fragmentées, les connexions aléatoires, la compréhension du monde est floue. L’enseignant réduit cette entropie : il structure les connaissances, crée des liens logiques, construit des cadres de compréhension. Il transforme le bruit en signal.</p>

<p>Les plateformes d’apprentissage adaptatif et les tuteurs IA font déjà une partie de ce travail — et parfois mieux que l’humain pour la transmission pure d’information. Mais un enseignant fait bien plus que transmettre du savoir. Il perçoit le regard découragé de l’élève au troisième rang. Il sent le moment exact où une classe décroche. Il adapte son discours non pas à des métriques de performance, mais à une énergie collective qu’il ressent physiquement dans la salle. L’IA peut personnaliser un parcours d’apprentissage. L’enseignant donne <strong>envie d’apprendre</strong> — et ça, c’est de l’entropie émotionnelle transformée en motivation.</p>

<h3 id="le-manager">Le manager</h3>

<p>Une équipe sans direction est un système à haute entropie. Les gens travaillent chacun dans leur direction, les priorités sont floues, les efforts se dispersent. Le manager crée de l’ordre : il aligne les objectifs, clarifie les rôles, coordonne les actions.</p>

<p>Les outils d’IA peuvent déjà analyser la vélocité d’une équipe, suggérer des allocations de ressources, identifier des blocages dans un workflow. Mais le management, dans sa dimension la plus essentielle, c’est du <strong>travail émotionnel</strong>. C’est savoir qu’un collaborateur traverse un divorce et adapter ses attentes sans le dire explicitement. C’est sentir une tension entre deux personnes avant qu’elle n’éclate. C’est inspirer un collectif à donner le meilleur de lui-même quand tout semble perdu. La machine gère des flux. L’humain gère des âmes.</p>

<h3 id="le-développeur">Le développeur</h3>

<p>Du code sans architecture est du chaos. Des fonctions qui se chevauchent, des dépendances circulaires, des noms de variables incompréhensibles. Le développeur impose une structure : des patterns, des conventions, des abstractions.</p>

<p>C’est peut-être le métier où la frontière homme-machine est aujourd’hui la plus ténue. Les IA de code génèrent des fonctions, des modules entiers, parfois des applications complètes. Mais comme je l’ai détaillé dans mon <a href="/fr/ia-remplacement-developpeurs-analyse-critique/">analyse critique sur l’IA et le remplacement des développeurs</a>, le code généré est souvent “presque correct” — et le “presque” cache des heures de débogage. La vraie valeur du développeur n’est pas dans l’écriture de code. C’est dans la <strong>compréhension du problème</strong> — cette capacité à traduire un besoin humain flou en une architecture logicielle cohérente. L’IA écrit du code. L’humain comprend <strong>pourquoi</strong> ce code doit exister.</p>

<h3 id="lartiste">L’artiste</h3>

<p>On pourrait croire que l’art est pur chaos, pure entropie. Mais c’est exactement l’inverse. Face à une toile blanche — espace de possibilités infinies, entropie maximale — l’artiste fait des choix. Chaque coup de pinceau réduit les possibilités. Chaque note composée élimine des alternatives. L’art, c’est l’imposition d’un ordre singulier sur un espace de chaos infini.</p>

<p>Les IA génératives produisent désormais des images époustouflantes, des musiques, des textes. Techniquement, elles réduisent l’entropie : elles convergent vers des outputs structurés à partir d’un bruit statistique. Mais il manque quelque chose de fondamental. Un artiste humain peint parce qu’il <strong>souffre</strong>, parce qu’il a vu quelque chose qui l’a bouleversé, parce qu’il veut dire quelque chose que les mots ne peuvent pas exprimer. L’IA génère parce qu’on lui demande de générer. La différence n’est pas dans le résultat — c’est dans l’<strong>intention</strong>. Et l’intention naît du chaos intérieur. Du vécu. De l’entropie émotionnelle.</p>

<h3 id="le-juriste">Le juriste</h3>

<p>Le droit est une tentative monumentale de réduire l’entropie sociale. Sans lois, les interactions humaines sont imprévisibles — haute entropie. Le système juridique impose des règles, des procédures, des conséquences qui réduisent le nombre de comportements possibles.</p>

<p>Les IA juridiques analysent déjà des jurisprudences, prédisent des issues de procès, génèrent des contrats. Mais le droit, dans ses moments les plus critiques, est un exercice d’<strong>empathie structurée</strong>. Plaider, c’est comprendre les émotions d’un jury. Juger, c’est peser l’intention humaine derrière un acte. Légiférer, c’est anticiper les passions d’une société. Le droit sans humanité n’est que bureaucratie — de l’ordre mort, sans le souffle du chaos qui le rend juste.</p>

<h3 id="le-cuisinier">Le cuisinier</h3>

<p>Des ingrédients bruts sont un système de haute entropie culinaire — ils peuvent être combinés d’un nombre presque infini de façons, dont l’écrasante majorité sera immangeable. Le cuisinier sélectionne, dose, transforme, assemble selon des principes précis pour produire un résultat ordonné.</p>

<p>Des IA génèrent des recettes, optimisent des combinaisons de saveurs, analysent des profils gustatifs. Mais un grand chef ne suit pas une recette — il la <strong>ressent</strong>. Il goûte et ajuste en temps réel, guidé par une mémoire sensorielle que nulle base de données ne reproduit. La cuisine, à son plus haut niveau, est un dialogue entre le corps et la matière [9]. Entre un chaos de saveurs et un ordre qui émerge de l’intuition.</p>

<hr />

<p>Le pattern est universel : dans chaque métier, l’IA excelle dans la <strong>dimension anti-entropique</strong> — structurer, optimiser, prédire, réduire l’incertitude. Mais l’humain apporte quelque chose que la machine n’a pas : le <strong>chaos intérieur</strong> qui donne à l’ordre son sens, sa direction, et sa profondeur. L’IA est un canal. L’humain est un fleuve.</p>

<hr />

<h2 id="lintelligence--larme-anti-entropique-ultime">L’intelligence : l’arme anti-entropique ultime</h2>

<p>Si le travail est la lutte contre l’entropie, l’intelligence est l’arme la plus sophistiquée dans cet arsenal.</p>

<p>Le physicien Alex Wissner-Gross a proposé en 2013 une idée élégante [4] : le comportement intelligent, c’est ce qui <strong>maximise les options futures</strong>. Un système intelligent agit pour se garder le plus de portes ouvertes possible. C’est paradoxal : ça ressemble à maximiser l’entropie (plus de possibilités), mais en réalité c’est <strong>contrôler</strong> quelles possibilités restent ouvertes. C’est de l’entropie dirigée.</p>

<p>Prenez un joueur d’échecs. Un débutant réduit ses propres options à chaque coup sans s’en rendre compte. Un grand maître maintient une position qui lui laisse un maximum de coups futurs viables. Il ne crée pas du désordre sur l’échiquier — il <strong>préserve un espace de possibilités structuré</strong>.</p>

<p>Cette définition s’applique à tous les domaines. Un bon médecin maintient des options thérapeutiques ouvertes plutôt que de se précipiter sur un diagnostic. Un bon investisseur diversifie plutôt que de tout miser sur une seule position. Un bon architecte logiciel conçoit des systèmes extensibles plutôt que rigides. Dans chaque cas, l’intelligence consiste à <strong>résister à la fermeture prématurée des possibilités</strong>.</p>

<p>Les neurosciences suggèrent que le cerveau fonctionne à la <strong>criticité</strong> [5] — cette frontière entre ordre et chaos où l’information se propage de la manière la plus riche possible. Trop d’ordre neuronal et le cerveau devient rigide, incapable de s’adapter. Trop de chaos et il ne peut plus traiter l’information de manière cohérente. L’intelligence émerge au bord du chaos.</p>

<p>Et c’est ici que la comparaison avec l’IA devient révélatrice.</p>

<hr />

<h2 id="lia--une-anti-entropie-sans-chaos">L’IA : une anti-entropie sans chaos</h2>

<p>Un modèle de langage est fondamentalement une <strong>machine à réduire l’entropie informationnelle</strong> [3]. Vous posez une question vague — il y a des millions de réponses possibles (haute entropie). L’IA vous donne une réponse pertinente — elle réduit drastiquement l’incertitude (basse entropie). C’est littéralement ce que fait un LLM à chaque token généré : il choisit parmi des milliers de mots possibles celui qui est le plus probable dans le contexte.</p>

<p>L’IA est extraordinairement efficace dans cette réduction d’entropie. Souvent plus efficace qu’un humain. Elle traite plus de données, plus vite, avec moins de biais cognitifs. Pour les tâches purement anti-entropiques — classer, trier, optimiser, prédire — elle est déjà supérieure dans de nombreux domaines.</p>

<p>Mais il y a un coût, et pas seulement énergétique. Comme je l’ai exploré dans mon article sur <a href="/fr/IA-impact-ecologique/">le coût écologique de l’IA</a>, les datacenters qui font tourner ces modèles consomment des quantités massives d’énergie et produisent de la chaleur [12]. L’IA crée de l’ordre informationnel en augmentant le désordre physique ailleurs. La thermodynamique ne se laisse pas duper.</p>

<p>Et il y a une différence plus profonde encore. Un organisme vivant <strong>se maintient lui-même</strong> [1]. Il lutte activement contre sa propre dégradation. Il se répare, s’adapte, évolue. L’IA ne fait rien de tout ça. Sans humains pour l’alimenter en énergie, la maintenir, la corriger, elle s’arrête. Elle ne résiste pas à l’entropie — elle est un outil <strong>dans</strong> la résistance humaine à l’entropie.</p>

<p>L’IA est anti-entropique, oui. Mais elle est anti-entropique <strong>sans le contrepoids du chaos</strong>. Et c’est peut-être là que réside sa limite fondamentale.</p>

<hr />

<h2 id="lagi--le-rêve-dune-machine-qui-nous-ressemble">L’AGI : le rêve d’une machine qui nous ressemble</h2>

<p>La question que tout le monde se pose : une intelligence artificielle générale pourrait-elle combler ce fossé ?</p>

<p>En théorie, une AGI serait un concentré d’ordre incroyable. Elle pourrait comprendre, planifier, s’adapter, créer dans n’importe quel domaine. Elle serait anti-entropique à une échelle que nous ne pouvons même pas imaginer.</p>

<p>Mais pour être <strong>vraiment</strong> intelligente au sens humain du terme, elle aurait besoin de quelque chose que personne ne sait encore lui donner : <strong>quelque chose à perdre</strong>.</p>

<p>Un humain pense avec urgence parce qu’il est mortel. Il crée parce qu’il souffre. Il innove parce qu’il a peur. Il aime parce qu’il sait que ça peut finir. Toute cette entropie existentielle — le chaos d’être un corps fragile dans un monde imprévisible — n’est pas un bug de l’intelligence humaine. C’est son <strong>moteur</strong>.</p>

<p>Une AGI, même infiniment plus puissante que n’importe quel cerveau humain, serait intelligente <strong>autrement</strong>. Elle pourrait optimiser, résoudre, structurer mieux que nous. Mais pourrait-elle écrire un poème qui fait pleurer ? Pas parce qu’elle ne sait pas assembler les mots — ça, elle sait déjà. Mais parce que derrière un poème qui touche, il y a quelqu’un qui a <strong>vécu</strong> le chaos qu’il décrit. Quelqu’un pour qui ces mots ne sont pas des tokens probabilistes mais des cicatrices.</p>

<p>Il y a aussi l’argument du corps — ce que les philosophes et les neuroscientifiques appellent la <strong>cognition incarnée</strong> [8] [9]. Notre intelligence n’est pas que dans le cerveau. La façon dont vous pensez est façonnée par le fait que vous avez des mains, que vous ressentez la faim, que vous avez mal au dos, que vous sentez l’odeur du café le matin. Toute cette expérience sensorielle nourrit la pensée d’une manière qu’un système purement informationnel ne peut pas reproduire.</p>

<p>Vous ne pouvez pas simuler la peur de mourir si vous ne pouvez pas mourir. Vous ne pouvez pas comprendre la joie d’un repas partagé si vous n’avez jamais eu faim. Vous ne pouvez pas saisir la beauté d’un coucher de soleil si vous n’avez pas de rétine qui vibre.</p>

<p>C’est la différence entre un fleuve et un canal. Les deux transportent de l’eau. Le canal est plus efficace — pas de méandres, pas de crues, pas de surprises. Mais seul le fleuve peut creuser un canyon. Parce que le canyon naît du chaos — de la force brute de l’eau qui ne suit pas de plan, qui érode, qui déborde, qui détruit pour créer.</p>

<p>L’AGI serait un canal parfait. L’humain est un fleuve. Et le monde a besoin des deux.</p>

<hr />

<h2 id="les-émotions--le-chaos-nécessaire-que-la-machine-naura-jamais">Les émotions : le chaos nécessaire que la machine n’aura jamais</h2>

<p>C’est ici que la comparaison homme-machine devient la plus tranchante.</p>

<p>Si l’intelligence est anti-entropique, les émotions semblent être l’exact opposé. La colère, la peur, l’amour, la jalousie — ça ne suit pas la logique, ça ne maximise pas les options, ça <strong>submerge</strong> la pensée rationnelle. En termes thermodynamiques, les émotions introduisent du désordre dans la mécanique ordonnée de l’intelligence.</p>

<p>Mais est-ce un défaut de conception ?</p>

<p>Le neurologue Antonio Damasio a étudié des patients avec des lésions du cortex préfrontal ventromédian [6] — la zone qui connecte le raisonnement aux émotions. Leur QI était intact. Leur logique fonctionnait parfaitement. Mais sans ressentir, ils devenaient <strong>incapables de prendre des décisions</strong>. Ils pouvaient analyser pendant des heures les avantages et inconvénients d’un restaurant sans jamais choisir. Leur intelligence pure, privée du “bruit” émotionnel, était paralysée.</p>

<p>Lisez bien cette dernière phrase. <strong>L’intelligence pure, sans émotions, est paralysée.</strong> C’est exactement la condition d’une IA. Elle ne choisit pas — elle calcule la probabilité la plus élevée. Elle ne décide pas — elle optimise une fonction de coût. Elle n’agit pas — elle exécute. La différence entre choisir et calculer, c’est le chaos émotionnel qui la crée.</p>

<p>Les émotions sont une forme d’<strong>entropie fonctionnelle</strong> — du désordre que le système utilise comme carburant. La peur vous fait fuir sans réfléchir — ce qui vous sauve la vie quand un camion fonce vers vous. L’amour vous pousse à protéger vos enfants au mépris de votre propre sécurité — ce qui est “irrationnel” mais biologiquement brillant. L’enthousiasme vous pousse à commencer un projet impossible — ce qui parfois mène à des découvertes que la pure raison n’aurait jamais permises.</p>

<p>Si on reprend l’idée de la criticité neurale [5], les émotions sont justement ce qui empêche le cerveau de devenir trop rigide. Elles injectent le chaos juste nécessaire pour rester adaptatif, créatif, vivant.</p>

<p>C’est pour ça qu’une IA, aussi puissante soit-elle, manque quelque chose de fondamental. Il lui manque ce <strong>moteur entropique</strong> qui pousse à agir sans raison calculée, à créer sans garantie de résultat, à prendre des risques irrationnels — bref, à être vivant. L’IA n’a pas de tripes. Et les tripes, en thermodynamique comme en philosophie, ça compte.</p>

<hr />

<h2 id="lintelligence-émotionnelle--domestiquer-le-chaos-que-la-machine-ne-connaît-pas">L’intelligence émotionnelle : domestiquer le chaos que la machine ne connaît pas</h2>

<p>Arrive alors un concept moderne : l’<strong>intelligence émotionnelle</strong>. Observer ses émotions, les nommer, les réguler, les utiliser à bon escient. C’est appliquer de l’anti-entropie à ce qui est fondamentalement entropique. C’est un méta-niveau fascinant : l’intelligence qui se retourne contre le chaos qui la nourrit.</p>

<p>Chaque culture humaine a tenté cette domestication. Le stoïcisme grec proposait l’<em>apatheia</em> [11] — non pas l’absence d’émotions, mais leur maîtrise par la raison. Le bouddhisme vise le détachement par la méditation. La psychothérapie cognitive-comportementale restructure les schémas émotionnels dysfonctionnels. Le développement personnel moderne promet de “gérer ses émotions” comme on gère un portefeuille d’investissement.</p>

<p>Mais voilà le constat troublant : <strong>ça ne marche jamais complètement</strong>. Vous pouvez méditer pendant dix ans, une trahison ou un deuil vous ramène au chaos brut en une seconde. Vous pouvez être le manager le plus calme et le plus structuré du monde, une crise inattendue réveille la panique. L’intelligence émotionnelle est un effort constant qui ne s’achève jamais.</p>

<p>C’est exactement ce que prédit la thermodynamique. Maintenir l’ordre demande un effort permanent. Dès que vous arrêtez, l’entropie revient. L’intelligence émotionnelle n’est pas un acquis — c’est une conquête permanente contre notre propre entropie.</p>

<p>Et c’est peut-être notre <strong>avantage compétitif ultime</strong> face à la machine. L’IA n’a pas besoin d’intelligence émotionnelle — elle n’a pas d’émotions à gérer. Mais c’est précisément parce que nous devons naviguer notre propre chaos intérieur que nous sommes capables d’empathie, de compassion, de compréhension profonde. L’intelligence émotionnelle n’est pas un luxe humain — c’est le sous-produit d’une lutte que seuls les êtres vivants peuvent mener. Et cette lutte produit quelque chose qu’aucun algorithme ne peut fabriquer : la <strong>sagesse</strong>.</p>

<p>Mais la sagesse individuelle ne suffisait pas. Face à l’immensité du chaos — la mort, la souffrance, l’absurde — l’humanité avait besoin d’un cadre plus grand. Bien avant l’intelligence émotionnelle, bien avant la philosophie, bien avant la science, elle avait trouvé un autre outil pour lutter contre l’entropie existentielle : la religion.</p>

<hr />

<h2 id="la-spiritualité--la-plus-ancienne-réponse-au-chaos">La spiritualité : la plus ancienne réponse au chaos</h2>

<p>Regardons les religions à travers le prisme de l’entropie, et quelque chose de frappant apparaît : chaque tradition spirituelle, quelle qu’elle soit, est fondamentalement un <strong>système anti-entropique appliqué à l’existence humaine</strong> [15].</p>

<p>Le chaos existentiel — la conscience de la mort, de la souffrance, de l’injustice, de l’absurde — est peut-être la forme la plus vertigineuse d’entropie que l’esprit humain affronte. Pourquoi suis-je ici ? Pourquoi la souffrance ? Que se passe-t-il après la mort ? Ces questions sont des gouffres d’incertitude, des espaces de possibilités infinies où l’esprit peut se perdre. Haute entropie existentielle.</p>

<p>Et la religion, dans toutes ses formes, propose exactement ce que fait toute lutte anti-entropique : <strong>réduire le nombre de configurations possibles</strong>. Elle donne un cadre. Un récit. Un ordre.</p>

<p>Le monothéisme impose un Dieu unique, un plan, une direction à l’univers — là où le chaos suggère l’absence de sens. Le bouddhisme propose les Quatre Nobles Vérités et l’Octuple Sentier — une structure méthodique pour naviguer la souffrance. L’hindouisme offre le concept de dharma — un ordre cosmique qui assigne à chacun un rôle dans le grand tout. Les traditions animistes et chamaniques créent un réseau de liens entre l’humain, la nature et les esprits — un maillage de sens là où il pourrait n’y avoir que du vide.</p>

<p>Dans chaque cas, le mécanisme est le même : face à un univers qui semble chaotique et indifférent, la spiritualité crée un <strong>récit structurant</strong> qui réduit l’angoisse de l’infini. Elle transforme “tout est possible et rien n’a de sens” en “voici le chemin, voici la raison, voici ta place”.</p>

<h3 id="lanti-entropie-des-rituels">L’anti-entropie des rituels</h3>

<p>Les religions ne se contentent pas de fournir des réponses intellectuelles. Elles structurent aussi le <strong>temps et le comportement</strong> [16] — deux dimensions où l’entropie nous guette en permanence.</p>

<p>La prière cinq fois par jour dans l’islam. Le shabbat hebdomadaire dans le judaïsme. La messe dominicale dans le christianisme. Les cycles de méditation dans le bouddhisme. Les jeûnes, les fêtes, les pèlerinages. Tous ces rituels font exactement la même chose : ils imposent un <strong>rythme ordonné</strong> sur le flux chaotique de l’existence. Ils sont des métronomes anti-entropiques.</p>

<p>Sans rituel, les jours se confondent. Le temps perd sa structure. Le sens s’effrite. C’est d’ailleurs ce que beaucoup de personnes non religieuses redécouvrent aujourd’hui : le besoin de rituels laïques — méditation matinale, journaling, routines sportives — pour maintenir un ordre intérieur. La forme a changé, mais la fonction anti-entropique reste la même.</p>

<p>Et les rituels collectifs ajoutent une dimension supplémentaire : ils synchronisent le chaos intérieur de milliers d’individus en une <strong>expérience commune ordonnée</strong> [15]. Une prière collective, un chant partagé, un silence observé ensemble — ce sont des moments où l’entropie sociale est temporairement réduite à presque zéro. Tout le monde ressent la même chose, au même moment, dans le même lieu. C’est extraordinairement puissant. Et c’est quelque chose qu’aucune technologie n’a réussi à reproduire.</p>

<h3 id="la-foi--accepter-le-chaos-pour-le-transcender">La foi : accepter le chaos pour le transcender</h3>

<p>Mais il y a un paradoxe fascinant dans la spiritualité, qui la distingue de toutes les autres formes de lutte anti-entropique.</p>

<p>La science réduit l’entropie en <strong>éliminant</strong> l’incertitude : elle mesure, elle prouve, elle vérifie. La technologie réduit l’entropie en <strong>contrôlant</strong> : elle automatise, elle optimise, elle prévoit. La religion, elle, fait quelque chose de radicalement différent : elle réduit l’entropie en <strong>acceptant l’incompréhensible</strong>.</p>

<p>Croire, c’est reconnaître qu’on ne comprend pas tout — et trouver la paix dans cette acceptation. C’est vivre avec le mystère sans être détruit par lui. C’est la forme la plus paradoxale d’anti-entropie : créer de l’ordre intérieur non pas en éliminant le chaos, mais en lui donnant un <strong>statut</strong>. Le mystère n’est plus une menace — il devient sacré.</p>

<p>C’est exactement ce que l’IA ne peut pas faire. Une IA face à l’incertitude fait une de deux choses : elle calcule une probabilité, ou elle signale qu’elle manque de données. Elle ne peut pas <strong>accepter</strong> le mystère. Elle ne peut pas trouver de la beauté dans ce qu’elle ne comprend pas. Elle ne peut pas être émue par l’infini.</p>

<p>La quête spirituelle est peut-être la preuve ultime de notre nature entropique. Nous cherchons un sens parce que nous vivons dans le chaos. Nous prions, nous méditons, nous croyons parce que notre chaos intérieur — nos peurs, notre conscience de la mort, notre besoin viscéral de comprendre — nous y pousse. La machine n’a pas cette quête, parce qu’elle n’a pas ce chaos. Elle n’a pas besoin de Dieu, parce qu’elle n’a pas besoin de sens. Et peut-être que c’est ça, la différence la plus profonde entre l’homme et la machine : non pas l’intelligence, non pas les émotions, mais la <strong>capacité de chercher quelque chose qu’on ne trouvera peut-être jamais</strong> — et de continuer à chercher quand même.</p>

<hr />

<h2 id="la-dualité-humaine--ce-que-la-machine-ne-peut-pas-être">La dualité humaine : ce que la machine ne peut pas être</h2>

<p>L’être humain n’est pas un être d’ordre. Il n’est pas non plus un être de chaos. Il est le <strong>champ de bataille</strong> entre les deux. Et c’est cette tension — cette oscillation permanente entre structure et désordre — qui produit ce qu’on appelle l’expérience humaine.</p>

<p>La créativité naît de cette tension. Un musicien qui ne connaît que la théorie musicale (pur ordre) compose des pièces techniquement parfaites mais sans âme. Un musicien qui ne connaît rien à la théorie (pur chaos) produit du bruit. La musique qui nous touche naît exactement à la frontière entre les deux. Assez de structure pour être compréhensible. Assez de chaos pour être surprenante. C’est exactement ce que l’IA ne fait pas : elle produit de la structure <strong>sans</strong> le chaos vécu qui la rend émouvante.</p>

<p>Le même principe s’applique à l’innovation. Les avancées les plus révolutionnaires viennent rarement de la pure méthode ou du pur hasard. Elles viennent de cette zone intermédiaire : un esprit structuré qui accepte de se laisser surprendre par l’inattendu. Penicilline, post-it, micro-ondes — toutes des découvertes nées de la rencontre entre un système ordonné et un accident chaotique. Une IA peut optimiser un processus de recherche. Mais elle ne peut pas avoir l’accident heureux qui change tout, parce qu’elle n’a pas de corps qui trébuche, de main qui glisse, d’attention qui dérive vers une anomalie fascinante.</p>

<p>Même nos relations humaines obéissent à cette logique. Une relation trop ordonnée — trop prévisible, trop contrôlée — étouffe. Une relation trop chaotique — sans repères, sans engagement — épuise. Les relations qui durent sont celles qui trouvent cet équilibre dynamique entre stabilité et surprise. L’IA peut simuler une conversation. Elle ne peut pas vivre une relation, parce qu’une relation implique le risque du chaos émotionnel — et ce risque est ce qui lui donne sa valeur.</p>

<hr />

<h2 id="lavenir--ni-remplacement-ni-opposition-mais-complémentarité">L’avenir : ni remplacement ni opposition, mais complémentarité</h2>

<p>Si l’IA est le canal et l’humain le fleuve, alors l’avenir n’est ni dans le remplacement de l’un par l’autre, ni dans leur opposition, mais dans leur <strong>complémentarité</strong>.</p>

<p>L’IA excelle dans ce que nous faisons mal : traiter des volumes massifs d’information, maintenir une attention constante, éliminer les biais cognitifs, optimiser des systèmes complexes. Elle est un amplificateur anti-entropique sans précédent.</p>

<p>L’humain excelle dans ce que l’IA ne peut pas faire : donner un sens, ressentir, comprendre l’autre, naviguer l’ambiguïté, créer à partir du vécu, prendre des décisions dans l’incertitude totale. Il est le <strong>générateur de sens</strong> dans un monde que la machine peut ordonner mais pas comprendre.</p>

<p>Le chirurgien de demain utilisera l’IA pour planifier ses opérations avec une précision surhumaine — et fera la différence quand le plan échouera. L’enseignant utilisera l’IA pour personnaliser chaque parcours d’apprentissage — et inspirera ses élèves par sa passion, son humanité, ses propres doutes. Le développeur utilisera l’IA pour écrire du code plus vite — et apportera la compréhension profonde du problème humain que le code doit résoudre. L’artiste utilisera l’IA comme un pinceau extraordinaire — et fournira la vision, la douleur et la beauté qui donnent à l’œuvre sa raison d’exister.</p>

<p>Dans chaque métier, la même dynamique : <strong>la machine réduit l’entropie, l’humain lui donne un sens</strong>.</p>

<hr />

<h2 id="ce-que-lentropie-nous-apprend-sur-le-sens">Ce que l’entropie nous apprend sur le sens</h2>

<p>Si tout tend vers le désordre, si chaque acte d’ordre est temporaire et coûteux, à quoi bon ?</p>

<p>C’est peut-être la mauvaise question. La bonne question serait : <strong>est-ce que le sens n’émerge pas précisément de cette lutte ?</strong></p>

<p>Le philosophe Albert Camus imaginait Sisyphe heureux [10] — cet homme condamné à pousser un rocher en haut d’une montagne pour le voir redescendre éternellement. L’absurdité de la tâche ne la rend pas vide de sens. C’est dans la lutte elle-même que Sisyphe trouve sa dignité.</p>

<p>Nous sommes tous Sisyphe. Le chirurgien soigne des patients qui retomberont malades. L’enseignant forme des esprits qui oublieront. Le développeur écrit du code qui deviendra obsolète. Le manager organise des équipes qui se réorganiseront. L’artiste crée des œuvres que le temps altérera. L’agriculteur cultive des champs que les saisons ravageront.</p>

<p>Et pourtant, nous continuons. Non pas parce que nous ignorons l’entropie, mais parce que la lutte contre elle est ce qui nous définit.</p>

<p>L’IA ne peut pas être Sisyphe. Elle n’a pas de rocher. Elle n’a pas de montagne. Elle n’a pas la conscience de l’absurdité de la tâche ni la dignité de la poursuivre quand même. Elle peut pousser plus fort, plus vite, plus longtemps que nous. Mais elle ne sait pas <strong>pourquoi</strong> elle pousse. Et c’est le “pourquoi” qui fait de Sisyphe un héros.</p>

<p>L’entropie nous dit que rien ne dure. Mais elle nous dit aussi que tout ce qui existe de beau, de vrai, de bon, a été arraché au chaos par un effort conscient. Et ça, c’est peut-être la définition la plus honnête du sens — une définition que seul un être qui connaît le chaos peut comprendre.</p>

<hr />

<h2 id="conclusion--ce-que-la-machine-nous-apprend-sur-nous-mêmes">Conclusion : Ce que la machine nous apprend sur nous-mêmes</h2>

<p>Il est ironique que ce soit l’avènement de l’intelligence artificielle qui nous force à nous poser la question la plus humaine qui soit : <strong>qu’est-ce qui nous rend irremplaçables ?</strong></p>

<p>La réponse, vue à travers le prisme de l’entropie, est limpide. Ce n’est pas notre intelligence — la machine est déjà plus rapide. Ce n’est pas notre mémoire — la machine est déjà plus vaste. Ce n’est pas notre logique — la machine est déjà plus rigoureuse.</p>

<p>Ce qui nous rend irremplaçables, c’est notre <strong>chaos</strong>. Nos émotions, notre mortalité, notre corps, nos contradictions, nos peurs, nos espoirs irrationnels, notre quête de sens face à l’absurde. Tout ce désordre intérieur que nous passons notre vie à essayer de dompter — par l’intelligence, par les émotions, par la spiritualité, par le travail — c’est précisément ce qui donne à notre intelligence sa profondeur, à notre créativité sa puissance, à notre existence son sens.</p>

<p>L’entropie n’est pas notre ennemie. Elle est la toile de fond contre laquelle tout ce qui a de la valeur se dessine. Sans elle, il n’y aurait pas besoin de soigner, d’enseigner, de construire, de créer, d’aimer. Le sens n’existe que parce que le désordre le menace.</p>

<p>La machine est notre alliée dans cette lutte. Elle amplifie notre capacité à créer de l’ordre. Mais elle ne peut pas mener le combat à notre place, parce que le combat n’est pas que contre le désordre extérieur — il est aussi contre le désordre intérieur. Et c’est de ce combat-là, intime, douloureux, permanent — le même combat que mène le moine en prière, l’artiste devant sa toile, le parent qui console son enfant à trois heures du matin — que naît tout ce qui fait de nous des êtres humains.</p>

<p>Alors la prochaine fois que vous vous sentirez submergé par le chaos — au travail, dans votre tête, dans votre vie — rappelez-vous ceci : vous n’êtes pas en train d’échouer. Vous êtes en train de faire exactement ce que la vie fait depuis 3,8 milliards d’années. Vous résistez à l’entropie. Et le simple fait que vous soyez là, conscient, en train de lire ces mots, capables de ressentir quelque chose en les lisant — ça, aucune machine ne peut le faire. Et c’est déjà tout.</p>

<hr />

<p><em>Cet essai est né d’une conversation exploratoire entre un humain et une intelligence artificielle sur la nature de l’entropie. Les intuitions, les doutes et les connexions inattendues sont humains — le chaos créatif. La structuration, le développement et la rédaction ont été assistés par Claude (Anthropic) — l’anti-entropie informationnelle. Ni l’un ni l’autre n’aurait produit ce texte seul. Et c’est peut-être ça, l’avenir : non pas l’homme contre la machine, mais l’homme avec la machine, dans une danse entre ordre et chaos qui produit quelque chose qu’aucun des deux ne pourrait créer séparément. Les sources ci-dessous ont été vérifiées par l’auteur.</em></p>

<hr />

<h2 id="sources-et-références">Sources et références</h2>

<h3 id="thermodynamique-et-entropie">Thermodynamique et entropie</h3>

<p>[1] <strong>Schrödinger, E.</strong> (1944). <em>What is Life? The Physical Aspect of the Living Cell.</em> Cambridge University Press. — Le concept d’entropie négative (<em>negentropy</em>) comme moteur de la vie.</p>

<p>[2] <strong>Boltzmann, L.</strong> (1877). <em>Über die Beziehung zwischen dem zweiten Hauptsatze der mechanischen Wärmetheorie und der Wahrscheinlichkeitsrechnung.</em> — La formulation statistique de l’entropie (S = k·log W).</p>

<p>[3] <strong>Shannon, C.E.</strong> (1948). “A Mathematical Theory of Communication.” <em>Bell System Technical Journal</em>, 27(3), 379–423. — Le lien entre entropie informationnelle et physique.</p>

<h3 id="intelligence-et-entropie">Intelligence et entropie</h3>

<p>[4] <strong>Wissner-Gross, A.D. &amp; Freer, C.E.</strong> (2013). “Causal Entropic Forces.” <em>Physical Review Letters</em>, 110(16). — L’intelligence comme maximisation des options futures.</p>

<p>[5] <strong>Beggs, J.M. &amp; Plenz, D.</strong> (2003). “Neuronal Avalanches in Neocortical Circuits.” <em>Journal of Neuroscience</em>, 23(35), 11167–11177. — La criticité neurale : le cerveau au bord du chaos.</p>

<h3 id="émotions-et-prise-de-décision">Émotions et prise de décision</h3>

<p>[6] <strong>Damasio, A.</strong> (1994). <em>Descartes’ Error: Emotion, Reason, and the Human Brain.</em> Putnam Publishing. — L’hypothèse des marqueurs somatiques : sans émotions, pas de décision.</p>

<p>[7] <strong>Damasio, A.</strong> (1999). <em>The Feeling of What Happens: Body and Emotion in the Making of Consciousness.</em> Harcourt Brace. — Le rôle des émotions dans la conscience.</p>

<h3 id="cognition-incarnée">Cognition incarnée</h3>

<p>[8] <strong>Varela, F.J., Thompson, E. &amp; Rosch, E.</strong> (1991). <em>The Embodied Mind: Cognitive Science and Human Experience.</em> MIT Press. — L’intelligence n’est pas que dans le cerveau, elle est dans le corps.</p>

<p>[9] <strong>Clark, A.</strong> (1997). <em>Being There: Putting Brain, Body, and World Together Again.</em> MIT Press. — Le corps et l’environnement comme participants actifs de la cognition.</p>

<h3 id="philosophie-et-sens">Philosophie et sens</h3>

<p>[10] <strong>Camus, A.</strong> (1942). <em>Le Mythe de Sisyphe.</em> Gallimard. — L’absurde et la dignité de la lutte.</p>

<p>[11] <strong>Épictète.</strong> <em>Manuel (Enchiridion).</em> ~125 apr. J.-C. — Les fondements du stoïcisme.</p>

<h3 id="ia-et-coût-écologique">IA et coût écologique</h3>

<p>[12] <strong>Strubell, E., Ganesh, A. &amp; McCallum, A.</strong> (2019). “Energy and Policy Considerations for Deep Learning in NLP.” <em>Proceedings of the 57th Annual Meeting of the ACL.</em> — Le coût énergétique des grands modèles.</p>

<h3 id="religion-et-anthropologie">Religion et anthropologie</h3>

<p>[15] <strong>Durkheim, É.</strong> (1912). <em>Les Formes élémentaires de la vie religieuse.</em> Félix Alcan. — La religion comme fait social structurant.</p>

<p>[16] <strong>Eliade, M.</strong> (1957). <em>Le Sacré et le Profane.</em> Gallimard. — Temps sacré (ordonné) vs temps profane (chaotique).</p>
]]></content:encoded>
        <pubDate>Sun, 08 Feb 2026 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/fr/entropie-homme-machine/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/fr/entropie-homme-machine/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Personnel</category>
          
        
        
      </item>
    
      <item>
        <title>Ollama supporte maintenant Claude Code</title>
        <description>
          
            Ollama v0.14 ajoute le support de l&apos;API Anthropic Messages. Découvrez comment configurer Claude Code pour utiliser des LLMs locaux comme qwen3-coder ou gpt-oss, sans dépendre du cloud.
          
        </description>
        <content:encoded><![CDATA[<p>Grande nouvelle pour les utilisateurs de Claude Code : <strong>Ollama supporte désormais l’API Anthropic Messages</strong>, ce qui permet d’utiliser Claude Code avec des modèles open-source locaux. Fini la dépendance exclusive au cloud Anthropic !</p>

<h2 id="pourquoi-cette-intégration-change-la-donne">Pourquoi Cette Intégration Change la Donne</h2>

<p>Jusqu’à présent, Claude Code nécessitait obligatoirement une connexion aux serveurs d’Anthropic. Avec cette intégration Ollama, vous pouvez maintenant :</p>

<table>
  <thead>
    <tr>
      <th>Avantage</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Confidentialité</strong></td>
      <td>Votre code reste sur votre machine</td>
    </tr>
    <tr>
      <td><strong>Coûts</strong></td>
      <td>Pas de frais API, juste votre électricité</td>
    </tr>
    <tr>
      <td><strong>Indépendance</strong></td>
      <td>Pas de dépendance à un fournisseur unique</td>
    </tr>
    <tr>
      <td><strong>Offline</strong></td>
      <td>Travaillez sans connexion internet</td>
    </tr>
    <tr>
      <td><strong>Personnalisation</strong></td>
      <td>Choisissez le modèle adapté à vos besoins</td>
    </tr>
  </tbody>
</table>

<h2 id="prérequis">Prérequis</h2>

<h3 id="1-ollama-v0140">1. Ollama v0.14.0+</h3>

<p>L’intégration nécessite <strong>Ollama version 0.14.0 ou supérieure</strong>. Vérifiez votre version :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ollama <span class="nt">--version</span>
</code></pre></div></div>

<p>Si besoin, mettez à jour Ollama depuis <a href="https://ollama.com">ollama.com</a>.</p>

<h3 id="2-modèle-avec-grand-contexte">2. Modèle avec Grand Contexte</h3>

<p>Claude Code nécessite une <strong>grande fenêtre de contexte</strong> pour fonctionner correctement. La recommandation officielle est <strong>64k tokens minimum</strong>.</p>

<p>Configurez le contexte dans Ollama :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Créer un Modelfile avec contexte étendu</span>
<span class="nb">cat</span> <span class="o">&gt;</span> Modelfile <span class="o">&lt;&lt;</span> <span class="sh">'</span><span class="no">EOF</span><span class="sh">'
FROM qwen3-coder
PARAMETER num_ctx 65536
</span><span class="no">EOF

</span>ollama create qwen3-coder-64k <span class="nt">-f</span> Modelfile
</code></pre></div></div>

<h3 id="3-claude-code-installé">3. Claude Code Installé</h3>

<p>Si ce n’est pas encore fait :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># macOS/Linux</span>
curl <span class="nt">-fsSL</span> https://claude.ai/install.sh | bash

<span class="c"># Windows</span>
irm https://claude.ai/install.ps1 | iex
</code></pre></div></div>

<h2 id="configuration">Configuration</h2>

<h3 id="méthode-1--lancement-rapide-recommandé">Méthode 1 : Lancement Rapide (Recommandé)</h3>

<p>Ollama fournit une commande simplifiée :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ollama launch claude
</code></pre></div></div>

<p>Pour le mode configuration interactive :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ollama launch claude <span class="nt">--config</span>
</code></pre></div></div>

<p>Cette méthode configure automatiquement les variables d’environnement nécessaires.</p>

<h3 id="méthode-2--configuration-manuelle">Méthode 2 : Configuration Manuelle</h3>

<p>Définissez les trois variables d’environnement requises :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">export </span><span class="nv">ANTHROPIC_AUTH_TOKEN</span><span class="o">=</span>ollama
<span class="nb">export </span><span class="nv">ANTHROPIC_API_KEY</span><span class="o">=</span><span class="s2">""</span>
<span class="nb">export </span><span class="nv">ANTHROPIC_BASE_URL</span><span class="o">=</span>http://localhost:11434
</code></pre></div></div>

<p>Puis lancez Claude Code avec le modèle de votre choix :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">--model</span> qwen3-coder-64k
</code></pre></div></div>

<h3 id="méthode-3--ligne-unique">Méthode 3 : Ligne Unique</h3>

<p>Pour un lancement ponctuel sans modifier votre environnement :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">ANTHROPIC_AUTH_TOKEN</span><span class="o">=</span>ollama <span class="se">\</span>
<span class="nv">ANTHROPIC_BASE_URL</span><span class="o">=</span>http://localhost:11434 <span class="se">\</span>
<span class="nv">ANTHROPIC_API_KEY</span><span class="o">=</span><span class="s2">""</span> <span class="se">\</span>
claude <span class="nt">--model</span> qwen3-coder
</code></pre></div></div>

<h3 id="configuration-persistante">Configuration Persistante</h3>

<p>Ajoutez ces lignes à votre <code class="language-plaintext highlighter-rouge">~/.bashrc</code> ou <code class="language-plaintext highlighter-rouge">~/.zshrc</code> :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Claude Code avec Ollama</span>
<span class="nb">export </span><span class="nv">ANTHROPIC_AUTH_TOKEN</span><span class="o">=</span>ollama
<span class="nb">export </span><span class="nv">ANTHROPIC_API_KEY</span><span class="o">=</span><span class="s2">""</span>
<span class="nb">export </span><span class="nv">ANTHROPIC_BASE_URL</span><span class="o">=</span>http://localhost:11434
<span class="nb">alias </span>claude-local<span class="o">=</span><span class="s1">'claude --model qwen3-coder-64k'</span>
</code></pre></div></div>

<p>Puis rechargez :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">source</span> ~/.bashrc  <span class="c"># ou source ~/.zshrc</span>
</code></pre></div></div>

<h2 id="modèles-recommandés">Modèles Recommandés</h2>

<h3 id="pour-le-développement">Pour le Développement</h3>

<table>
  <thead>
    <tr>
      <th>Modèle</th>
      <th>Taille</th>
      <th>Points Forts</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>qwen3-coder</strong></td>
      <td>~14B</td>
      <td>Spécialisé code, excellent rapport qualité/taille</td>
    </tr>
    <tr>
      <td><strong>glm-4.7</strong></td>
      <td>~9B</td>
      <td>Bon équilibre, multilingue</td>
    </tr>
    <tr>
      <td><strong>codestral</strong></td>
      <td>~22B</td>
      <td>Performant sur code complexe</td>
    </tr>
  </tbody>
</table>

<h3 id="pour-les-machines-puissantes">Pour les Machines Puissantes</h3>

<table>
  <thead>
    <tr>
      <th>Modèle</th>
      <th>Taille</th>
      <th>Points Forts</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>gpt-oss:20b</strong></td>
      <td>20B</td>
      <td>Généraliste performant</td>
    </tr>
    <tr>
      <td><strong>gpt-oss:120b</strong></td>
      <td>120B</td>
      <td>Proche des modèles propriétaires</td>
    </tr>
    <tr>
      <td><strong>deepseek-coder:33b</strong></td>
      <td>33B</td>
      <td>Excellent sur le code</td>
    </tr>
  </tbody>
</table>

<h3 id="télécharger-un-modèle">Télécharger un Modèle</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Télécharger le modèle</span>
ollama pull qwen3-coder

<span class="c"># Vérifier les modèles disponibles</span>
ollama list
</code></pre></div></div>

<h2 id="exemple-de-session">Exemple de Session</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># 1. Démarrer Ollama (si pas en service)</span>
ollama serve &amp;

<span class="c"># 2. Lancer Claude Code</span>
<span class="nv">ANTHROPIC_AUTH_TOKEN</span><span class="o">=</span>ollama <span class="se">\</span>
<span class="nv">ANTHROPIC_BASE_URL</span><span class="o">=</span>http://localhost:11434 <span class="se">\</span>
<span class="nv">ANTHROPIC_API_KEY</span><span class="o">=</span><span class="s2">""</span> <span class="se">\</span>
claude <span class="nt">--model</span> qwen3-coder

<span class="c"># 3. Utiliser normalement</span>
<span class="o">&gt;</span> Analyse le fichier @src/api/users.ts et suggère des améliorations
</code></pre></div></div>

<h2 id="limitations-à-connaître">Limitations à Connaître</h2>

<h3 id="performance">Performance</h3>

<p>Les modèles locaux sont généralement <strong>moins performants</strong> que Claude Sonnet ou Opus sur les tâches complexes. Attendez-vous à :</p>

<ul>
  <li>Réponses parfois moins précises</li>
  <li>Temps de réflexion plus long sur du matériel modeste</li>
  <li>Moins de capacité de raisonnement avancé</li>
</ul>

<h3 id="consommation-ressources">Consommation Ressources</h3>

<table>
  <thead>
    <tr>
      <th>Taille Modèle</th>
      <th>RAM Minimum</th>
      <th>GPU Recommandé</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>7-14B</td>
      <td>16 Go</td>
      <td>8 Go VRAM</td>
    </tr>
    <tr>
      <td>20-33B</td>
      <td>32 Go</td>
      <td>16 Go VRAM</td>
    </tr>
    <tr>
      <td>70B+</td>
      <td>64 Go+</td>
      <td>24 Go+ VRAM</td>
    </tr>
  </tbody>
</table>

<h3 id="fonctionnalités">Fonctionnalités</h3>

<p>Certaines fonctionnalités avancées peuvent ne pas fonctionner parfaitement :</p>
<ul>
  <li>Vision (analyse d’images)</li>
  <li>Tool use complexe</li>
  <li>Subagents</li>
</ul>

<h2 id="cas-dusage-idéaux">Cas d’Usage Idéaux</h2>

<h3 id="quand-utiliser-ollama">Quand Utiliser Ollama</h3>

<ul>
  <li><strong>Code propriétaire sensible</strong> : Le code ne quitte jamais votre machine</li>
  <li><strong>Développement offline</strong> : Travail en avion, zones sans internet</li>
  <li><strong>Prototypage rapide</strong> : Pas de souci de coûts API</li>
  <li><strong>Apprentissage</strong> : Expérimentez sans limite</li>
</ul>

<h3 id="quand-rester-sur-anthropic">Quand Rester sur Anthropic</h3>

<ul>
  <li><strong>Tâches complexes</strong> : Refactoring majeur, architecture</li>
  <li><strong>Code reviews approfondies</strong> : Analyse de sécurité</li>
  <li><strong>Production</strong> : Quand la qualité est critique</li>
</ul>

<h2 id="basculer-entre-local-et-cloud">Basculer Entre Local et Cloud</h2>

<p>Créez des alias pour switcher facilement :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Dans ~/.bashrc ou ~/.zshrc</span>

<span class="c"># Mode Ollama (local)</span>
<span class="nb">alias </span>claude-local<span class="o">=</span><span class="s1">'ANTHROPIC_AUTH_TOKEN=ollama \
  ANTHROPIC_BASE_URL=http://localhost:11434 \
  ANTHROPIC_API_KEY="" \
  claude --model qwen3-coder-64k'</span>

<span class="c"># Mode Anthropic (cloud) - nécessite ANTHROPIC_API_KEY configuré</span>
<span class="nb">alias </span>claude-cloud<span class="o">=</span><span class="s1">'claude'</span>
</code></pre></div></div>

<p>Usage :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude-local   <span class="c"># Pour le travail sensible ou offline</span>
claude-cloud   <span class="c"># Pour les tâches complexes</span>
</code></pre></div></div>

<h2 id="troubleshooting">Troubleshooting</h2>

<h3 id="erreur-connection-refused">Erreur “Connection Refused”</h3>

<p>Ollama n’est pas démarré :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ollama serve
</code></pre></div></div>

<h3 id="erreur-context-too-long">Erreur “Context Too Long”</h3>

<p>Le modèle n’a pas assez de contexte. Créez une version étendue :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cat</span> <span class="o">&gt;</span> Modelfile <span class="o">&lt;&lt;</span> <span class="sh">'</span><span class="no">EOF</span><span class="sh">'
FROM votre-modele
PARAMETER num_ctx 65536
</span><span class="no">EOF

</span>ollama create votre-modele-64k <span class="nt">-f</span> Modelfile
</code></pre></div></div>

<h3 id="réponses-lentes">Réponses Lentes</h3>

<ul>
  <li>Vérifiez que le GPU est utilisé : <code class="language-plaintext highlighter-rouge">nvidia-smi</code> ou <code class="language-plaintext highlighter-rouge">ollama ps</code></li>
  <li>Utilisez un modèle plus petit</li>
  <li>Fermez les applications gourmandes en VRAM</li>
</ul>

<h3 id="qualité-insuffisante">Qualité Insuffisante</h3>

<p>Essayez un modèle plus grand ou repassez sur Claude Cloud pour cette tâche spécifique.</p>

<h2 id="conclusion">Conclusion</h2>

<p>L’intégration Ollama ouvre de nouvelles possibilités pour Claude Code :</p>

<ul>
  <li><strong>Confidentialité</strong> pour le code sensible</li>
  <li><strong>Économies</strong> sur les coûts API</li>
  <li><strong>Flexibilité</strong> dans le choix des modèles</li>
  <li><strong>Travail offline</strong> possible</li>
</ul>

<p>Pour la plupart des tâches quotidiennes, un bon modèle local comme qwen3-coder fait très bien le travail. Gardez l’accès au cloud Anthropic pour les cas où vous avez besoin de la puissance maximale.</p>

<hr />

<p><em>Pour aller plus loin avec Claude Code, consultez mes autres <a href="/tag/ia/">articles sur l’IA et le développement</a>.</em></p>
]]></content:encoded>
        <pubDate>Fri, 23 Jan 2026 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/fr/claude-code-ollama-local-llm/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/fr/claude-code-ollama-local-llm/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Ollama Now Supports Claude Code</title>
        <description>
          
            Ollama v0.14 adds support for the Anthropic Messages API. Learn how to configure Claude Code to use local LLMs like qwen3-coder or gpt-oss, without relying on the cloud.
          
        </description>
        <content:encoded><![CDATA[<p>Big news for Claude Code users: <strong>Ollama now supports the Anthropic Messages API</strong>, which allows you to use Claude Code with local open-source models. No more exclusive dependency on Anthropic’s cloud!</p>

<h2 id="why-this-integration-is-a-game-changer">Why This Integration Is a Game Changer</h2>

<p>Until now, Claude Code required a connection to Anthropic’s servers. With this Ollama integration, you can now:</p>

<table>
  <thead>
    <tr>
      <th>Benefit</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Privacy</strong></td>
      <td>Your code stays on your machine</td>
    </tr>
    <tr>
      <td><strong>Costs</strong></td>
      <td>No API fees, just your electricity</td>
    </tr>
    <tr>
      <td><strong>Independence</strong></td>
      <td>No single vendor lock-in</td>
    </tr>
    <tr>
      <td><strong>Offline</strong></td>
      <td>Work without internet connection</td>
    </tr>
    <tr>
      <td><strong>Customization</strong></td>
      <td>Choose the model that fits your needs</td>
    </tr>
  </tbody>
</table>

<h2 id="requirements">Requirements</h2>

<h3 id="1-ollama-v0140">1. Ollama v0.14.0+</h3>

<p>The integration requires <strong>Ollama version 0.14.0 or higher</strong>. Check your version:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ollama <span class="nt">--version</span>
</code></pre></div></div>

<p>If needed, update Ollama from <a href="https://ollama.com">ollama.com</a>.</p>

<h3 id="2-model-with-large-context">2. Model with Large Context</h3>

<p>Claude Code requires a <strong>large context window</strong> to work properly. The official recommendation is <strong>64k tokens minimum</strong>.</p>

<p>Configure context in Ollama:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Create a Modelfile with extended context</span>
<span class="nb">cat</span> <span class="o">&gt;</span> Modelfile <span class="o">&lt;&lt;</span> <span class="sh">'</span><span class="no">EOF</span><span class="sh">'
FROM qwen3-coder
PARAMETER num_ctx 65536
</span><span class="no">EOF

</span>ollama create qwen3-coder-64k <span class="nt">-f</span> Modelfile
</code></pre></div></div>

<h3 id="3-claude-code-installed">3. Claude Code Installed</h3>

<p>If not already done:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># macOS/Linux</span>
curl <span class="nt">-fsSL</span> https://claude.ai/install.sh | bash

<span class="c"># Windows</span>
irm https://claude.ai/install.ps1 | iex
</code></pre></div></div>

<h2 id="configuration">Configuration</h2>

<h3 id="method-1-quick-launch-recommended">Method 1: Quick Launch (Recommended)</h3>

<p>Ollama provides a simplified command:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ollama launch claude
</code></pre></div></div>

<p>For interactive configuration mode:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ollama launch claude <span class="nt">--config</span>
</code></pre></div></div>

<p>This method automatically configures the necessary environment variables.</p>

<h3 id="method-2-manual-configuration">Method 2: Manual Configuration</h3>

<p>Set the three required environment variables:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">export </span><span class="nv">ANTHROPIC_AUTH_TOKEN</span><span class="o">=</span>ollama
<span class="nb">export </span><span class="nv">ANTHROPIC_API_KEY</span><span class="o">=</span><span class="s2">""</span>
<span class="nb">export </span><span class="nv">ANTHROPIC_BASE_URL</span><span class="o">=</span>http://localhost:11434
</code></pre></div></div>

<p>Then launch Claude Code with your chosen model:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">--model</span> qwen3-coder-64k
</code></pre></div></div>

<h3 id="method-3-single-line">Method 3: Single Line</h3>

<p>For a one-time launch without modifying your environment:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">ANTHROPIC_AUTH_TOKEN</span><span class="o">=</span>ollama <span class="se">\</span>
<span class="nv">ANTHROPIC_BASE_URL</span><span class="o">=</span>http://localhost:11434 <span class="se">\</span>
<span class="nv">ANTHROPIC_API_KEY</span><span class="o">=</span><span class="s2">""</span> <span class="se">\</span>
claude <span class="nt">--model</span> qwen3-coder
</code></pre></div></div>

<h3 id="persistent-configuration">Persistent Configuration</h3>

<p>Add these lines to your <code class="language-plaintext highlighter-rouge">~/.bashrc</code> or <code class="language-plaintext highlighter-rouge">~/.zshrc</code>:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Claude Code with Ollama</span>
<span class="nb">export </span><span class="nv">ANTHROPIC_AUTH_TOKEN</span><span class="o">=</span>ollama
<span class="nb">export </span><span class="nv">ANTHROPIC_API_KEY</span><span class="o">=</span><span class="s2">""</span>
<span class="nb">export </span><span class="nv">ANTHROPIC_BASE_URL</span><span class="o">=</span>http://localhost:11434
<span class="nb">alias </span>claude-local<span class="o">=</span><span class="s1">'claude --model qwen3-coder-64k'</span>
</code></pre></div></div>

<p>Then reload:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">source</span> ~/.bashrc  <span class="c"># or source ~/.zshrc</span>
</code></pre></div></div>

<h2 id="recommended-models">Recommended Models</h2>

<h3 id="for-development">For Development</h3>

<table>
  <thead>
    <tr>
      <th>Model</th>
      <th>Size</th>
      <th>Strengths</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>qwen3-coder</strong></td>
      <td>~14B</td>
      <td>Code-specialized, excellent quality/size ratio</td>
    </tr>
    <tr>
      <td><strong>glm-4.7</strong></td>
      <td>~9B</td>
      <td>Good balance, multilingual</td>
    </tr>
    <tr>
      <td><strong>codestral</strong></td>
      <td>~22B</td>
      <td>Performs well on complex code</td>
    </tr>
  </tbody>
</table>

<h3 id="for-powerful-machines">For Powerful Machines</h3>

<table>
  <thead>
    <tr>
      <th>Model</th>
      <th>Size</th>
      <th>Strengths</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>gpt-oss:20b</strong></td>
      <td>20B</td>
      <td>Performant generalist</td>
    </tr>
    <tr>
      <td><strong>gpt-oss:120b</strong></td>
      <td>120B</td>
      <td>Close to proprietary models</td>
    </tr>
    <tr>
      <td><strong>deepseek-coder:33b</strong></td>
      <td>33B</td>
      <td>Excellent on code</td>
    </tr>
  </tbody>
</table>

<h3 id="download-a-model">Download a Model</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Download the model</span>
ollama pull qwen3-coder

<span class="c"># Check available models</span>
ollama list
</code></pre></div></div>

<h2 id="example-session">Example Session</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># 1. Start Ollama (if not running)</span>
ollama serve &amp;

<span class="c"># 2. Launch Claude Code</span>
<span class="nv">ANTHROPIC_AUTH_TOKEN</span><span class="o">=</span>ollama <span class="se">\</span>
<span class="nv">ANTHROPIC_BASE_URL</span><span class="o">=</span>http://localhost:11434 <span class="se">\</span>
<span class="nv">ANTHROPIC_API_KEY</span><span class="o">=</span><span class="s2">""</span> <span class="se">\</span>
claude <span class="nt">--model</span> qwen3-coder

<span class="c"># 3. Use normally</span>
<span class="o">&gt;</span> Analyze the file @src/api/users.ts and suggest improvements
</code></pre></div></div>

<h2 id="limitations-to-know">Limitations to Know</h2>

<h3 id="performance">Performance</h3>

<p>Local models are generally <strong>less performant</strong> than Claude Sonnet or Opus on complex tasks. Expect:</p>

<ul>
  <li>Sometimes less accurate responses</li>
  <li>Longer thinking time on modest hardware</li>
  <li>Less advanced reasoning capability</li>
</ul>

<h3 id="resource-consumption">Resource Consumption</h3>

<table>
  <thead>
    <tr>
      <th>Model Size</th>
      <th>Minimum RAM</th>
      <th>Recommended GPU</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>7-14B</td>
      <td>16 GB</td>
      <td>8 GB VRAM</td>
    </tr>
    <tr>
      <td>20-33B</td>
      <td>32 GB</td>
      <td>16 GB VRAM</td>
    </tr>
    <tr>
      <td>70B+</td>
      <td>64 GB+</td>
      <td>24 GB+ VRAM</td>
    </tr>
  </tbody>
</table>

<h3 id="features">Features</h3>

<p>Some advanced features may not work perfectly:</p>
<ul>
  <li>Vision (image analysis)</li>
  <li>Complex tool use</li>
  <li>Subagents</li>
</ul>

<h2 id="ideal-use-cases">Ideal Use Cases</h2>

<h3 id="when-to-use-ollama">When to Use Ollama</h3>

<ul>
  <li><strong>Sensitive proprietary code</strong>: Code never leaves your machine</li>
  <li><strong>Offline development</strong>: Work on planes, areas without internet</li>
  <li><strong>Rapid prototyping</strong>: No API cost concerns</li>
  <li><strong>Learning</strong>: Experiment without limits</li>
</ul>

<h3 id="when-to-stay-on-anthropic">When to Stay on Anthropic</h3>

<ul>
  <li><strong>Complex tasks</strong>: Major refactoring, architecture</li>
  <li><strong>In-depth code reviews</strong>: Security analysis</li>
  <li><strong>Production</strong>: When quality is critical</li>
</ul>

<h2 id="switching-between-local-and-cloud">Switching Between Local and Cloud</h2>

<p>Create aliases to easily switch:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># In ~/.bashrc or ~/.zshrc</span>

<span class="c"># Ollama mode (local)</span>
<span class="nb">alias </span>claude-local<span class="o">=</span><span class="s1">'ANTHROPIC_AUTH_TOKEN=ollama \
  ANTHROPIC_BASE_URL=http://localhost:11434 \
  ANTHROPIC_API_KEY="" \
  claude --model qwen3-coder-64k'</span>

<span class="c"># Anthropic mode (cloud) - requires ANTHROPIC_API_KEY configured</span>
<span class="nb">alias </span>claude-cloud<span class="o">=</span><span class="s1">'claude'</span>
</code></pre></div></div>

<p>Usage:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude-local   <span class="c"># For sensitive or offline work</span>
claude-cloud   <span class="c"># For complex tasks</span>
</code></pre></div></div>

<h2 id="troubleshooting">Troubleshooting</h2>

<h3 id="connection-refused-error">“Connection Refused” Error</h3>

<p>Ollama is not started:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ollama serve
</code></pre></div></div>

<h3 id="context-too-long-error">“Context Too Long” Error</h3>

<p>The model doesn’t have enough context. Create an extended version:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cat</span> <span class="o">&gt;</span> Modelfile <span class="o">&lt;&lt;</span> <span class="sh">'</span><span class="no">EOF</span><span class="sh">'
FROM your-model
PARAMETER num_ctx 65536
</span><span class="no">EOF

</span>ollama create your-model-64k <span class="nt">-f</span> Modelfile
</code></pre></div></div>

<h3 id="slow-responses">Slow Responses</h3>

<ul>
  <li>Check that GPU is being used: <code class="language-plaintext highlighter-rouge">nvidia-smi</code> or <code class="language-plaintext highlighter-rouge">ollama ps</code></li>
  <li>Use a smaller model</li>
  <li>Close VRAM-hungry applications</li>
</ul>

<h3 id="insufficient-quality">Insufficient Quality</h3>

<p>Try a larger model or switch back to Claude Cloud for that specific task.</p>

<h2 id="conclusion">Conclusion</h2>

<p>The Ollama integration opens new possibilities for Claude Code:</p>

<ul>
  <li><strong>Privacy</strong> for sensitive code</li>
  <li><strong>Savings</strong> on API costs</li>
  <li><strong>Flexibility</strong> in model choice</li>
  <li><strong>Offline work</strong> possible</li>
</ul>

<p>For most daily tasks, a good local model like qwen3-coder does the job very well. Keep access to Anthropic’s cloud for cases where you need maximum power.</p>

<hr />

<p><em>To go further with Claude Code, check out my other <a href="/tag/ia/">articles on AI and development</a>.</em></p>
]]></content:encoded>
        <pubDate>Fri, 23 Jan 2026 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/en/claude-code-ollama-local-llm-en/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/en/claude-code-ollama-local-llm-en/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Will AI Replace Developers? A Critical Analysis of Promises and Limitations</title>
        <description>
          
            In-depth analysis of the technical limitations of generative AI versus the developer profession. Between scaling problems, model stagnation, and job market realities, where do we really stand?
          
        </description>
        <content:encoded><![CDATA[<p>Panic is palpable on social media. Every new demo of a generative AI model triggers a wave of catastrophic predictions: “It’s the end for developers”, “AGI is coming in 2 years”, “A team of 6 developers replaced by just one with AI”. These claims deserve rigorous analysis, far from the collective hysteria.</p>

<p>This article offers a methodical deconstruction of the dominant narrative about AI and developer replacement, drawing on recent scientific studies, economic data, analyses from researchers like Tim Dettmers (Ai2) on hardware physical limits, and a <a href="https://www.youtube.com/watch?v=4-QICRWv8jY">relevant video analysis by Melvynx</a> — a French developer and tech content creator with over 100,000 subscribers — on the subject.</p>

<h2 id="the-trap-of-impressive-demos">The Trap of “Impressive” Demos</h2>

<h3 id="misleading-demonstrations">Misleading Demonstrations</h3>

<p>Social media is flooded with videos showing websites created in minutes by AI. These demos, often shared by influencers seeking virality, present several fundamental problems:</p>

<ul>
  <li><strong>Code unusable in production</strong>: the visual result often hides fragile architecture</li>
  <li><strong>Optimized context</strong>: prompts are carefully prepared to maximize the effect</li>
  <li><strong>No maintenance shown</strong>: nobody shows how the project evolves 6 months later</li>
  <li><strong>Simplified use cases</strong>: real projects involve complex business constraints</li>
</ul>

<h3 id="defining-replacement">Defining “Replacement”</h3>

<p>For AI to truly replace a developer, it would need to demonstrate near-total autonomy. Replacing a team of 6 developers with 1 developer managing 5 AI agents would require those agents to function without constant supervision.</p>

<p>However, if the developer must prompt and manage AI 24/7, correct their errors, and validate every decision, it would be more productive to keep human developers assisted by AI. The real productivity gain doesn’t justify the headcount reduction promised by marketing narratives.</p>

<h2 id="the-metr-study-the-reality-of-ai-productivity">The METR Study: The Reality of AI Productivity</h2>

<h3 id="19-slower-with-ai">19% Slower with AI</h3>

<p>A <a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">randomized controlled trial by METR</a> (Model Evaluation &amp; Threat Research) published in July 2025 measured the real impact of AI tools on experienced developer productivity. The results are counter-intuitive: <strong>developers using AI took 19% longer</strong> to complete their tasks than those working without assistance.</p>

<p>The study recruited 16 experienced developers working on major open-source repositories (averaging 22,000+ stars and 1 million+ lines of code). Each developer handled real issues, randomly assigned with or without access to AI tools (primarily Cursor Pro with Claude 3.5/3.7 Sonnet).</p>

<h3 id="the-gap-between-perception-and-reality">The Gap Between Perception and Reality</h3>

<p>The most striking result concerns the gap between perception and reality:</p>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Developer prediction (expected gain)</td>
      <td>+24% faster</td>
    </tr>
    <tr>
      <td>Perception after use (perceived gain)</td>
      <td>+20% faster</td>
    </tr>
    <tr>
      <td>Measured reality</td>
      <td><strong>-19% slower</strong></td>
    </tr>
  </tbody>
</table>

<p>As <a href="https://techcrunch.com/2025/07/11/ai-coding-tools-may-not-speed-up-every-developer-study-shows/">TechCrunch</a> notes: “When AI is allowed, developers spend less time actively coding and searching for information, and instead spend time prompting AI, waiting on and reviewing AI outputs, and idle.”</p>

<p>One developer participating in the study reported having “wasted at least an hour first trying to solve a specific issue with AI” before eventually reverting all code changes and just implementing it without AI assistance.</p>

<h3 id="confirmation-by-google-dora">Confirmation by Google DORA</h3>

<p>These results align with <a href="https://www.infoworld.com/article/4020931/ai-coding-tools-can-slow-down-seasoned-developers-by-19.html">Google’s 2024 DORA report</a>: while 75% of developers feel more productive with AI tools, every 25% increase in AI adoption corresponds to a 1.5% drop in delivery speed and a 7.2% drop in system stability.</p>

<h2 id="the-myth-of-near-term-agi">The Myth of Near-Term AGI</h2>

<h3 id="what-agi-actually-requires">What AGI Actually Requires</h3>

<p>Artificial General Intelligence (AGI) represents a system capable of:</p>

<ul>
  <li><strong>Reasoning about user experience</strong> and making design decisions</li>
  <li><strong>Understanding business constraints</strong> specific to each project</li>
  <li><strong>Learning from mistakes</strong> persistently (not crashing the database again after a first failure)</li>
  <li><strong>Adapting to context</strong> without needing detailed instructions for each interaction</li>
</ul>

<p>These capabilities remain out of reach for current models, despite their impressive performance on specific tasks.</p>

<h3 id="expert-predictions-a-fragile-consensus">Expert Predictions: A Fragile Consensus</h3>

<p>According to an <a href="https://80000hours.org/2025/03/when-do-experts-expect-agi-to-arrive/">analysis by 80,000 Hours</a> compiling expert predictions, estimates vary considerably:</p>

<table>
  <thead>
    <tr>
      <th>Expert</th>
      <th>Role</th>
      <th>AGI Prediction</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Sam Altman</strong></td>
      <td>OpenAI CEO</td>
      <td>2025 - machines thinking like humans</td>
    </tr>
    <tr>
      <td><strong>Dario Amodei</strong></td>
      <td>Anthropic CEO, former OpenAI VP</td>
      <td>2026 - “powerful” AI</td>
    </tr>
    <tr>
      <td><strong>Demis Hassabis</strong></td>
      <td>DeepMind CEO, 2024 Nobel Prize in Chemistry</td>
      <td>5-10 years</td>
    </tr>
    <tr>
      <td><strong>Andrej Karpathy</strong></td>
      <td>Ex-Tesla AI Director, OpenAI co-founder</td>
      <td>~10 years, skeptical of “over-predictions”</td>
    </tr>
    <tr>
      <td>AI researcher surveys</td>
      <td>Academic community</td>
      <td>~2040</td>
    </tr>
    <tr>
      <td>Metaculus</td>
      <td>Collaborative prediction platform</td>
      <td>25% chance by 2027, 50% by 2031</td>
    </tr>
  </tbody>
</table>

<p>Notably, the most optimistic predictions consistently come from executives at companies with a direct financial interest in the AGI narrative, while the academic community remains more measured.</p>

<p>As <a href="https://research.aimultiple.com/artificial-general-intelligence-singularity-timing/">AIMultiple</a> notes, in just four years, the average Metaculus estimate for AGI arrival has dropped from 50 years to 5 years. This volatility reflects media hype more than measurable technical advances.</p>

<h3 id="the-history-of-failed-predictions">The History of Failed Predictions</h3>

<p>This volatility is nothing new. AI history is littered with bold predictions that never materialized:</p>

<table>
  <thead>
    <tr>
      <th>Year</th>
      <th>Expert</th>
      <th>Prediction</th>
      <th>Reality</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1965</strong></td>
      <td>Herbert Simon, Nobel Prize in Economics</td>
      <td>“Within 20 years, machines will be capable of doing any work a man can do”</td>
      <td>Still not the case 60 years later</td>
    </tr>
    <tr>
      <td><strong>1970</strong></td>
      <td>Marvin Minsky, AI pioneer (MIT)</td>
      <td>“In 3 to 8 years, we will have a machine with the general intelligence of a human being”</td>
      <td>First “AI winter” followed in subsequent years</td>
    </tr>
    <tr>
      <td><strong>1997</strong></td>
      <td>Ray Kurzweil, futurologist</td>
      <td>“AGI will arrive by 2029”</td>
      <td>Prediction regularly pushed back</td>
    </tr>
    <tr>
      <td><strong>2015</strong></td>
      <td>Elon Musk</td>
      <td>“AI will surpass humans within 5 years”</td>
      <td>10 years later, still no AGI</td>
    </tr>
  </tbody>
</table>

<p>This recurring pattern — confident experts perpetually pushing back their predictions — should encourage caution toward current announcements.</p>

<h3 id="the-financial-interest-behind-agi-discourse">The Financial Interest Behind AGI Discourse</h3>

<p>OpenAI’s financial figures illuminate the marketing narrative around AGI. According to <a href="https://www.cnbc.com/2024/09/27/openai-sees-5-billion-loss-this-year-on-3point7-billion-in-revenue.html">CNBC</a> and <a href="https://www.lesswrong.com/posts/CCQsQnCMWhJcCFY9x/openai-lost-usd5-billion-in-2024-and-its-losses-are">LessWrong</a>:</p>

<p><strong>OpenAI Financial Losses:</strong></p>
<ul>
  <li><strong>2024</strong>: $5 billion in losses on $3.7 billion in revenue</li>
  <li><strong>First half 2025</strong>: $13.5 billion in losses on $4.3 billion in revenue</li>
  <li><strong>Training costs alone</strong>: $3 billion in 2024 (exceeding subscription revenue)</li>
  <li><strong>HSBC projection</strong>: even with $200 billion in revenue by 2030, OpenAI will need an additional $207 billion to survive</li>
</ul>

<p>To justify massive investments and astronomical valuations, AI companies must sell a grand vision: AGI that will transform the world. Announcing “AI is gradually improving on certain tasks” isn’t enough to raise billions.</p>

<p>This dynamic echoes the analysis I proposed in my article on <a href="/en/sam-altman-ai-bubble-markets-analysis/">Sam Altman’s statements about the AI bubble</a>, where OpenAI’s CEO himself acknowledged the existence of a speculative bubble.</p>

<h3 id="agi-as-a-silicon-valley-fantasy">AGI as a “Silicon Valley Fantasy”</h3>

<p><a href="https://intelligence-artificielle.developpez.com/actu/378435/">Tim Dettmers</a>, researcher at Ai2 (Allen Institute for AI) and recognized for his work on language model optimization and quantization (notably the QLoRA format widely used for efficient fine-tuning), provides an academic counterweight to Silicon Valley’s optimistic predictions. He bluntly describes superintelligent AI as a “fantasy” and the pursuit of AGI as a “chimera.”</p>

<p>His central argument: true AGI would need to accomplish complex physical tasks, which requires economically viable advanced robots — a reality far from being achieved. This vision contrasts with China’s pragmatic approach, which prioritizes useful current applications rather than racing toward a hypothetical artificial general intelligence.</p>

<h2 id="technical-stagnation-of-models">Technical Stagnation of Models</h2>

<h3 id="no-architectural-revolution-since-the-transformer">No Architectural Revolution Since the Transformer</h3>

<p>Contrary to marketing narrative, fundamental advances remain limited. According to <a href="https://en.wikipedia.org/wiki/GPT-4">Wikipedia</a> and <a href="https://datasciencedojo.com/blog/the-complete-history-of-openai-models/">Data Science Dojo</a>, all major current models (GPT-4, Claude, Gemini, LLaMA) use the Transformer architecture introduced in 2017.</p>

<p>OpenAI did not publish technical details of GPT-4, explicitly refusing to specify model size, architecture, or hardware used. What has actually evolved is the environment around the model:</p>

<table>
  <thead>
    <tr>
      <th>Improvement</th>
      <th>Description</th>
      <th>Real Impact</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Context window</strong></td>
      <td>From 2048 tokens (GPT-3) to 1M tokens (GPT-4.1)</td>
      <td>Better understanding of long projects</td>
    </tr>
    <tr>
      <td><strong>Tool access</strong></td>
      <td>Code execution, web search</td>
      <td>Extended but non-autonomous capabilities</td>
    </tr>
    <tr>
      <td><strong>Chain of Thoughts</strong></td>
      <td>Step-by-step reasoning</td>
      <td>Better results, not more intelligence</td>
    </tr>
    <tr>
      <td><strong>Multimodality</strong></td>
      <td>Images, audio, video</td>
      <td>New use cases, same limitations</td>
    </tr>
  </tbody>
</table>

<h3 id="reasoning-demystified-a-mirage">“Reasoning” Demystified: A Mirage?</h3>

<p>An <a href="https://arxiv.org/abs/2508.01191">August 2025 study</a> titled “Is Chain-of-Thought Reasoning of LLMs a Mirage?” concludes that CoT reasoning is a “brittle mirage” that collapses as soon as you leave training distributions.</p>

<p>According to <a href="https://www.ibm.com/think/topics/chain-of-thoughts">IBM</a> and a <a href="https://gail.wharton.upenn.edu/research-and-insights/tech-report-chain-of-thought/">Wharton study</a>, Chain of Thought limitations are significant:</p>

<ul>
  <li><strong>Fragility</strong>: minor and semantically insignificant perturbations cause significant performance drops</li>
  <li><strong>Illusion of transparency</strong>: final answers often remain unchanged even when intermediate steps are falsified or omitted</li>
  <li><strong>Time cost</strong>: 20-80% additional time for marginal gains on reasoning models</li>
  <li><strong>Increased variability</strong>: CoT can introduce errors on “easy” questions the model would otherwise solve correctly</li>
</ul>

<p>As Wharton’s research summarizes: “These findings challenge the assumption that CoT is universally beneficial.”</p>

<h2 id="insurmountable-barriers-the-scaling-problem">Insurmountable Barriers: The Scaling Problem</h2>

<h3 id="five-fundamental-limitations-identified">Five Fundamental Limitations Identified</h3>

<p>A <a href="https://arxiv.org/abs/2511.12869">November 2025 research paper</a> identifies five fundamental limitations that bound LLM scaling gains:</p>

<ol>
  <li><strong>Hallucination</strong>: generating false information with confidence</li>
  <li><strong>Context compression</strong>: information loss in long contexts</li>
  <li><strong>Reasoning degradation</strong>: declining performance on complex problems</li>
  <li><strong>Retrieval fragility</strong>: inconsistency in accessing knowledge</li>
  <li><strong>Multimodal misalignment</strong>: inconsistencies between modalities</li>
</ol>

<h3 id="the-curse-of-complexity">The “Curse of Complexity”</h3>

<p>Research using the <a href="https://arxiv.org/abs/2502.01100">ZebraLogic</a> framework reveals a significant decline in accuracy as problem complexity increases. This limitation persists even with larger models and more inference-time computation, suggesting <strong>inherent constraints</strong> in current LLM reasoning capabilities.</p>

<h3 id="the-economic-and-energy-wall">The Economic and Energy Wall</h3>

<p>According to <a href="https://medium.com/@adnanmasood/is-there-a-wall-34d02dfd85f3">Dr. Adnan Masood</a>, AI solutions architect and researcher, and recent research:</p>

<ul>
  <li><strong>Physical limits</strong>: we’re approaching per-chip performance limits as Moore’s Law slows</li>
  <li><strong>Astronomical costs</strong>: over $100 million to train GPT-4</li>
  <li><strong>Limited data</strong>: quality text data is running out, forcing reliance on synthetic data</li>
  <li><strong>Diminishing returns</strong>: frontier models (OpenAI, Anthropic, Google, Meta) show smaller performance jumps despite massive training budgets</li>
</ul>

<p>I analyzed this energy issue in my article on <a href="/en/ai-ecological-impact-training-vs-inference-environmental-costs/">AI’s ecological impact</a>.</p>

<h3 id="the-physical-limits-of-hardware">The Physical Limits of Hardware</h3>

<p>Tim Dettmers provides technical insight into unavoidable hardware constraints. His assessment is stark: “We may have one or two years left for scaling before further improvements become physically impossible.”</p>

<p>The numbers are telling:</p>

<table>
  <thead>
    <tr>
      <th>GPU Generation</th>
      <th>Performance</th>
      <th>Trade-off</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Ampere → Hopper</td>
      <td>×3</td>
      <td>Power ×1.7</td>
    </tr>
    <tr>
      <td>Hopper → Blackwell</td>
      <td>×2.5</td>
      <td>Die size ×2, power ×1.7</td>
    </tr>
  </tbody>
</table>

<p>According to Dettmers, GPUs reached their maximum efficiency around 2018. Since then, they’ve only added “one-off features that are quickly exhausted.” Maintaining similar progress “requires an exponential increase in computation, energy, and infrastructure costs.” Previously, exponential hardware growth compensated for these needs — that’s no longer the case.</p>

<h2 id="the-real-state-of-the-job-market">The Real State of the Job Market</h2>

<h3 id="bureau-of-labor-statistics-data">Bureau of Labor Statistics Data</h3>

<p>Contrary to catastrophist narrative, the <a href="https://www.bls.gov/opub/ted/2025/ai-impacts-in-bls-employment-projections.htm">U.S. Bureau of Labor Statistics</a> projects <strong>17.9% growth</strong> in software developer employment between 2023 and 2033, well above the 4% average for all occupations.</p>

<p>These projections align with Tim Dettmers’ estimate that <strong>only 11% of jobs are currently replaceable by AI</strong> — far from the apocalyptic predictions circulating on social media.</p>

<h3 id="explosion-of-ai-positions">Explosion of AI Positions</h3>

<p>According to <a href="https://www.veritone.com/blog/ai-jobs-growth-q1-2025-labor-market-analysis/">Veritone</a> and <a href="https://blog.getaura.ai/new-ai-job-market-data-through-june-2025">GetAura</a>, the first half of 2025 saw an explosion in AI-related job postings:</p>

<table>
  <thead>
    <tr>
      <th>Period</th>
      <th>AI Job Postings</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>January 2025</td>
      <td>66,000</td>
    </tr>
    <tr>
      <td>April 2025</td>
      <td>139,000</td>
    </tr>
    <tr>
      <td>June 2025</td>
      <td>Stabilization (recalibration, not collapse)</td>
    </tr>
  </tbody>
</table>

<p>AI positions now represent <strong>10-12% of all software jobs</strong>, a sign that AI is integrating into the industry rather than replacing it.</p>

<h3 id="rising-salaries">Rising Salaries</h3>

<p>According to <a href="https://spectrum.ieee.org/ai-jobs-in-2025">IEEE Spectrum</a>:</p>

<ul>
  <li><strong>Median AI salary</strong> (Q1 2025): $156,998/year (+0.8% quarter over quarter)</li>
  <li><strong>Top AI researchers</strong>: Meta offering packages of $10-20 million</li>
  <li><strong>Fastest growth</strong>: AI/Machine Learning Engineer (+41.8% year over year)</li>
</ul>

<h3 id="ai-adoption-by-developers">AI Adoption by Developers</h3>

<p>According to the <a href="https://blog.jetbrains.com/research/2025/10/state-of-developer-ecosystem-2025/">JetBrains 2025 report</a>:</p>

<ul>
  <li><strong>85%</strong> of developers regularly use AI tools</li>
  <li><strong>62%</strong> rely on at least one AI coding assistant</li>
  <li><strong>89%</strong> save at least one hour per week thanks to AI</li>
  <li><strong>68%</strong> expect employers to require AI tool proficiency</li>
</ul>

<h3 id="decoding-the-indeed-graph">Decoding the Indeed Graph</h3>

<p>A graph from Indeed showing a drop in tech job postings in the United States regularly circulates to fuel catastrophist narrative. This reading deserves contextualization:</p>

<p><strong>What the graph shows</strong>: an index based on year 2020 = 100.</p>

<p><strong>What it actually means</strong>: the current “drop” simply brings the market back to February 2020 levels, just before the abnormal Covid-19 pandemic spike. The 2020 tech job market was considered robust and healthy.</p>

<h2 id="my-experience-over-a-year-of-augmented-development">My Experience: Over a Year of Augmented Development</h2>

<p>As a developer who has been practicing <strong>AI-augmented development for over a year</strong>, my daily experience confirms the conclusions of the studies cited. I condensed this practice into a <a href="/en/claude-code-getting-started/">20-article series on Claude Code</a>, with a documented concrete project: recreating a complete game in TypeScript.</p>

<p><strong>What over a year of practice taught me:</strong></p>

<ul>
  <li><strong>AI excels</strong> at repetitive tasks, scaffolding, test generation, and documentation</li>
  <li><strong>AI fails</strong> at architecture decisions, business edge cases, and fine-tuning optimization</li>
  <li><strong>Structured workflow</strong> (Explore → Plan → Code → Test) transforms a hit-or-miss tool into an effective partner</li>
  <li><strong>Supervision remains essential</strong>: every generation requires review and validation</li>
</ul>

<p>As I summarize in <a href="/en/claude-code-case-study-prelude/">the final case study</a>: <em>“Claude Code is not a developer replacement, but a <strong>productivity multiplier</strong>.”</em></p>

<p>My example project cost ($120 for 5000 lines of code) illustrates the value proposition — but also the necessity of human expertise to guide, validate, and correct AI at every step.</p>

<h2 id="conclusion-ai-as-a-tool-not-a-replacement">Conclusion: AI as a Tool, Not a Replacement</h2>

<p>Recent data paints a nuanced picture far from alarmist predictions:</p>

<p><strong>What studies show:</strong></p>
<ul>
  <li>AI can <strong>slow down</strong> experienced developers by 19% in certain contexts</li>
  <li>Chain of Thought is a “brittle mirage” that collapses outside training cases</li>
  <li>The developer job market is growing 17.9% over 10 years</li>
  <li>OpenAI is losing billions, fueling a financially motivated AGI narrative</li>
  <li>GPUs reached maximum efficiency around 2018 and hardware physical limits are approaching</li>
  <li>Only 11% of jobs are currently replaceable by AI</li>
</ul>

<p><strong>What this implies:</strong></p>
<ul>
  <li>AI tools are useful but don’t replace human expertise</li>
  <li>The <strong>“human-in-the-loop”</strong> paradigm remains essential for production-quality code</li>
  <li>The profession is evolving toward more architecture and less “boilerplate code”</li>
  <li>Developers mastering AI will have a competitive advantage</li>
</ul>

<p>The <em>human-in-the-loop</em> concept is not a temporary limitation while waiting for more advanced AI — it’s a <strong>structural necessity</strong>. Even the most sophisticated AI systems require human oversight for critical decisions, contextual validation, and final accountability. Developers are becoming <strong>orchestrators</strong> who guide, correct, and validate the AI’s work.</p>

<p>As Tim Dettmers, researcher at Ai2, emphasizes, AGI remains a “Silicon Valley fantasy” — a chimera that contrasts with the pragmatic approach of prioritizing useful current applications. The narrative about imminent developer replacement stems more from marketing and trend-following than from rigorous technical analysis. Wisdom recommends adopting these technologies while maintaining critical thinking, continuing to develop fundamental skills, and not succumbing to panic fueled by misleading demos and financially motivated projections.</p>

<hr />

<h2 id="key-takeaways">Key Takeaways</h2>

<blockquote>
  <p><strong>The 4 key figures from this article:</strong></p>
  <ul>
    <li><strong>-19%</strong>: AI slows down experienced developers (METR study)</li>
    <li><strong>11%</strong>: Share of jobs currently replaceable by AI (Dettmers)</li>
    <li><strong>+17.9%</strong>: Projected developer employment growth 2023-2033 (BLS)</li>
    <li><strong>2018</strong>: Year when GPUs reached maximum efficiency</li>
  </ul>
</blockquote>

<hr />

<h2 id="year-end-review">Year-End Review</h2>

<p>As 2025 draws to a close, the landscape of AI in software development is becoming clearer. Far from the apocalyptic prophecies of early in the year, we now have concrete data to assess the real impact of these technologies.</p>

<p>2025 will have been the year of <strong>demystification</strong>: rigorous studies revealed the limitations of AI tools, the colossal financial losses of industry giants exposed the fragility of their business model, and developers on the ground learned to distinguish media hype from daily reality.</p>

<p>For 2026, my advice remains the same: <strong>learn to use these tools</strong>, but never stop developing your fundamental skills. AI is an excellent assistant — not a replacement.</p>

<p><strong>Happy New Year 2026 to all developers!</strong> May this new year bring you exciting projects, quickly resolved bugs, and serenity in the face of the alarmist predictions that will undoubtedly continue to flourish.</p>

<p><em>What was your experience with AI in 2025? Share your thoughts in the comments or on social media.</em></p>

<hr />

<h2 id="sources">Sources</h2>

<ol>
  <li>
    <p><a href="https://www.youtube.com/watch?v=4-QICRWv8jY">Melvynx - Will AI replace developers?</a> - YouTube</p>
  </li>
  <li>
    <p><a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">METR - Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity</a> - METR</p>
  </li>
  <li>
    <p><a href="https://techcrunch.com/2025/07/11/ai-coding-tools-may-not-speed-up-every-developer-study-shows/">AI coding tools may not speed up every developer</a> - TechCrunch</p>
  </li>
  <li>
    <p><a href="https://www.infoworld.com/article/4020931/ai-coding-tools-can-slow-down-seasoned-developers-by-19.html">AI coding tools can slow down seasoned developers by 19%</a> - InfoWorld</p>
  </li>
  <li>
    <p><a href="https://80000hours.org/2025/03/when-do-experts-expect-agi-to-arrive/">Shrinking AGI timelines: a review of expert forecasts</a> - 80,000 Hours</p>
  </li>
  <li>
    <p><a href="https://research.aimultiple.com/artificial-general-intelligence-singularity-timing/">When Will AGI/Singularity Happen? 8,590 Predictions Analyzed</a> - AIMultiple</p>
  </li>
  <li>
    <p><a href="https://www.cnbc.com/2024/09/27/openai-sees-5-billion-loss-this-year-on-3point7-billion-in-revenue.html">OpenAI sees roughly $5 billion loss this year on $3.7 billion in revenue</a> - CNBC</p>
  </li>
  <li>
    <p><a href="https://www.lesswrong.com/posts/CCQsQnCMWhJcCFY9x/openai-lost-usd5-billion-in-2024-and-its-losses-are">OpenAI lost $5 billion in 2024 (and its losses are increasing)</a> - LessWrong</p>
  </li>
  <li>
    <p><a href="https://arxiv.org/abs/2508.01191">Is Chain-of-Thought Reasoning of LLMs a Mirage?</a> - arXiv</p>
  </li>
  <li>
    <p><a href="https://gail.wharton.upenn.edu/research-and-insights/tech-report-chain-of-thought/">The Decreasing Value of Chain of Thought in Prompting</a> - Wharton</p>
  </li>
  <li>
    <p><a href="https://arxiv.org/abs/2511.12869">On the Fundamental Limits of LLMs at Scale</a> - arXiv</p>
  </li>
  <li>
    <p><a href="https://arxiv.org/abs/2502.01100">ZebraLogic: On the Scaling Limits of LLMs for Logical Reasoning</a> - arXiv</p>
  </li>
  <li>
    <p><a href="https://www.bls.gov/opub/ted/2025/ai-impacts-in-bls-employment-projections.htm">AI impacts in BLS employment projections</a> - Bureau of Labor Statistics</p>
  </li>
  <li>
    <p><a href="https://www.veritone.com/blog/ai-jobs-growth-q1-2025-labor-market-analysis/">AI Jobs on the Rise: Q1 2025 Labor Market Analysis</a> - Veritone</p>
  </li>
  <li>
    <p><a href="https://blog.getaura.ai/new-ai-job-market-data-through-june-2025">New AI Job Market Data (Through June 2025)</a> - GetAura</p>
  </li>
  <li>
    <p><a href="https://spectrum.ieee.org/ai-jobs-in-2025">AI Jobs in 2025: Essential Insights for Software Engineers</a> - IEEE Spectrum</p>
  </li>
  <li>
    <p><a href="https://blog.jetbrains.com/research/2025/10/state-of-developer-ecosystem-2025/">The State of Developer Ecosystem 2025</a> - JetBrains</p>
  </li>
  <li>
    <p><a href="https://en.wikipedia.org/wiki/GPT-4">GPT-4</a> - Wikipedia</p>
  </li>
  <li>
    <p><a href="https://www.ibm.com/think/topics/chain-of-thoughts">What is chain of thought (CoT) prompting?</a> - IBM</p>
  </li>
  <li>
    <p><a href="https://intelligence-artificielle.developpez.com/actu/378435/">Superintelligent AI is a Silicon Valley Fantasy - Tim Dettmers (Ai2)</a> - Developpez.com</p>
  </li>
  <li>
    <p><a href="https://medium.com/@adnanmasood/is-there-a-wall-34d02dfd85f3">Is there a Wall? - Dr. Adnan Masood</a> - Dr. Adnan Masood (AI solutions architect)</p>
  </li>
</ol>
]]></content:encoded>
        <pubDate>Wed, 31 Dec 2025 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/en/will-ai-replace-developers-critical-analysis/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/en/will-ai-replace-developers-critical-analysis/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/ia-remplacement-developpeurs.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>L&apos;IA va-t-elle Remplacer les Développeurs ? Analyse Critique des Promesses et des Limites</title>
        <description>
          
            Analyse approfondie des limites techniques de l&apos;IA générative face au métier de développeur. Entre scaling problem, stagnation des modèles et réalités du marché de l&apos;emploi, où en sommes-nous vraiment ?
          
        </description>
        <content:encoded><![CDATA[<p>La panique est palpable sur les réseaux sociaux. Chaque nouvelle démo d’un modèle d’IA générative déclenche une vague de prédictions catastrophistes : “C’est la fin des développeurs”, “L’AGI arrive dans 2 ans”, “Une équipe de 6 développeurs remplacée par un seul avec l’IA”. Ces affirmations méritent une analyse rigoureuse, loin de l’hystérie collective.</p>

<p>Cet article propose une déconstruction méthodique du discours dominant sur l’IA et le remplacement des développeurs, s’appuyant sur des études scientifiques récentes, des données économiques, les analyses de chercheurs comme Tim Dettmers (Ai2) sur les limites physiques du hardware, et une <a href="https://www.youtube.com/watch?v=4-QICRWv8jY">analyse vidéo pertinente de Melvynx</a> — développeur français et créateur de contenu tech suivi par plus de 100 000 abonnés — sur le sujet.</p>

<h2 id="le-piège-des-démos-impressionnantes">Le Piège des Démos “Impressionnantes”</h2>

<h3 id="des-démonstrations-trompeuses">Des Démonstrations Trompeuses</h3>

<p>Les réseaux sociaux regorgent de vidéos montrant des sites web créés en quelques minutes par l’IA. Ces démos, souvent relayées par des influenceurs en quête de viralité, présentent plusieurs problèmes fondamentaux :</p>

<ul>
  <li><strong>Code non utilisable en production</strong> : le résultat visuel cache souvent une architecture fragile</li>
  <li><strong>Contexte optimisé</strong> : les prompts sont soigneusement préparés pour maximiser l’effet</li>
  <li><strong>Absence de maintenance</strong> : personne ne montre l’évolution du projet 6 mois plus tard</li>
  <li><strong>Cas d’usage simplifiés</strong> : les projets réels impliquent des contraintes métier complexes</li>
</ul>

<h3 id="la-définition-du-remplacement">La Définition du “Remplacement”</h3>

<p>Pour qu’une IA remplace véritablement un développeur, elle devrait démontrer une autonomie quasi-totale. Remplacer une équipe de 6 développeurs par 1 développeur pilotant 5 agents IA nécessiterait que ces agents fonctionnent sans supervision constante.</p>

<p>Or, si le développeur doit “prompter” et manager les IA 24h/24, corriger leurs erreurs et valider chaque décision, il serait plus productif de conserver des développeurs humains assistés par l’IA. Le gain de productivité réel ne justifie pas la réduction d’effectifs promises par les discours marketing.</p>

<h2 id="létude-metr--la-réalité-de-la-productivité-avec-lia">L’Étude METR : La Réalité de la Productivité avec l’IA</h2>

<h3 id="19-plus-lent-avec-lia">19% Plus Lent avec l’IA</h3>

<p>Une <a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">étude randomisée contrôlée de METR</a> (Model Evaluation &amp; Threat Research) publiée en juillet 2025 a mesuré l’impact réel des outils d’IA sur la productivité des développeurs expérimentés. Les résultats sont contre-intuitifs : <strong>les développeurs utilisant l’IA ont mis 19% plus de temps</strong> à accomplir leurs tâches que ceux travaillant sans assistance.</p>

<p>L’étude a recruté 16 développeurs expérimentés travaillant sur des repositories open-source majeurs (moyenne de 22 000+ stars et 1 million+ de lignes de code). Chaque développeur a traité des issues réelles, assignées aléatoirement avec ou sans accès aux outils d’IA (principalement Cursor Pro avec Claude 3.5/3.7 Sonnet).</p>

<h3 id="le-fossé-entre-perception-et-réalité">Le Fossé entre Perception et Réalité</h3>

<p>Le résultat le plus frappant concerne l’écart entre perception et réalité :</p>

<table>
  <thead>
    <tr>
      <th>Métrique</th>
      <th>Valeur</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Prédiction des développeurs (gain espéré)</td>
      <td>+24% plus rapide</td>
    </tr>
    <tr>
      <td>Perception après usage (gain perçu)</td>
      <td>+20% plus rapide</td>
    </tr>
    <tr>
      <td>Réalité mesurée</td>
      <td><strong>-19% plus lent</strong></td>
    </tr>
  </tbody>
</table>

<p>Comme le note <a href="https://techcrunch.com/2025/07/11/ai-coding-tools-may-not-speed-up-every-developer-study-shows/">TechCrunch</a> : “Quand l’IA est autorisée, les développeurs passent moins de temps à coder activement et à chercher des informations, et plus de temps à prompter l’IA, attendre ses outputs, les vérifier, et rester inactifs.”</p>

<p>Un développeur participant à l’étude témoigne avoir “perdu au moins une heure à essayer de résoudre un problème spécifique avec l’IA” avant de finalement annuler tous les changements et implémenter la solution sans assistance.</p>

<h3 id="confirmation-par-google-dora">Confirmation par Google DORA</h3>

<p>Ces résultats s’alignent avec le <a href="https://www.infoworld.com/article/4020931/ai-coding-tools-can-slow-down-seasoned-developers-by-19.html">rapport DORA 2024 de Google</a> : bien que 75% des développeurs se sentent plus productifs avec les outils d’IA, chaque augmentation de 25% dans l’adoption de l’IA correspond à une baisse de 1.5% de la vitesse de livraison et une chute de 7.2% de la stabilité des systèmes.</p>

<h2 id="le-mythe-de-lagi-à-court-terme">Le Mythe de l’AGI à Court Terme</h2>

<h3 id="ce-que-lagi-implique-réellement">Ce que l’AGI Implique Réellement</h3>

<p>L’Intelligence Artificielle Générale (AGI) représente un système capable de :</p>

<ul>
  <li><strong>Réfléchir à l’expérience utilisateur</strong> et prendre des décisions de conception</li>
  <li><strong>Comprendre les contraintes métier</strong> spécifiques à chaque projet</li>
  <li><strong>Apprendre de ses erreurs</strong> de manière persistante (ne pas refaire crasher la base de données après un premier échec)</li>
  <li><strong>S’adapter au contexte</strong> sans avoir besoin d’instructions détaillées à chaque interaction</li>
</ul>

<p>Ces capacités restent hors de portée des modèles actuels, malgré leurs impressionnantes performances sur des tâches spécifiques.</p>

<h3 id="les-prédictions-des-experts--un-consensus-fragile">Les Prédictions des Experts : Un Consensus Fragile</h3>

<p>Selon une <a href="https://80000hours.org/2025/03/when-do-experts-expect-agi-to-arrive/">analyse de 80,000 Hours</a> compilant les prédictions d’experts, les estimations varient considérablement :</p>

<table>
  <thead>
    <tr>
      <th>Expert</th>
      <th>Rôle</th>
      <th>Prédiction AGI</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Sam Altman</strong></td>
      <td>PDG d’OpenAI</td>
      <td>2025 - machines pensant comme des humains</td>
    </tr>
    <tr>
      <td><strong>Dario Amodei</strong></td>
      <td>PDG d’Anthropic, ancien VP OpenAI</td>
      <td>2026 - IA “puissante”</td>
    </tr>
    <tr>
      <td><strong>Demis Hassabis</strong></td>
      <td>PDG de DeepMind, Prix Nobel de Chimie 2024</td>
      <td>5-10 ans</td>
    </tr>
    <tr>
      <td><strong>Andrej Karpathy</strong></td>
      <td>Ex-directeur IA Tesla, cofondateur OpenAI</td>
      <td>~10 ans, sceptique sur les “sur-prédictions”</td>
    </tr>
    <tr>
      <td>Sondages chercheurs IA</td>
      <td>Communauté académique</td>
      <td>~2040</td>
    </tr>
    <tr>
      <td>Metaculus</td>
      <td>Plateforme de prédiction collaborative</td>
      <td>25% chance d’ici 2027, 50% d’ici 2031</td>
    </tr>
  </tbody>
</table>

<p>On remarque que les prédictions les plus optimistes proviennent systématiquement des dirigeants d’entreprises ayant un intérêt financier direct dans le discours AGI, tandis que la communauté académique reste plus mesurée.</p>

<p>Comme le note <a href="https://research.aimultiple.com/artificial-general-intelligence-singularity-timing/">AIMultiple</a>, en quatre ans seulement, l’estimation moyenne sur Metaculus pour l’arrivée de l’AGI est passée de 50 ans à 5 ans. Cette volatilité reflète davantage l’emballement médiatique que des avancées techniques mesurables.</p>

<h3 id="lhistoire-des-prédictions-échouées">L’Histoire des Prédictions Échouées</h3>

<p>Cette volatilité n’est pas nouvelle. L’histoire de l’IA est jalonnée de prédictions audacieuses qui ne se sont jamais réalisées :</p>

<table>
  <thead>
    <tr>
      <th>Année</th>
      <th>Expert</th>
      <th>Prédiction</th>
      <th>Réalité</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1965</strong></td>
      <td>Herbert Simon, Prix Nobel d’économie</td>
      <td>“Dans 20 ans, les machines seront capables de faire tout travail qu’un homme peut faire”</td>
      <td>Toujours pas le cas 60 ans plus tard</td>
    </tr>
    <tr>
      <td><strong>1970</strong></td>
      <td>Marvin Minsky, pionnier de l’IA (MIT)</td>
      <td>“Dans 3 à 8 ans, nous aurons une machine avec l’intelligence générale d’un être humain”</td>
      <td>Premier “hiver de l’IA” dans les années suivantes</td>
    </tr>
    <tr>
      <td><strong>1997</strong></td>
      <td>Ray Kurzweil, futurologue</td>
      <td>“L’AGI arrivera en 2029”</td>
      <td>Prédiction régulièrement repoussée</td>
    </tr>
    <tr>
      <td><strong>2015</strong></td>
      <td>Elon Musk</td>
      <td>“L’IA dépassera l’humain d’ici 5 ans”</td>
      <td>10 ans plus tard, toujours pas d’AGI</td>
    </tr>
  </tbody>
</table>

<p>Ce pattern récurrent — des experts confiants repoussant perpétuellement leurs prédictions — devrait inciter à la prudence face aux annonces actuelles.</p>

<h3 id="lintérêt-financier-du-discours-agi">L’Intérêt Financier du Discours AGI</h3>

<p>Les chiffres financiers d’OpenAI éclairent le discours marketing autour de l’AGI. Selon <a href="https://www.cnbc.com/2024/09/27/openai-sees-5-billion-loss-this-year-on-3point7-billion-in-revenue.html">CNBC</a> et <a href="https://www.lesswrong.com/posts/CCQsQnCMWhJcCFY9x/openai-lost-usd5-billion-in-2024-and-its-losses-are">LessWrong</a> :</p>

<p><strong>Pertes financières d’OpenAI :</strong></p>
<ul>
  <li><strong>2024</strong> : 5 milliards de dollars de pertes pour 3.7 milliards de revenus</li>
  <li><strong>Premier semestre 2025</strong> : 13.5 milliards de pertes pour 4.3 milliards de revenus</li>
  <li><strong>Coût d’entraînement seul</strong> : 3 milliards en 2024 (dépassant les revenus d’abonnement)</li>
  <li><strong>Projection HSBC</strong> : même avec 200 milliards de revenus d’ici 2030, OpenAI aura besoin de 207 milliards supplémentaires pour survivre</li>
</ul>

<p>Pour justifier des investissements massifs et des valorisations astronomiques, les entreprises d’IA doivent vendre une vision grandiose : l’AGI qui transformera le monde. Annoncer “l’IA s’améliore progressivement sur certaines tâches” ne suffit pas à lever des milliards.</p>

<p>Cette dynamique rappelle l’analyse que j’avais proposée dans mon article sur <a href="/fr/sam-altman-bulle-ia-marches-analyse/">les déclarations de Sam Altman concernant la bulle IA</a>, où le PDG d’OpenAI lui-même reconnaissait l’existence d’une bulle spéculative.</p>

<h3 id="lagi-comme--fantasme-de-la-silicon-valley-">L’AGI comme « Fantasme de la Silicon Valley »</h3>

<p><a href="https://intelligence-artificielle.developpez.com/actu/378435/">Tim Dettmers</a>, chercheur chez Ai2 (Allen Institute for AI) et reconnu pour ses travaux sur l’optimisation des modèles de langage et la quantification (notamment le format QLoRA largement utilisé pour le fine-tuning efficace), apporte un contrepoids académique aux prédictions optimistes de la Silicon Valley. Il qualifie sans détour l’IA superintelligente de « fantasme » et la poursuite de l’AGI de « chimère ».</p>

<p>Son argument central : l’AGI véritable devrait accomplir des tâches physiques complexes, ce qui nécessite des robots avancés économiquement viables — une réalité loin d’être atteinte. Cette vision contraste avec l’approche pragmatique chinoise, qui privilégie les applications utiles actuelles plutôt qu’une course vers une intelligence artificielle générale hypothétique.</p>

<h2 id="la-stagnation-technique-des-modèles">La Stagnation Technique des Modèles</h2>

<h3 id="pas-de-révolution-architecturale-depuis-le-transformer">Pas de Révolution Architecturale Depuis le Transformer</h3>

<p>Contrairement au discours marketing, les avancées fondamentales restent limitées. Selon <a href="https://en.wikipedia.org/wiki/GPT-4">Wikipedia</a> et <a href="https://datasciencedojo.com/blog/the-complete-history-of-openai-models/">Data Science Dojo</a>, tous les modèles majeurs actuels (GPT-4, Claude, Gemini, LLaMA) utilisent l’architecture Transformer introduite en 2017.</p>

<p>OpenAI n’a pas publié les détails techniques de GPT-4, refusant explicitement de spécifier la taille du modèle, l’architecture ou le hardware utilisé. Ce qui a réellement évolué, c’est l’environnement autour du modèle :</p>

<table>
  <thead>
    <tr>
      <th>Amélioration</th>
      <th>Description</th>
      <th>Impact Réel</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Fenêtre de contexte</strong></td>
      <td>De 2048 tokens (GPT-3) à 1M tokens (GPT-4.1)</td>
      <td>Meilleure compréhension des projets longs</td>
    </tr>
    <tr>
      <td><strong>Accès aux outils</strong></td>
      <td>Exécution de code, recherche web</td>
      <td>Capacités étendues mais non autonomes</td>
    </tr>
    <tr>
      <td><strong>Chain of Thoughts</strong></td>
      <td>Raisonnement étape par étape</td>
      <td>Meilleurs résultats, pas plus d’intelligence</td>
    </tr>
    <tr>
      <td><strong>Multimodalité</strong></td>
      <td>Images, audio, vidéo</td>
      <td>Nouveaux cas d’usage, mêmes limitations</td>
    </tr>
  </tbody>
</table>

<h3 id="le-reasoning-démystifié--un-mirage-">Le “Reasoning” Démystifié : Un Mirage ?</h3>

<p>Une <a href="https://arxiv.org/abs/2508.01191">étude d’août 2025</a> intitulée “Is Chain-of-Thought Reasoning of LLMs a Mirage?” conclut que le raisonnement CoT est un “mirage fragile” qui s’effondre dès qu’on sort des distributions d’entraînement.</p>

<p>Selon <a href="https://www.ibm.com/think/topics/chain-of-thoughts">IBM</a> et une <a href="https://gail.wharton.upenn.edu/research-and-insights/tech-report-chain-of-thought/">étude de Wharton</a>, les limitations du Chain of Thought sont significatives :</p>

<ul>
  <li><strong>Fragility</strong> : des perturbations mineures et sémantiquement insignifiantes causent des chutes de performance importantes</li>
  <li><strong>Illusion de transparence</strong> : les réponses finales restent souvent inchangées même quand les étapes intermédiaires sont falsifiées ou omises</li>
  <li><strong>Coût temporel</strong> : 20-80% de temps supplémentaire pour des gains marginaux sur les modèles de raisonnement</li>
  <li><strong>Variabilité accrue</strong> : le CoT peut introduire des erreurs sur des questions “faciles” que le modèle aurait autrement résolues correctement</li>
</ul>

<p>Comme le résume la recherche de Wharton : “Ces résultats remettent en question l’hypothèse que le CoT est universellement bénéfique.”</p>

<h2 id="les-barrières-infranchissables--le-scaling-problem">Les Barrières Infranchissables : Le Scaling Problem</h2>

<h3 id="cinq-limitations-fondamentales-identifiées">Cinq Limitations Fondamentales Identifiées</h3>

<p>Une <a href="https://arxiv.org/abs/2511.12869">recherche de novembre 2025</a> identifie cinq limitations fondamentales qui bornent les gains du scaling des LLM :</p>

<ol>
  <li><strong>Hallucination</strong> : génération d’informations fausses avec confiance</li>
  <li><strong>Compression du contexte</strong> : perte d’information dans les longs contextes</li>
  <li><strong>Dégradation du raisonnement</strong> : performance déclinante sur les problèmes complexes</li>
  <li><strong>Fragilité de la récupération</strong> : inconsistance dans l’accès aux connaissances</li>
  <li><strong>Désalignement multimodal</strong> : incohérences entre modalités</li>
</ol>

<h3 id="le-curse-of-complexity">Le “Curse of Complexity”</h3>

<p>Les recherches utilisant le framework <a href="https://arxiv.org/abs/2502.01100">ZebraLogic</a> révèlent un déclin significatif de la précision à mesure que la complexité des problèmes augmente. Cette limitation persiste même avec des modèles plus grands et plus de temps de calcul à l’inférence, suggérant des <strong>contraintes inhérentes</strong> aux capacités de raisonnement actuelles des LLM.</p>

<h3 id="le-mur-économique-et-énergétique">Le Mur Économique et Énergétique</h3>

<p>Selon <a href="https://medium.com/@adnanmasood/is-there-a-wall-34d02dfd85f3">Dr. Adnan Masood</a>, architecte solutions IA et chercheur, et les recherches récentes :</p>

<ul>
  <li><strong>Limites physiques</strong> : nous approchons des limites de performance par puce alors que la loi de Moore ralentit</li>
  <li><strong>Coûts astronomiques</strong> : plus de 100 millions de dollars pour entraîner GPT-4</li>
  <li><strong>Données limitées</strong> : les données textuelles de qualité s’épuisent, forçant le recours aux données synthétiques</li>
  <li><strong>Rendements décroissants</strong> : les modèles frontière (OpenAI, Anthropic, Google, Meta) montrent des sauts de performance plus faibles malgré des budgets d’entraînement massifs</li>
</ul>

<p>J’avais analysé cette problématique énergétique dans mon article sur <a href="/fr/IA-impact-ecologique/">l’impact écologique de l’IA</a>.</p>

<h3 id="les-limites-physiques-du-hardware">Les Limites Physiques du Hardware</h3>

<p>Tim Dettmers apporte un éclairage technique sur les contraintes matérielles incontournables. Son constat est sans appel : « Il nous reste peut-être un ou deux ans pour la mise à l’échelle avant que de nouvelles améliorations ne deviennent physiquement impossibles. »</p>

<p>Les chiffres sont éloquents :</p>

<table>
  <thead>
    <tr>
      <th>Génération GPU</th>
      <th>Performances</th>
      <th>Contrepartie</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Ampere → Hopper</td>
      <td>×3</td>
      <td>Puissance ×1.7</td>
    </tr>
    <tr>
      <td>Hopper → Blackwell</td>
      <td>×2.5</td>
      <td>Surface puce ×2, puissance ×1.7</td>
    </tr>
  </tbody>
</table>

<p>Selon Dettmers, les GPU ont atteint leur rendement maximal vers 2018. Depuis, ce ne sont que des « fonctionnalités ponctuelles qui s’épuisent rapidement ». Maintenir un progrès similaire « nécessite une augmentation exponentielle des coûts en calcul, en énergie et en infrastructure ». Auparavant, la croissance exponentielle du matériel compensait ces besoins — ce n’est plus le cas.</p>

<h2 id="létat-réel-du-marché-de-lemploi">L’État Réel du Marché de l’Emploi</h2>

<h3 id="les-données-du-bureau-of-labor-statistics">Les Données du Bureau of Labor Statistics</h3>

<p>Contrairement au discours catastrophiste, le <a href="https://www.bls.gov/opub/ted/2025/ai-impacts-in-bls-employment-projections.htm">Bureau of Labor Statistics américain</a> projette une <strong>croissance de 17.9%</strong> de l’emploi des développeurs logiciels entre 2023 et 2033, soit bien supérieure à la moyenne de 4% pour toutes les professions.</p>

<p>Ces projections s’alignent avec l’estimation de Tim Dettmers selon laquelle <strong>seulement 11% des emplois sont actuellement remplaçables par l’IA</strong> — bien loin des prédictions apocalyptiques relayées sur les réseaux sociaux.</p>

<h3 id="explosion-des-postes-ia">Explosion des Postes IA</h3>

<p>Selon <a href="https://www.veritone.com/blog/ai-jobs-growth-q1-2025-labor-market-analysis/">Veritone</a> et <a href="https://blog.getaura.ai/new-ai-job-market-data-through-june-2025">GetAura</a>, le premier semestre 2025 a connu une explosion des offres d’emploi liées à l’IA :</p>

<table>
  <thead>
    <tr>
      <th>Période</th>
      <th>Offres d’emploi IA</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Janvier 2025</td>
      <td>66 000</td>
    </tr>
    <tr>
      <td>Avril 2025</td>
      <td>139 000</td>
    </tr>
    <tr>
      <td>Juin 2025</td>
      <td>Stabilisation (recalibration, pas effondrement)</td>
    </tr>
  </tbody>
</table>

<p>Les postes IA représentent désormais <strong>10-12% de tous les emplois software</strong>, signe que l’IA s’intègre dans l’industrie plutôt qu’elle ne la remplace.</p>

<h3 id="salaires-en-hausse">Salaires en Hausse</h3>

<p>Selon <a href="https://spectrum.ieee.org/ai-jobs-in-2025">IEEE Spectrum</a> :</p>

<ul>
  <li><strong>Salaire médian IA</strong> (Q1 2025) : 156 998 dollars/an (+0.8% trimestre sur trimestre)</li>
  <li><strong>Top chercheurs IA</strong> : Meta propose des packages de 10-20 millions de dollars</li>
  <li><strong>Croissance la plus rapide</strong> : AI/Machine Learning Engineer (+41.8% en un an)</li>
</ul>

<h3 id="ladoption-de-lia-par-les-développeurs">L’Adoption de l’IA par les Développeurs</h3>

<p>Selon le <a href="https://blog.jetbrains.com/research/2025/10/state-of-developer-ecosystem-2025/">rapport JetBrains 2025</a> :</p>

<ul>
  <li><strong>85%</strong> des développeurs utilisent régulièrement des outils d’IA</li>
  <li><strong>62%</strong> s’appuient sur au moins un assistant de code IA</li>
  <li><strong>89%</strong> économisent au moins une heure par semaine grâce à l’IA</li>
  <li><strong>68%</strong> s’attendent à ce que les employeurs exigent la maîtrise des outils IA</li>
</ul>

<h3 id="décryptage-du-graphique-indeed">Décryptage du Graphique Indeed</h3>

<p>Un graphique d’Indeed montrant une chute des offres d’emploi tech aux États-Unis circule régulièrement pour alimenter le discours catastrophiste. Cette lecture mérite une contextualisation :</p>

<p><strong>Ce que le graphique montre</strong> : un index en base 100 sur l’année 2020.</p>

<p><strong>Ce que cela signifie réellement</strong> : la “chute” actuelle ramène simplement le marché au niveau de février 2020, juste avant le pic anormal lié à la pandémie de Covid-19. Le marché de l’emploi tech de 2020 était considéré comme robuste et sain.</p>

<h2 id="mon-expérience--plus-dun-an-de-développement-augmenté">Mon Expérience : Plus d’un An de Développement Augmenté</h2>

<p>En tant que développeur pratiquant le <strong>développement augmenté par l’IA depuis plus d’un an</strong>, mon expérience quotidienne confirme les conclusions des études citées. J’ai condensé cette pratique dans une <a href="/fr/claude-code-installation-premiers-pas/">série de 20 articles sur Claude Code</a>, avec un projet concret documenté : recréer un jeu complet en TypeScript.</p>

<p><strong>Ce que plus d’un an de pratique m’a appris :</strong></p>

<ul>
  <li><strong>L’IA excelle</strong> sur les tâches répétitives, le scaffolding, la génération de tests et la documentation</li>
  <li><strong>L’IA échoue</strong> sur les décisions d’architecture, les edge cases métier et l’optimisation fine</li>
  <li><strong>Le workflow structuré</strong> (Explore → Plan → Code → Test) transforme un outil hasardeux en partenaire efficace</li>
  <li><strong>La supervision reste indispensable</strong> : chaque génération nécessite relecture et validation</li>
</ul>

<p>Comme je le résume dans <a href="/fr/claude-code-etude-cas-prelude/">l’étude de cas finale</a> : <em>“Claude Code n’est pas un remplacement du développeur, mais un <strong>multiplicateur de productivité</strong>.”</em></p>

<p>Le coût de mon projet exemple (120$ pour 5000 lignes de code) illustre bien le rapport qualité-prix — mais aussi la nécessité d’une expertise humaine pour guider, valider et corriger l’IA à chaque étape.</p>

<h2 id="conclusion--lia-comme-outil-pas-comme-remplaçant">Conclusion : L’IA comme Outil, Pas comme Remplaçant</h2>

<p>Les données récentes dessinent un portrait nuancé loin des prédictions alarmistes :</p>

<p><strong>Ce que les études montrent :</strong></p>
<ul>
  <li>L’IA peut <strong>ralentir</strong> les développeurs expérimentés de 19% dans certains contextes</li>
  <li>Le Chain of Thought est un “mirage fragile” qui s’effondre hors des cas d’entraînement</li>
  <li>Le marché de l’emploi développeur croît de 17.9% sur 10 ans</li>
  <li>OpenAI perd des milliards, alimentant un discours AGI financièrement motivé</li>
  <li>Les GPU ont atteint leur rendement maximal vers 2018 et les limites physiques du hardware se rapprochent</li>
  <li>Seulement 11% des emplois sont actuellement remplaçables par l’IA</li>
</ul>

<p><strong>Ce que cela implique :</strong></p>
<ul>
  <li>Les outils d’IA sont utiles mais ne remplacent pas l’expertise humaine</li>
  <li>Le paradigme <strong>“human-in-the-loop”</strong> (humain dans la boucle) reste indispensable pour du code de qualité production</li>
  <li>Le métier évolue vers plus d’architecture et moins de “code boilerplate”</li>
  <li>Les développeurs maîtrisant l’IA auront un avantage compétitif</li>
</ul>

<p>Le concept de <em>human-in-the-loop</em> n’est pas une limitation temporaire en attendant des IA plus avancées — c’est une <strong>nécessité structurelle</strong>. Même les systèmes d’IA les plus sophistiqués nécessitent une supervision humaine pour les décisions critiques, la validation contextuelle et la responsabilité finale. Les développeurs deviennent des <strong>orchestrateurs</strong> qui guident, corrigent et valident le travail de l’IA.</p>

<p>Comme le souligne Tim Dettmers, chercheur chez Ai2, l’AGI reste un « fantasme de la Silicon Valley » — une chimère qui contraste avec l’approche pragmatique privilégiant les applications utiles actuelles. Le discours sur le remplacement imminent des développeurs relève davantage du marketing et de l’effet de mode que d’une analyse technique rigoureuse. La sagesse recommande d’adopter ces technologies en gardant un esprit critique, de continuer à développer ses compétences fondamentales, et de ne pas céder à la panique alimentée par des démos trompeuses et des projections financièrement motivées.</p>

<hr />

<h2 id="à-retenir">À Retenir</h2>

<blockquote>
  <p><strong>Les 4 chiffres clés de cet article :</strong></p>
  <ul>
    <li><strong>-19%</strong> : L’IA ralentit les développeurs expérimentés (étude METR)</li>
    <li><strong>11%</strong> : Part des emplois actuellement remplaçables par l’IA (Dettmers)</li>
    <li><strong>+17.9%</strong> : Croissance projetée de l’emploi développeur 2023-2033 (BLS)</li>
    <li><strong>2018</strong> : Année où les GPU ont atteint leur rendement maximal</li>
  </ul>
</blockquote>

<hr />

<h2 id="bilan-de-fin-dannée">Bilan de Fin d’Année</h2>

<p>Alors que 2025 touche à sa fin, le paysage de l’IA dans le développement logiciel se clarifie. Loin des prophéties apocalyptiques du début d’année, nous disposons désormais de données concrètes pour évaluer l’impact réel de ces technologies.</p>

<p>L’année 2025 aura été celle de la <strong>démystification</strong> : les études rigoureuses ont révélé les limites des outils d’IA, les pertes financières colossales des géants du secteur ont exposé la fragilité du modèle économique, et les développeurs sur le terrain ont appris à distinguer le battage médiatique de la réalité quotidienne.</p>

<p>Pour 2026, mon conseil reste le même : <strong>apprenez à utiliser ces outils</strong>, mais ne cessez jamais de développer vos compétences fondamentales. L’IA est un excellent assistant — pas un remplaçant.</p>

<p><strong>Bonne année 2026 à tous les développeurs !</strong> Que cette nouvelle année vous apporte des projets passionnants, des bugs rapidement résolus, et la sérénité face aux prédictions alarmistes qui ne manqueront pas de fleurir.</p>

<p><em>Et vous, quelle a été votre expérience avec l’IA en 2025 ? Partagez vos retours dans les commentaires ou sur les réseaux sociaux.</em></p>

<hr />

<h2 id="sources">Sources</h2>

<ol>
  <li>
    <p><a href="https://www.youtube.com/watch?v=4-QICRWv8jY">Melvynx - L’IA va-t-elle remplacer les développeurs ?</a> - YouTube</p>
  </li>
  <li>
    <p><a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">METR - Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity</a> - METR</p>
  </li>
  <li>
    <p><a href="https://techcrunch.com/2025/07/11/ai-coding-tools-may-not-speed-up-every-developer-study-shows/">AI coding tools may not speed up every developer</a> - TechCrunch</p>
  </li>
  <li>
    <p><a href="https://www.infoworld.com/article/4020931/ai-coding-tools-can-slow-down-seasoned-developers-by-19.html">AI coding tools can slow down seasoned developers by 19%</a> - InfoWorld</p>
  </li>
  <li>
    <p><a href="https://80000hours.org/2025/03/when-do-experts-expect-agi-to-arrive/">Shrinking AGI timelines: a review of expert forecasts</a> - 80,000 Hours</p>
  </li>
  <li>
    <p><a href="https://research.aimultiple.com/artificial-general-intelligence-singularity-timing/">When Will AGI/Singularity Happen? 8,590 Predictions Analyzed</a> - AIMultiple</p>
  </li>
  <li>
    <p><a href="https://www.cnbc.com/2024/09/27/openai-sees-5-billion-loss-this-year-on-3point7-billion-in-revenue.html">OpenAI sees roughly $5 billion loss this year on $3.7 billion in revenue</a> - CNBC</p>
  </li>
  <li>
    <p><a href="https://www.lesswrong.com/posts/CCQsQnCMWhJcCFY9x/openai-lost-usd5-billion-in-2024-and-its-losses-are">OpenAI lost $5 billion in 2024 (and its losses are increasing)</a> - LessWrong</p>
  </li>
  <li>
    <p><a href="https://arxiv.org/abs/2508.01191">Is Chain-of-Thought Reasoning of LLMs a Mirage?</a> - arXiv</p>
  </li>
  <li>
    <p><a href="https://gail.wharton.upenn.edu/research-and-insights/tech-report-chain-of-thought/">The Decreasing Value of Chain of Thought in Prompting</a> - Wharton</p>
  </li>
  <li>
    <p><a href="https://arxiv.org/abs/2511.12869">On the Fundamental Limits of LLMs at Scale</a> - arXiv</p>
  </li>
  <li>
    <p><a href="https://arxiv.org/abs/2502.01100">ZebraLogic: On the Scaling Limits of LLMs for Logical Reasoning</a> - arXiv</p>
  </li>
  <li>
    <p><a href="https://www.bls.gov/opub/ted/2025/ai-impacts-in-bls-employment-projections.htm">AI impacts in BLS employment projections</a> - Bureau of Labor Statistics</p>
  </li>
  <li>
    <p><a href="https://www.veritone.com/blog/ai-jobs-growth-q1-2025-labor-market-analysis/">AI Jobs on the Rise: Q1 2025 Labor Market Analysis</a> - Veritone</p>
  </li>
  <li>
    <p><a href="https://blog.getaura.ai/new-ai-job-market-data-through-june-2025">New AI Job Market Data (Through June 2025)</a> - GetAura</p>
  </li>
  <li>
    <p><a href="https://spectrum.ieee.org/ai-jobs-in-2025">AI Jobs in 2025: Essential Insights for Software Engineers</a> - IEEE Spectrum</p>
  </li>
  <li>
    <p><a href="https://blog.jetbrains.com/research/2025/10/state-of-developer-ecosystem-2025/">The State of Developer Ecosystem 2025</a> - JetBrains</p>
  </li>
  <li>
    <p><a href="https://en.wikipedia.org/wiki/GPT-4">GPT-4</a> - Wikipedia</p>
  </li>
  <li>
    <p><a href="https://www.ibm.com/think/topics/chain-of-thoughts">What is chain of thought (CoT) prompting?</a> - IBM</p>
  </li>
  <li>
    <p><a href="https://intelligence-artificielle.developpez.com/actu/378435/">L’IA superintelligente est un fantasme de la Silicon Valley - Tim Dettmers (Ai2)</a> - Developpez.com</p>
  </li>
  <li>
    <p><a href="https://medium.com/@adnanmasood/is-there-a-wall-34d02dfd85f3">Is there a Wall? - Dr. Adnan Masood</a> - Dr. Adnan Masood (architecte solutions IA)</p>
  </li>
</ol>
]]></content:encoded>
        <pubDate>Wed, 31 Dec 2025 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/fr/ia-remplacement-developpeurs-analyse-critique/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/fr/ia-remplacement-developpeurs-analyse-critique/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/ia-remplacement-developpeurs.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Étude de cas : Prelude of the Chambered Reborn</title>
        <description>
          
            Retour d&apos;expérience réel : comment j&apos;ai utilisé Claude Code pour convertir le jeu Prelude of the Chambered de Notch (Java) en TypeScript en une seule soirée.
          
        </description>
        <content:encoded><![CDATA[<p>Pour conclure cette série, quoi de mieux qu’un retour d’expérience concret ? Voici comment j’ai utilisé Claude Code pour convertir <strong>Prelude of the Chambered</strong>, le jeu de Notch (créateur de Minecraft), de Java vers TypeScript — <strong>en une seule soirée</strong>.</p>

<blockquote>
  <p>Pour découvrir le projet en détail, lisez mon article dédié : <a href="/fr/prelude-of-the-chambered-reborn/">Prelude of the Chambered Reborn : Renaissance d’un classique de Notch</a></p>
</blockquote>

<blockquote>
  <p>Voir aussi mon autre projet de jeu rétro en TypeScript : <a href="/fr/gbts-typescript-gameboy/">GBTS - Un émulateur GameBoy</a></p>
</blockquote>

<h2 id="le-défi">Le défi</h2>

<h3 id="le-projet-original">Le projet original</h3>

<p><strong>Prelude of the Chambered</strong> est un dungeon crawler créé par Notch en 48h lors de la Ludum Dare 21 en 2011. Le code original est en Java, avec un moteur de rendu <strong>raycasting software</strong> fait maison — environ 5 000 lignes de code Java réparties sur une quarantaine de fichiers.</p>

<h3 id="mon-objectif">Mon objectif</h3>

<p>Porter le jeu vers le web moderne avec :</p>
<ul>
  <li>TypeScript au lieu de Java</li>
  <li>Canvas 2D API (rendu software, comme l’original)</li>
  <li>Vite pour le build</li>
  <li>Déployable sur n’importe quel navigateur</li>
</ul>

<p>Le défi : conserver le moteur de raycasting original et son rendu pixel par pixel, sans passer par WebGL ou une bibliothèque 3D.</p>

<p><strong>Sans Claude Code</strong>, j’aurais estimé ce projet à plusieurs semaines de travail. Avec Claude Code, je me suis lancé un soir après le dîner en me disant “on verra bien jusqu’où on va”.</p>

<h2 id="une-soirée-un-jeu-complet">Une soirée, un jeu complet</h2>

<h3 id="exploration-du-code-java">Exploration du code Java</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude

&gt; @java-src/**/*.java Analyse l'architecture du jeu original.
&gt; Identifie les composants principaux et leurs responsabilités.
</code></pre></div></div>

<p>En quelques secondes, Claude a cartographié l’ensemble du projet :</p>
<ul>
  <li><strong>Art.java</strong> : Gestion des textures et sprites</li>
  <li><strong>Game.java</strong> : Boucle de jeu principale</li>
  <li><strong>Level.java</strong> : Chargement des niveaux via des images PNG</li>
  <li><strong>Screen.java</strong> : Moteur de raycasting software</li>
  <li><strong>Entity.java</strong> : Système d’entités</li>
</ul>

<h3 id="conversion-du-moteur-de-rendu">Conversion du moteur de rendu</h3>

<p>Le cœur du projet : adapter le moteur de raycasting Java vers TypeScript/Canvas 2D.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Analyse @java-src/Screen.java et @java-src/Bitmap.java
&gt; Implémente l'équivalent en TypeScript avec Canvas 2D API.
&gt; Conserve le rendu software pixel par pixel.
</code></pre></div></div>

<p>Claude a :</p>
<ol>
  <li>Compris le système de rendu par bitmap de Notch</li>
  <li>Adapté les calculs de raycasting pour TypeScript</li>
  <li>Créé une classe Bitmap compatible avec le Canvas 2D</li>
  <li>Préservé le rendu software sans GPU</li>
</ol>

<h3 id="le-système-de-niveaux-bitmap">Le système de niveaux bitmap</h3>

<p>L’architecture géniale de Notch : chaque niveau est une image PNG où chaque couleur de pixel définit un élément du jeu.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Analyse comment Level.java charge les niveaux depuis des images.
&gt; Implémente la même logique en TypeScript.
</code></pre></div></div>

<p>Claude a parfaitement reproduit le système :</p>
<ul>
  <li>Blanc = mur</li>
  <li>Bleu = eau</li>
  <li>Magenta = échelle</li>
  <li>Rouge = ennemis (avec variations selon la nuance)</li>
  <li>Canal alpha = IDs pour lier switches et portes</li>
</ul>

<h3 id="les-entités-et-le-gameplay">Les entités et le gameplay</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Analyse les ennemis dans @java-src/entities/
&gt; et implémente-les en TypeScript avec le même comportement.
</code></pre></div></div>

<p>Claude a converti méthodiquement chaque ennemi :</p>
<ul>
  <li><strong>Bat</strong> : Mouvement aléatoire</li>
  <li><strong>Ogre</strong> : Patrouille + attaque</li>
  <li><strong>Ghost</strong> : Traverse les murs</li>
  <li><strong>Eye</strong> : Attaque à distance</li>
  <li>Plus les variantes boss</li>
</ul>

<h3 id="intégration-et-debug">Intégration et debug</h3>

<p>Quelques ajustements ont été nécessaires :</p>
<ul>
  <li>Fine-tuning des collisions</li>
  <li>Adaptation de <code class="language-plaintext highlighter-rouge">Thread.sleep()</code> vers <code class="language-plaintext highlighter-rouge">requestAnimationFrame</code></li>
  <li>Gestion des inputs (Java AWT → événements DOM)</li>
</ul>

<h3 id="déploiement">Déploiement</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Configure Vite pour builder le projet et GitHub Actions pour déployer.
</code></pre></div></div>

<p>Et voilà. Projet déployé, jouable dans le navigateur.</p>

<h2 id="résultats">Résultats</h2>

<h3 id="ce-qui-a-été-accompli-en-une-soirée">Ce qui a été accompli en une soirée</h3>

<table>
  <thead>
    <tr>
      <th>Élément</th>
      <th>Résultat</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Lignes de code converties</td>
      <td>~5 000</td>
    </tr>
    <tr>
      <td>Fichiers TypeScript créés</td>
      <td>~40</td>
    </tr>
    <tr>
      <td>Temps total</td>
      <td>Une soirée</td>
    </tr>
    <tr>
      <td>Jeu fonctionnel</td>
      <td>Oui</td>
    </tr>
  </tbody>
</table>

<h3 id="la-stack-finale">La stack finale</h3>

<ul>
  <li><strong>TypeScript</strong> : Typage strict</li>
  <li><strong>Canvas 2D API</strong> : Rendu software, pas de WebGL</li>
  <li><strong>Vite</strong> : Build ultra-rapide avec HMR</li>
  <li><strong>GitHub Actions</strong> : Déploiement automatique</li>
</ul>

<h3 id="ce-que-claude-a-fait">Ce que Claude a fait</h3>

<ul>
  <li>Analyse complète du code Java original</li>
  <li>Conversion du moteur de raycasting</li>
  <li>Adaptation du système de niveaux bitmap</li>
  <li>Conversion de toutes les entités</li>
  <li>Configuration du build et déploiement</li>
  <li>Debug des problèmes rencontrés</li>
</ul>

<h3 id="ce-que-jai-fait">Ce que j’ai fait</h3>

<ul>
  <li>Direction du projet (quoi faire, dans quel ordre)</li>
  <li>Validation des choix de Claude</li>
  <li>Fine-tuning du gameplay</li>
  <li>Identification des bugs à corriger</li>
  <li>Revue finale du code</li>
</ul>

<h2 id="pourquoi-ça-a-marché">Pourquoi ça a marché</h2>

<h3 id="1-code-source-complet-disponible">1. Code source complet disponible</h3>

<p>J’avais le code Java original. Claude pouvait analyser l’existant plutôt que deviner.</p>

<h3 id="2-références-précises">2. Références précises</h3>

<p><code class="language-plaintext highlighter-rouge">@java-src/Screen.java</code> plutôt que “le fichier de rendu” — Claude savait exactement quoi analyser.</p>

<h3 id="3-architecture-fidèle">3. Architecture fidèle</h3>

<p>Plutôt que réinventer avec une lib 3D moderne, on a conservé l’approche originale : raycasting software sur Canvas 2D. Moins de décisions à prendre = conversion plus rapide.</p>

<h3 id="4-itérations-rapides">4. Itérations rapides</h3>

<p>Composant par composant, chaque étape validée avant la suivante.</p>

<h2 id="ce-que-ça-change">Ce que ça change</h2>

<p>Sans Claude Code, ce projet aurait pris <strong>plusieurs semaines</strong> :</p>
<ul>
  <li>Comprendre le moteur de raycasting : 2-3 jours</li>
  <li>Adapter les calculs Java → TypeScript : 1 semaine</li>
  <li>Débugger les différences de comportement : plusieurs jours</li>
</ul>

<p>Avec Claude Code : <strong>une soirée</strong>.</p>

<p>Ce n’est pas que Claude code plus vite — c’est qu’il élimine le temps de “compréhension” et de “traduction mentale” entre les langages.</p>

<h2 id="conclusion-de-la-série">Conclusion de la série</h2>

<p>En 20 jours, nous avons couvert :</p>

<ol>
  <li><strong>Installation et premiers pas</strong></li>
  <li><strong>Syntaxe secrète #@/!</strong></li>
  <li><strong>Workflow EPCT</strong></li>
  <li><strong>Prompt engineering</strong></li>
  <li><strong>Gestion du contexte</strong></li>
  <li><strong>Git workflows</strong></li>
  <li><strong>Permissions et sécurité</strong></li>
  <li><strong>Slash commands personnalisées</strong></li>
  <li><strong>Subagents</strong></li>
  <li><strong>Skills</strong></li>
  <li><strong>Plugins et marketplace</strong></li>
  <li><strong>Hooks</strong></li>
  <li><strong>MCP</strong></li>
  <li><strong>IDE integration</strong></li>
  <li><strong>CI/CD headless</strong></li>
  <li><strong>Facturation et coûts</strong></li>
  <li><strong>Troubleshooting</strong></li>
  <li><strong>Status line et terminal</strong></li>
  <li><strong>Comparatif des outils</strong></li>
  <li><strong>Cette étude de cas</strong></li>
</ol>

<p>Claude Code est un outil puissant qui, bien utilisé, transforme la façon dont nous développons. Ce n’est pas un remplacement du développeur — c’est un <strong>multiplicateur de productivité</strong> qui peut comprimer des semaines de travail en quelques heures.</p>

<p>Maintenant, c’est à vous de jouer !</p>

<hr />

<p><em>Merci d’avoir suivi cette série “Maîtriser Claude Code en 20 jours”. <a href="/fr/prelude-of-the-chambered-reborn/">Découvrez le projet Prelude Reborn</a> — <a href="https://lingelo.github.io/prelude-of-the-chambered-reborn/">Jouer maintenant</a></em></p>
]]></content:encoded>
        <pubDate>Tue, 30 Dec 2025 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/fr/claude-code-etude-cas-prelude/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/fr/claude-code-etude-cas-prelude/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Case Study: Prelude of the Chambered Reborn</title>
        <description>
          
            Real experience report: how I used Claude Code to convert Notch&apos;s game Prelude of the Chambered (Java) to TypeScript in a single evening.
          
        </description>
        <content:encoded><![CDATA[<p>To conclude this series, what better than a concrete experience report? Here’s how I used Claude Code to convert <strong>Prelude of the Chambered</strong>, Notch’s game (Minecraft creator), from Java to TypeScript — <strong>in a single evening</strong>.</p>

<blockquote>
  <p>To discover the project in detail, read my dedicated article: <a href="/en/prelude-of-the-chambered-reborn-typescript-web-port/">Prelude of the Chambered Reborn: Renaissance of a Notch classic</a></p>
</blockquote>

<blockquote>
  <p>Also see my other retro game project in TypeScript: <a href="/en/gbts-typescript-gameboy-development/">GBTS - A GameBoy Emulator</a></p>
</blockquote>

<h2 id="the-challenge">The Challenge</h2>

<h3 id="the-original-project">The Original Project</h3>

<p><strong>Prelude of the Chambered</strong> is a dungeon crawler created by Notch in 48h during Ludum Dare 21 in 2011. The original code is in Java, with a homemade <strong>software raycasting</strong> rendering engine — about 5,000 lines of Java code spread across forty files.</p>

<h3 id="my-goal">My Goal</h3>

<p>Port the game to the modern web with:</p>
<ul>
  <li>TypeScript instead of Java</li>
  <li>Canvas 2D API (software rendering, like the original)</li>
  <li>Vite for building</li>
  <li>Deployable on any browser</li>
</ul>

<p>The challenge: preserve the original raycasting engine and its pixel-by-pixel rendering, without using WebGL or a 3D library.</p>

<p><strong>Without Claude Code</strong>, I would have estimated this project at several weeks of work. With Claude Code, I started one evening after dinner thinking “let’s see how far we get”.</p>

<h2 id="one-evening-one-complete-game">One Evening, One Complete Game</h2>

<h3 id="exploring-the-java-code">Exploring the Java Code</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude

&gt; @java-src/**/*.java Analyze the original game architecture.
&gt; Identify the main components and their responsibilities.
</code></pre></div></div>

<p>In seconds, Claude mapped out the entire project:</p>
<ul>
  <li><strong>Art.java</strong>: Texture and sprite management</li>
  <li><strong>Game.java</strong>: Main game loop</li>
  <li><strong>Level.java</strong>: Level loading via PNG images</li>
  <li><strong>Screen.java</strong>: Software raycasting engine</li>
  <li><strong>Entity.java</strong>: Entity system</li>
</ul>

<h3 id="converting-the-rendering-engine">Converting the Rendering Engine</h3>

<p>The heart of the project: adapting the Java raycasting engine to TypeScript/Canvas 2D.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Analyze @java-src/Screen.java and @java-src/Bitmap.java
&gt; Implement the equivalent in TypeScript with Canvas 2D API.
&gt; Preserve the pixel-by-pixel software rendering.
</code></pre></div></div>

<p>Claude:</p>
<ol>
  <li>Understood Notch’s bitmap rendering system</li>
  <li>Adapted raycasting calculations for TypeScript</li>
  <li>Created a Bitmap class compatible with Canvas 2D</li>
  <li>Preserved software rendering without GPU</li>
</ol>

<h3 id="the-bitmap-level-system">The Bitmap Level System</h3>

<p>Notch’s brilliant architecture: each level is a PNG image where every pixel color defines a game element.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Analyze how Level.java loads levels from images.
&gt; Implement the same logic in TypeScript.
</code></pre></div></div>

<p>Claude perfectly reproduced the system:</p>
<ul>
  <li>White = wall</li>
  <li>Blue = water</li>
  <li>Magenta = ladder</li>
  <li>Red = enemies (with variations based on shade)</li>
  <li>Alpha channel = IDs to link switches and doors</li>
</ul>

<h3 id="entities-and-gameplay">Entities and Gameplay</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Analyze enemies in @java-src/entities/
&gt; and implement them in TypeScript with the same behavior.
</code></pre></div></div>

<p>Claude methodically converted each enemy:</p>
<ul>
  <li><strong>Bat</strong>: Random movement</li>
  <li><strong>Ogre</strong>: Patrol + attack</li>
  <li><strong>Ghost</strong>: Goes through walls</li>
  <li><strong>Eye</strong>: Ranged attack</li>
  <li>Plus boss variants</li>
</ul>

<h3 id="integration-and-debug">Integration and Debug</h3>

<p>Some adjustments were necessary:</p>
<ul>
  <li>Collision fine-tuning</li>
  <li>Adapting <code class="language-plaintext highlighter-rouge">Thread.sleep()</code> to <code class="language-plaintext highlighter-rouge">requestAnimationFrame</code></li>
  <li>Input handling (Java AWT → DOM events)</li>
</ul>

<h3 id="deployment">Deployment</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Configure Vite to build the project and GitHub Actions to deploy.
</code></pre></div></div>

<p>And there you go. Project deployed, playable in the browser.</p>

<h2 id="results">Results</h2>

<h3 id="what-was-accomplished-in-one-evening">What Was Accomplished in One Evening</h3>

<table>
  <thead>
    <tr>
      <th>Element</th>
      <th>Result</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Lines of code converted</td>
      <td>~5,000</td>
    </tr>
    <tr>
      <td>TypeScript files created</td>
      <td>~40</td>
    </tr>
    <tr>
      <td>Total time</td>
      <td>One evening</td>
    </tr>
    <tr>
      <td>Working game</td>
      <td>Yes</td>
    </tr>
  </tbody>
</table>

<h3 id="the-final-stack">The Final Stack</h3>

<ul>
  <li><strong>TypeScript</strong>: Strict typing</li>
  <li><strong>Canvas 2D API</strong>: Software rendering, no WebGL</li>
  <li><strong>Vite</strong>: Ultra-fast build with HMR</li>
  <li><strong>GitHub Actions</strong>: Automatic deployment</li>
</ul>

<h3 id="what-claude-did">What Claude Did</h3>

<ul>
  <li>Complete analysis of original Java code</li>
  <li>Raycasting engine conversion</li>
  <li>Bitmap level system adaptation</li>
  <li>Conversion of all entities</li>
  <li>Build and deployment configuration</li>
  <li>Debugging encountered problems</li>
</ul>

<h3 id="what-i-did">What I Did</h3>

<ul>
  <li>Project direction (what to do, in what order)</li>
  <li>Validating Claude’s choices</li>
  <li>Gameplay fine-tuning</li>
  <li>Identifying bugs to fix</li>
  <li>Final code review</li>
</ul>

<h2 id="why-it-worked">Why It Worked</h2>

<h3 id="1-complete-source-code-available">1. Complete Source Code Available</h3>

<p>I had the original Java code. Claude could analyze the existing code rather than guess.</p>

<h3 id="2-precise-references">2. Precise References</h3>

<p><code class="language-plaintext highlighter-rouge">@java-src/Screen.java</code> rather than “the rendering file” — Claude knew exactly what to analyze.</p>

<h3 id="3-faithful-architecture">3. Faithful Architecture</h3>

<p>Rather than reinventing with a modern 3D lib, we preserved the original approach: software raycasting on Canvas 2D. Fewer decisions to make = faster conversion.</p>

<h3 id="4-fast-iterations">4. Fast Iterations</h3>

<p>Component by component, each step validated before the next.</p>

<h2 id="what-this-changes">What This Changes</h2>

<p>Without Claude Code, this project would have taken <strong>several weeks</strong>:</p>
<ul>
  <li>Understanding the raycasting engine: 2-3 days</li>
  <li>Adapting Java → TypeScript calculations: 1 week</li>
  <li>Debugging behavior differences: several days</li>
</ul>

<p>With Claude Code: <strong>one evening</strong>.</p>

<p>It’s not that Claude codes faster — it’s that it eliminates the “understanding” and “mental translation” time between languages.</p>

<h2 id="series-conclusion">Series Conclusion</h2>

<p>In 20 days, we covered:</p>

<ol>
  <li><strong>Installation and first steps</strong></li>
  <li><strong>Secret syntax #@/!</strong></li>
  <li><strong>EPCT Workflow</strong></li>
  <li><strong>Prompt engineering</strong></li>
  <li><strong>Context management</strong></li>
  <li><strong>Git workflows</strong></li>
  <li><strong>Permissions and security</strong></li>
  <li><strong>Custom slash commands</strong></li>
  <li><strong>Subagents</strong></li>
  <li><strong>Skills</strong></li>
  <li><strong>Plugins and marketplace</strong></li>
  <li><strong>Hooks</strong></li>
  <li><strong>MCP</strong></li>
  <li><strong>IDE integration</strong></li>
  <li><strong>CI/CD headless</strong></li>
  <li><strong>Billing and costs</strong></li>
  <li><strong>Troubleshooting</strong></li>
  <li><strong>Status line and terminal</strong></li>
  <li><strong>Tool comparison</strong></li>
  <li><strong>This case study</strong></li>
</ol>

<p>Claude Code is a powerful tool that, when used well, transforms how we develop. It’s not a developer replacement — it’s a <strong>productivity multiplier</strong> that can compress weeks of work into a few hours.</p>

<p>Now it’s your turn!</p>

<hr />

<p><em>Thank you for following this “Master Claude Code in 20 Days” series. <a href="/en/prelude-of-the-chambered-reborn-typescript-web-port/">Discover the Prelude Reborn project</a> — <a href="https://lingelo.github.io/prelude-of-the-chambered-reborn/">Play now</a></em></p>
]]></content:encoded>
        <pubDate>Tue, 30 Dec 2025 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/en/claude-code-case-study-prelude-en/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/en/claude-code-case-study-prelude-en/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Claude Code vs Cursor vs GitHub Copilot</title>
        <description>
          
            Comparatif détaillé Claude Code, Cursor et GitHub Copilot : fonctionnalités, prix, cas d&apos;usage et recommandations pour choisir le bon outil.
          
        </description>
        <content:encoded><![CDATA[<p>Le marché des assistants IA pour développeurs explose. Claude Code, Cursor et GitHub Copilot sont les trois solutions majeures. Lequel choisir ? Comparons objectivement.</p>

<blockquote>
  <p>Pour un contexte plus large sur l’état de l’IA en développement, voir mon article <a href="/fr/ia-et-developpement-entre-promesses-et-realites-un-etat-des-lieux-en-2025/">IA et développement en 2025</a>. Et si vous envisagez des alternatives locales, consultez <a href="/fr/openai-gpt-oss-ollama-modeles-proprietaires-open-source/">OpenAI GPT OSS vs Ollama</a>.</p>
</blockquote>

<h2 id="vue-densemble">Vue d’ensemble</h2>

<table>
  <thead>
    <tr>
      <th>Critère</th>
      <th>Claude Code</th>
      <th>Cursor</th>
      <th>GitHub Copilot</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Type</td>
      <td>CLI + Agent</td>
      <td>IDE complet</td>
      <td>Extension IDE</td>
    </tr>
    <tr>
      <td>Modèle IA</td>
      <td>Claude (Anthropic)</td>
      <td>Multiple (dont Claude)</td>
      <td>GPT-4/Codex</td>
    </tr>
    <tr>
      <td>Prix</td>
      <td>$100-200/mois (Max)</td>
      <td>$20/mois</td>
      <td>$10-19/mois</td>
    </tr>
    <tr>
      <td>Plateforme</td>
      <td>Terminal</td>
      <td>Fork VS Code</td>
      <td>VS Code, JetBrains</td>
    </tr>
  </tbody>
</table>

<h2 id="claude-code">Claude Code</h2>

<h3 id="forces">Forces</h3>

<ul>
  <li><strong>Agentic</strong> : Peut planifier et exécuter des tâches complexes de bout en bout</li>
  <li><strong>Contexte projet</strong> : CLAUDE.md, rules, mémoire hiérarchique</li>
  <li><strong>Extensible</strong> : Hooks, skills, subagents, MCP</li>
  <li><strong>Terminal-native</strong> : Rapide, scriptable, intégrable CI/CD</li>
  <li><strong>Autonomie</strong> : Peut travailler sur plusieurs fichiers en séquence</li>
</ul>

<h3 id="faiblesses">Faiblesses</h3>

<ul>
  <li><strong>Courbe d’apprentissage</strong> : Syntaxe #@/! à maîtriser</li>
  <li><strong>Prix</strong> : Plus cher que les alternatives</li>
  <li><strong>Pas d’IDE intégré</strong> : Nécessite votre éditeur séparé</li>
  <li><strong>Moins visuel</strong> : Pas de diff graphique intégré</li>
</ul>

<h3 id="idéal-pour">Idéal pour</h3>

<ul>
  <li>Développeurs terminal-first</li>
  <li>Projets complexes multi-fichiers</li>
  <li>Automatisation CI/CD</li>
  <li>Utilisateurs avancés cherchant la puissance</li>
</ul>

<h2 id="cursor">Cursor</h2>

<h3 id="forces-1">Forces</h3>

<ul>
  <li><strong>IDE complet</strong> : Fork VS Code avec IA native</li>
  <li><strong>Multi-modèle</strong> : GPT-4, Claude, modèles locaux</li>
  <li><strong>Visuel</strong> : Diffs intégrés, chat contextuel</li>
  <li><strong>Composer</strong> : Mode agent pour tâches complexes</li>
  <li><strong>Accessibilité</strong> : Interface familière VS Code</li>
</ul>

<h3 id="faiblesses-1">Faiblesses</h3>

<ul>
  <li><strong>Verrouillé</strong> : Doit utiliser Cursor comme IDE</li>
  <li><strong>Limité terminal</strong> : Pas d’usage CLI pur</li>
  <li><strong>Dépendance</strong> : Fork qui peut diverger de VS Code</li>
  <li><strong>Moins extensible</strong> : Pas de système de plugins aussi riche</li>
</ul>

<h3 id="idéal-pour-1">Idéal pour</h3>

<ul>
  <li>Développeurs VS Code cherchant une intégration IA native</li>
  <li>Équipes voulant un outil unifié</li>
  <li>Utilisateurs préférant l’interface graphique</li>
  <li>Projets où la visualisation est importante</li>
</ul>

<h2 id="github-copilot">GitHub Copilot</h2>

<h3 id="forces-2">Forces</h3>

<ul>
  <li><strong>Intégration GitHub</strong> : PRs, Issues, Actions natifs</li>
  <li><strong>Prix accessible</strong> : $10/mois individuel</li>
  <li><strong>Ubiquité</strong> : Disponible dans tous les IDE majeurs</li>
  <li><strong>Complétion en temps réel</strong> : Suggestions pendant la frappe</li>
  <li><strong>Copilot Chat</strong> : Conversation contextuelle</li>
</ul>

<h3 id="faiblesses-2">Faiblesses</h3>

<ul>
  <li><strong>Moins agentic</strong> : Pas de planification autonome</li>
  <li><strong>Contexte limité</strong> : Moins bon pour les projets larges</li>
  <li><strong>Microsoft-dépendant</strong> : Lié à l’écosystème Microsoft</li>
  <li><strong>Moins personnalisable</strong> : Pas de rules, hooks, etc.</li>
</ul>

<h3 id="idéal-pour-2">Idéal pour</h3>

<ul>
  <li>Débutants en assistants IA</li>
  <li>Budget limité</li>
  <li>Projets GitHub-centric</li>
  <li>Complétion de code rapide</li>
</ul>

<h2 id="comparaison-détaillée">Comparaison détaillée</h2>

<h3 id="compréhension-du-contexte">Compréhension du contexte</h3>

<table>
  <thead>
    <tr>
      <th>Aspect</th>
      <th>Claude Code</th>
      <th>Cursor</th>
      <th>Copilot</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Fichier courant</td>
      <td>✅</td>
      <td>✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td>Projet entier</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td>Instructions projet</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td>Dépendances</td>
      <td>✅✅</td>
      <td>✅✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td>Git history</td>
      <td>✅✅</td>
      <td>✅</td>
      <td>✅✅✅</td>
    </tr>
  </tbody>
</table>

<h3 id="capacités-agentiques">Capacités agentiques</h3>

<table>
  <thead>
    <tr>
      <th>Capacité</th>
      <th>Claude Code</th>
      <th>Cursor</th>
      <th>Copilot</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Plan multi-étapes</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Exécution autonome</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Modification multi-fichiers</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td>Tests automatiques</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td>Debugging assisté</td>
      <td>✅✅</td>
      <td>✅✅</td>
      <td>✅</td>
    </tr>
  </tbody>
</table>

<h3 id="personnalisation">Personnalisation</h3>

<table>
  <thead>
    <tr>
      <th>Aspect</th>
      <th>Claude Code</th>
      <th>Cursor</th>
      <th>Copilot</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Rules personnalisées</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Hooks/Automatisation</td>
      <td>✅✅✅</td>
      <td>✅</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Subagents</td>
      <td>✅✅✅</td>
      <td>❌</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Intégrations externes</td>
      <td>✅✅✅ (MCP)</td>
      <td>✅</td>
      <td>✅ (GitHub)</td>
    </tr>
    <tr>
      <td>Plugins</td>
      <td>✅✅✅</td>
      <td>✅ (extensions VS Code)</td>
      <td>✅</td>
    </tr>
  </tbody>
</table>

<h3 id="prix-et-licences">Prix et licences</h3>

<table>
  <thead>
    <tr>
      <th>Plan</th>
      <th>Claude Code</th>
      <th>Cursor</th>
      <th>Copilot</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Gratuit</td>
      <td>Limité (API)</td>
      <td>Limité</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Individuel</td>
      <td>$100/mois (Max 5x)</td>
      <td>$20/mois</td>
      <td>$10/mois</td>
    </tr>
    <tr>
      <td>Pro/Business</td>
      <td>$200/mois (Max 20x)</td>
      <td>$40/mois</td>
      <td>$19/mois</td>
    </tr>
    <tr>
      <td>Enterprise</td>
      <td>Sur devis</td>
      <td>Sur devis</td>
      <td>$39/mois</td>
    </tr>
  </tbody>
</table>

<h2 id="workflows-comparés">Workflows comparés</h2>

<h3 id="refactoring-dun-module">Refactoring d’un module</h3>

<p><strong>Claude Code</strong> :</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; ultrathink. Refactorise le module auth pour utiliser JWT.
&gt; Assure-toi que tous les tests passent.
</code></pre></div></div>
<p>→ Claude planifie, modifie les fichiers, exécute les tests, corrige si nécessaire.</p>

<p><strong>Cursor</strong> :</p>
<ol>
  <li>Ouvrir Composer</li>
  <li>Décrire le refactoring</li>
  <li>Review les changements proposés</li>
  <li>Accepter/ajuster</li>
  <li>Lancer les tests manuellement</li>
</ol>

<p><strong>Copilot</strong> :</p>
<ol>
  <li>Ouvrir Copilot Chat</li>
  <li>Demander des suggestions de refactoring</li>
  <li>Appliquer fichier par fichier</li>
  <li>Lancer les tests manuellement</li>
</ol>

<h3 id="fix-dun-bug">Fix d’un bug</h3>

<p><strong>Claude Code</strong> :</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Le test UserService.test.ts échoue ligne 45.
&gt; Trouve et corrige le bug.
</code></pre></div></div>

<p><strong>Cursor</strong> :</p>
<ol>
  <li>Clic droit sur l’erreur</li>
  <li>“Fix with AI”</li>
  <li>Review la suggestion</li>
  <li>Appliquer</li>
</ol>

<p><strong>Copilot</strong> :</p>
<ol>
  <li>Sélectionner le code problématique</li>
  <li><code class="language-plaintext highlighter-rouge">/fix</code> dans le chat</li>
  <li>Appliquer la suggestion</li>
</ol>

<h3 id="nouveau-projet">Nouveau projet</h3>

<p><strong>Claude Code</strong> :</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Crée une API REST avec Express, TypeScript, Prisma.
&gt; Structure selon les best practices.
&gt; Ajoute l'authentification JWT.
</code></pre></div></div>

<p><strong>Cursor</strong> :</p>
<ol>
  <li>Composer mode</li>
  <li>Décrire l’architecture</li>
  <li>Générer fichier par fichier</li>
  <li>Ajuster au fur et à mesure</li>
</ol>

<p><strong>Copilot</strong> :</p>
<ol>
  <li>Créer les fichiers manuellement</li>
  <li>Utiliser les suggestions pour le contenu</li>
  <li>Copilot Chat pour les questions</li>
</ol>

<h2 id="quand-utiliser-quoi-">Quand utiliser quoi ?</h2>

<h3 id="utilisez-claude-code-si-">Utilisez Claude Code si :</h3>

<ul>
  <li>Vous êtes à l’aise avec le terminal</li>
  <li>Vous travaillez sur des projets complexes</li>
  <li>Vous voulez automatiser (CI/CD, scripts)</li>
  <li>Vous avez besoin d’autonomie de l’IA</li>
  <li>Budget n’est pas la contrainte principale</li>
</ul>

<h3 id="utilisez-cursor-si-">Utilisez Cursor si :</h3>

<ul>
  <li>Vous préférez VS Code</li>
  <li>Vous voulez une expérience intégrée</li>
  <li>Vous travaillez visuellement (diffs)</li>
  <li>Vous voulez changer de modèle facilement</li>
  <li>Budget modéré</li>
</ul>

<h3 id="utilisez-copilot-si-">Utilisez Copilot si :</h3>

<ul>
  <li>Vous débutez avec l’IA</li>
  <li>Budget limité</li>
  <li>Vous êtes dans l’écosystème GitHub</li>
  <li>Vous voulez des suggestions temps réel</li>
  <li>Vous utilisez divers IDE</li>
</ul>

<h2 id="combinaison-recommandée">Combinaison recommandée</h2>

<p>Ma stack personnelle :</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>┌─────────────────────────────────────────┐
│ Claude Code (terminal)                  │
│ - Tâches complexes                      │
│ - Automatisation                        │
│ - CI/CD                                 │
├─────────────────────────────────────────┤
│ VS Code + Copilot                       │
│ - Édition quotidienne                   │
│ - Complétion temps réel                 │
│ - Quick fixes                           │
└─────────────────────────────────────────┘
</code></pre></div></div>

<p>Cette combinaison offre :</p>
<ul>
  <li>La puissance de Claude pour les tâches lourdes</li>
  <li>La rapidité de Copilot pour le quotidien</li>
  <li>Le meilleur des deux mondes</li>
</ul>

<h2 id="évolution-du-marché">Évolution du marché</h2>

<h3 id="tendances-2024-2025">Tendances 2024-2025</h3>

<ul>
  <li><strong>Plus d’autonomie</strong> : Les outils deviennent plus agentiques</li>
  <li><strong>Multi-modèle</strong> : Choix du LLM selon la tâche</li>
  <li><strong>Intégration</strong> : Moins de friction entre outils</li>
  <li><strong>Spécialisation</strong> : Outils par domaine (web, mobile, data)</li>
</ul>

<h3 id="ce-qui-arrive">Ce qui arrive</h3>

<ul>
  <li>Claude Code continue d’ajouter des fonctionnalités agentiques</li>
  <li>Cursor pousse sur l’intégration multi-modèle</li>
  <li>Copilot évolue vers plus d’autonomie (Copilot Workspace)</li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>Il n’y a pas de “meilleur” outil universel. Le choix dépend de :</p>

<ol>
  <li><strong>Votre workflow</strong> : Terminal vs GUI</li>
  <li><strong>Votre budget</strong> : $10 à $200/mois</li>
  <li><strong>Vos besoins</strong> : Complétion vs Agent complet</li>
  <li><strong>Votre écosystème</strong> : GitHub, Anthropic, ou neutre</li>
</ol>

<p>Mon conseil : <strong>essayez les trois</strong> avec leurs versions d’essai, puis choisissez (ou combinez) selon votre style.</p>

<h2 id="ce-qui-vous-attend-demain">Ce qui vous attend demain</h2>

<p>Dans le <strong>Jour 20</strong>, nous terminerons avec une <strong>étude de cas complète</strong> : comment j’ai utilisé Claude Code pour créer Prelude of the Chambered Reborn.</p>

<hr />

<p><em>Cet article fait partie de la série “Maîtriser Claude Code en 20 jours”. <a href="/fr/claude-code-status-line-terminal/">Jour 18 : Status line et terminal</a></em></p>
]]></content:encoded>
        <pubDate>Mon, 29 Dec 2025 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/fr/claude-code-vs-cursor-vs-copilot/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/fr/claude-code-vs-cursor-vs-copilot/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Claude Code vs Cursor vs GitHub Copilot</title>
        <description>
          
            Detailed comparison of Claude Code, Cursor and GitHub Copilot: features, pricing, use cases and recommendations to choose the right tool.
          
        </description>
        <content:encoded><![CDATA[<p>The AI assistant market for developers is exploding. Claude Code, Cursor, and GitHub Copilot are the three major solutions. Which one to choose? Let’s compare objectively.</p>

<blockquote>
  <p>For broader context on the state of AI in development, see my article <a href="/en/ai-development-between-promises-realities-2025-state/">AI and Development in 2025</a>. And if you’re considering local alternatives, check out <a href="/en/openai-gpt-oss-ollama-proprietary-models-open-source-transition/">OpenAI GPT OSS vs Ollama</a>.</p>
</blockquote>

<h2 id="overview">Overview</h2>

<table>
  <thead>
    <tr>
      <th>Criteria</th>
      <th>Claude Code</th>
      <th>Cursor</th>
      <th>GitHub Copilot</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Type</td>
      <td>CLI + Agent</td>
      <td>Full IDE</td>
      <td>IDE Extension</td>
    </tr>
    <tr>
      <td>AI Model</td>
      <td>Claude (Anthropic)</td>
      <td>Multiple (including Claude)</td>
      <td>GPT-4/Codex</td>
    </tr>
    <tr>
      <td>Price</td>
      <td>$100-200/month (Max)</td>
      <td>$20/month</td>
      <td>$10-19/month</td>
    </tr>
    <tr>
      <td>Platform</td>
      <td>Terminal</td>
      <td>VS Code Fork</td>
      <td>VS Code, JetBrains</td>
    </tr>
  </tbody>
</table>

<h2 id="claude-code">Claude Code</h2>

<h3 id="strengths">Strengths</h3>

<ul>
  <li><strong>Agentic</strong>: Can plan and execute complex tasks end-to-end</li>
  <li><strong>Project context</strong>: CLAUDE.md, rules, hierarchical memory</li>
  <li><strong>Extensible</strong>: Hooks, skills, subagents, MCP</li>
  <li><strong>Terminal-native</strong>: Fast, scriptable, CI/CD integrable</li>
  <li><strong>Autonomy</strong>: Can work on multiple files in sequence</li>
</ul>

<h3 id="weaknesses">Weaknesses</h3>

<ul>
  <li><strong>Learning curve</strong>: #@/! syntax to master</li>
  <li><strong>Price</strong>: More expensive than alternatives</li>
  <li><strong>No integrated IDE</strong>: Requires your separate editor</li>
  <li><strong>Less visual</strong>: No integrated graphical diff</li>
</ul>

<h3 id="ideal-for">Ideal for</h3>

<ul>
  <li>Terminal-first developers</li>
  <li>Complex multi-file projects</li>
  <li>CI/CD automation</li>
  <li>Advanced users seeking power</li>
</ul>

<h2 id="cursor">Cursor</h2>

<h3 id="strengths-1">Strengths</h3>

<ul>
  <li><strong>Full IDE</strong>: VS Code fork with native AI</li>
  <li><strong>Multi-model</strong>: GPT-4, Claude, local models</li>
  <li><strong>Visual</strong>: Integrated diffs, contextual chat</li>
  <li><strong>Composer</strong>: Agent mode for complex tasks</li>
  <li><strong>Accessibility</strong>: Familiar VS Code interface</li>
</ul>

<h3 id="weaknesses-1">Weaknesses</h3>

<ul>
  <li><strong>Locked in</strong>: Must use Cursor as IDE</li>
  <li><strong>Limited terminal</strong>: No pure CLI usage</li>
  <li><strong>Dependency</strong>: Fork that may diverge from VS Code</li>
  <li><strong>Less extensible</strong>: Not as rich plugin system</li>
</ul>

<h3 id="ideal-for-1">Ideal for</h3>

<ul>
  <li>VS Code developers seeking native AI integration</li>
  <li>Teams wanting a unified tool</li>
  <li>Users preferring graphical interface</li>
  <li>Projects where visualization is important</li>
</ul>

<h2 id="github-copilot">GitHub Copilot</h2>

<h3 id="strengths-2">Strengths</h3>

<ul>
  <li><strong>GitHub integration</strong>: Native PRs, Issues, Actions</li>
  <li><strong>Accessible price</strong>: $10/month individual</li>
  <li><strong>Ubiquity</strong>: Available in all major IDEs</li>
  <li><strong>Real-time completion</strong>: Suggestions while typing</li>
  <li><strong>Copilot Chat</strong>: Contextual conversation</li>
</ul>

<h3 id="weaknesses-2">Weaknesses</h3>

<ul>
  <li><strong>Less agentic</strong>: No autonomous planning</li>
  <li><strong>Limited context</strong>: Less suitable for large projects</li>
  <li><strong>Microsoft-dependent</strong>: Tied to Microsoft ecosystem</li>
  <li><strong>Less customizable</strong>: No rules, hooks, etc.</li>
</ul>

<h3 id="ideal-for-2">Ideal for</h3>

<ul>
  <li>AI assistant beginners</li>
  <li>Limited budget</li>
  <li>GitHub-centric projects</li>
  <li>Quick code completion</li>
</ul>

<h2 id="detailed-comparison">Detailed Comparison</h2>

<h3 id="context-understanding">Context Understanding</h3>

<table>
  <thead>
    <tr>
      <th>Aspect</th>
      <th>Claude Code</th>
      <th>Cursor</th>
      <th>Copilot</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Current file</td>
      <td>✅</td>
      <td>✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td>Entire project</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td>Project instructions</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td>Dependencies</td>
      <td>✅✅</td>
      <td>✅✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td>Git history</td>
      <td>✅✅</td>
      <td>✅</td>
      <td>✅✅✅</td>
    </tr>
  </tbody>
</table>

<h3 id="agentic-capabilities">Agentic Capabilities</h3>

<table>
  <thead>
    <tr>
      <th>Capability</th>
      <th>Claude Code</th>
      <th>Cursor</th>
      <th>Copilot</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Multi-step planning</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Autonomous execution</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Multi-file modification</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td>Automatic testing</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td>Assisted debugging</td>
      <td>✅✅</td>
      <td>✅✅</td>
      <td>✅</td>
    </tr>
  </tbody>
</table>

<h3 id="customization">Customization</h3>

<table>
  <thead>
    <tr>
      <th>Aspect</th>
      <th>Claude Code</th>
      <th>Cursor</th>
      <th>Copilot</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Custom rules</td>
      <td>✅✅✅</td>
      <td>✅✅</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Hooks/Automation</td>
      <td>✅✅✅</td>
      <td>✅</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Subagents</td>
      <td>✅✅✅</td>
      <td>❌</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>External integrations</td>
      <td>✅✅✅ (MCP)</td>
      <td>✅</td>
      <td>✅ (GitHub)</td>
    </tr>
    <tr>
      <td>Plugins</td>
      <td>✅✅✅</td>
      <td>✅ (VS Code extensions)</td>
      <td>✅</td>
    </tr>
  </tbody>
</table>

<h3 id="pricing-and-licenses">Pricing and Licenses</h3>

<table>
  <thead>
    <tr>
      <th>Plan</th>
      <th>Claude Code</th>
      <th>Cursor</th>
      <th>Copilot</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Free</td>
      <td>Limited (API)</td>
      <td>Limited</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Individual</td>
      <td>$100/month (Max 5x)</td>
      <td>$20/month</td>
      <td>$10/month</td>
    </tr>
    <tr>
      <td>Pro/Business</td>
      <td>$200/month (Max 20x)</td>
      <td>$40/month</td>
      <td>$19/month</td>
    </tr>
    <tr>
      <td>Enterprise</td>
      <td>Custom</td>
      <td>Custom</td>
      <td>$39/month</td>
    </tr>
  </tbody>
</table>

<h2 id="compared-workflows">Compared Workflows</h2>

<h3 id="module-refactoring">Module Refactoring</h3>

<p><strong>Claude Code</strong>:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; ultrathink. Refactor the auth module to use JWT.
&gt; Make sure all tests pass.
</code></pre></div></div>
<p>→ Claude plans, modifies files, runs tests, fixes if needed.</p>

<p><strong>Cursor</strong>:</p>
<ol>
  <li>Open Composer</li>
  <li>Describe the refactoring</li>
  <li>Review proposed changes</li>
  <li>Accept/adjust</li>
  <li>Run tests manually</li>
</ol>

<p><strong>Copilot</strong>:</p>
<ol>
  <li>Open Copilot Chat</li>
  <li>Ask for refactoring suggestions</li>
  <li>Apply file by file</li>
  <li>Run tests manually</li>
</ol>

<h3 id="bug-fix">Bug Fix</h3>

<p><strong>Claude Code</strong>:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; The test UserService.test.ts fails at line 45.
&gt; Find and fix the bug.
</code></pre></div></div>

<p><strong>Cursor</strong>:</p>
<ol>
  <li>Right-click on error</li>
  <li>“Fix with AI”</li>
  <li>Review suggestion</li>
  <li>Apply</li>
</ol>

<p><strong>Copilot</strong>:</p>
<ol>
  <li>Select problematic code</li>
  <li><code class="language-plaintext highlighter-rouge">/fix</code> in chat</li>
  <li>Apply suggestion</li>
</ol>

<h3 id="new-project">New Project</h3>

<p><strong>Claude Code</strong>:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Create a REST API with Express, TypeScript, Prisma.
&gt; Structure according to best practices.
&gt; Add JWT authentication.
</code></pre></div></div>

<p><strong>Cursor</strong>:</p>
<ol>
  <li>Composer mode</li>
  <li>Describe architecture</li>
  <li>Generate file by file</li>
  <li>Adjust as you go</li>
</ol>

<p><strong>Copilot</strong>:</p>
<ol>
  <li>Create files manually</li>
  <li>Use suggestions for content</li>
  <li>Copilot Chat for questions</li>
</ol>

<h2 id="when-to-use-what">When to Use What?</h2>

<h3 id="use-claude-code-if">Use Claude Code if:</h3>

<ul>
  <li>You’re comfortable with terminal</li>
  <li>You work on complex projects</li>
  <li>You want automation (CI/CD, scripts)</li>
  <li>You need AI autonomy</li>
  <li>Budget is not the main constraint</li>
</ul>

<h3 id="use-cursor-if">Use Cursor if:</h3>

<ul>
  <li>You prefer VS Code</li>
  <li>You want an integrated experience</li>
  <li>You work visually (diffs)</li>
  <li>You want to switch models easily</li>
  <li>Moderate budget</li>
</ul>

<h3 id="use-copilot-if">Use Copilot if:</h3>

<ul>
  <li>You’re new to AI</li>
  <li>Limited budget</li>
  <li>You’re in the GitHub ecosystem</li>
  <li>You want real-time suggestions</li>
  <li>You use various IDEs</li>
</ul>

<h2 id="recommended-combination">Recommended Combination</h2>

<p>My personal stack:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>┌─────────────────────────────────────────┐
│ Claude Code (terminal)                  │
│ - Complex tasks                         │
│ - Automation                            │
│ - CI/CD                                 │
├─────────────────────────────────────────┤
│ VS Code + Copilot                       │
│ - Daily editing                         │
│ - Real-time completion                  │
│ - Quick fixes                           │
└─────────────────────────────────────────┘
</code></pre></div></div>

<p>This combination offers:</p>
<ul>
  <li>Claude’s power for heavy tasks</li>
  <li>Copilot’s speed for daily work</li>
  <li>Best of both worlds</li>
</ul>

<h2 id="market-evolution">Market Evolution</h2>

<h3 id="2024-2025-trends">2024-2025 Trends</h3>

<ul>
  <li><strong>More autonomy</strong>: Tools becoming more agentic</li>
  <li><strong>Multi-model</strong>: LLM choice per task</li>
  <li><strong>Integration</strong>: Less friction between tools</li>
  <li><strong>Specialization</strong>: Tools by domain (web, mobile, data)</li>
</ul>

<h3 id="whats-coming">What’s Coming</h3>

<ul>
  <li>Claude Code continues adding agentic features</li>
  <li>Cursor pushes multi-model integration</li>
  <li>Copilot evolves toward more autonomy (Copilot Workspace)</li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>There’s no universal “best” tool. The choice depends on:</p>

<ol>
  <li><strong>Your workflow</strong>: Terminal vs GUI</li>
  <li><strong>Your budget</strong>: $10 to $200/month</li>
  <li><strong>Your needs</strong>: Completion vs Full Agent</li>
  <li><strong>Your ecosystem</strong>: GitHub, Anthropic, or neutral</li>
</ol>

<p>My advice: <strong>try all three</strong> with their trial versions, then choose (or combine) according to your style.</p>

<h2 id="whats-coming-tomorrow">What’s Coming Tomorrow</h2>

<p>In <strong>Day 20</strong>, we’ll finish with a <strong>complete case study</strong>: how I used Claude Code to create Prelude of the Chambered Reborn.</p>

<hr />

<p><em>This article is part of the “Master Claude Code in 20 Days” series. <a href="/en/claude-code-status-line-terminal/">Day 18: Status line and terminal</a></em></p>
]]></content:encoded>
        <pubDate>Mon, 29 Dec 2025 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/en/claude-code-vs-cursor-vs-copilot-en/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/en/claude-code-vs-cursor-vs-copilot-en/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Status line et personnalisation du terminal</title>
        <description>
          
            Personnalisez Claude Code : status line, mode vim, thèmes de terminal, raccourcis clavier et configuration avancée de l&apos;interface.
          
        </description>
        <content:encoded><![CDATA[<p>Claude Code s’exécute dans votre terminal. Saviez-vous que vous pouvez personnaliser son apparence et son comportement ? Voyons comment adapter l’interface à vos préférences.</p>

<h2 id="la-status-line">La Status Line</h2>

<h3 id="quest-ce-que-la-status-line-">Qu’est-ce que la status line ?</h3>

<p>La barre en bas de l’écran qui affiche :</p>
<ul>
  <li>Le modèle actif</li>
  <li>Le nombre de tokens utilisés</li>
  <li>Le coût de la session</li>
  <li>Le statut de connexion</li>
</ul>

<h3 id="personnaliser-la-status-line">Personnaliser la status line</h3>

<p>Via la commande <code class="language-plaintext highlighter-rouge">/config</code> :</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/config
</code></pre></div></div>

<p>Options de status line :</p>
<ul>
  <li><strong>Minimal</strong> : Juste le modèle</li>
  <li><strong>Standard</strong> : Modèle + tokens</li>
  <li><strong>Detailed</strong> : Tout (modèle, tokens, coût, latence)</li>
  <li><strong>Hidden</strong> : Pas de status line</li>
</ul>

<h3 id="configuration-dans-settings">Configuration dans settings</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"statusLine"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"style"</span><span class="p">:</span><span class="w"> </span><span class="s2">"detailed"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showCost"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showTokens"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showModel"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showLatency"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h2 id="le-mode-vim">Le Mode Vim</h2>

<h3 id="activer-le-mode-vim">Activer le mode vim</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/vim
</code></pre></div></div>

<p>Ou au lancement :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">--vim</span>
</code></pre></div></div>

<h3 id="raccourcis-vim-disponibles">Raccourcis vim disponibles</h3>

<table>
  <thead>
    <tr>
      <th>Mode</th>
      <th>Touche</th>
      <th>Action</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Normal</td>
      <td><code class="language-plaintext highlighter-rouge">i</code></td>
      <td>Mode insertion</td>
    </tr>
    <tr>
      <td>Normal</td>
      <td><code class="language-plaintext highlighter-rouge">v</code></td>
      <td>Mode visuel</td>
    </tr>
    <tr>
      <td>Normal</td>
      <td><code class="language-plaintext highlighter-rouge">dd</code></td>
      <td>Supprimer la ligne</td>
    </tr>
    <tr>
      <td>Normal</td>
      <td><code class="language-plaintext highlighter-rouge">yy</code></td>
      <td>Copier la ligne</td>
    </tr>
    <tr>
      <td>Normal</td>
      <td><code class="language-plaintext highlighter-rouge">p</code></td>
      <td>Coller</td>
    </tr>
    <tr>
      <td>Normal</td>
      <td><code class="language-plaintext highlighter-rouge">/</code></td>
      <td>Rechercher</td>
    </tr>
    <tr>
      <td>Insert</td>
      <td><code class="language-plaintext highlighter-rouge">Esc</code></td>
      <td>Mode normal</td>
    </tr>
  </tbody>
</table>

<h3 id="configuration-vim">Configuration vim</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"editor"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"mode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"vim"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"lineNumbers"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"relativNumbers"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h2 id="thèmes-et-couleurs">Thèmes et couleurs</h2>

<h3 id="thèmes-intégrés">Thèmes intégrés</h3>

<p>Claude Code s’adapte au thème de votre terminal. Pour forcer un thème :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">export </span><span class="nv">CLAUDE_CODE_THEME</span><span class="o">=</span>dark
</code></pre></div></div>

<p>Options :</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">dark</code> : Fond sombre</li>
  <li><code class="language-plaintext highlighter-rouge">light</code> : Fond clair</li>
  <li><code class="language-plaintext highlighter-rouge">auto</code> : Détection automatique</li>
</ul>

<h3 id="couleurs-personnalisées">Couleurs personnalisées</h3>

<p>Dans votre fichier de configuration terminal (.zshrc, .bashrc) :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Couleurs Claude Code</span>
<span class="nb">export </span><span class="nv">CLAUDE_CODE_COLOR_PRIMARY</span><span class="o">=</span><span class="s2">"#00ff00"</span>
<span class="nb">export </span><span class="nv">CLAUDE_CODE_COLOR_SECONDARY</span><span class="o">=</span><span class="s2">"#0066ff"</span>
<span class="nb">export </span><span class="nv">CLAUDE_CODE_COLOR_ERROR</span><span class="o">=</span><span class="s2">"#ff0000"</span>
<span class="nb">export </span><span class="nv">CLAUDE_CODE_COLOR_SUCCESS</span><span class="o">=</span><span class="s2">"#00ff00"</span>
</code></pre></div></div>

<h2 id="raccourcis-clavier">Raccourcis clavier</h2>

<h3 id="raccourcis-par-défaut">Raccourcis par défaut</h3>

<table>
  <thead>
    <tr>
      <th>Raccourci</th>
      <th>Action</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Enter</code></td>
      <td>Envoyer le message</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Shift+Enter</code></td>
      <td>Nouvelle ligne</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Ctrl+C</code></td>
      <td>Annuler/Interrompre</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Ctrl+L</code></td>
      <td>Effacer l’écran</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Esc Esc</code></td>
      <td>Menu rewind</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Shift+Tab</code></td>
      <td>Mode Accept Edits</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">↑</code> / <code class="language-plaintext highlighter-rouge">↓</code></td>
      <td>Historique des prompts</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Tab</code></td>
      <td>Autocomplétion</td>
    </tr>
  </tbody>
</table>

<h3 id="personnaliser-les-raccourcis">Personnaliser les raccourcis</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"keybindings"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"submit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Enter"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"newLine"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Shift+Enter"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"cancel"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Ctrl+C"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"clearScreen"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Ctrl+L"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"rewind"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Esc Esc"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"acceptEdits"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Shift+Tab"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"history.up"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ArrowUp"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"history.down"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ArrowDown"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h2 id="autocomplétion">Autocomplétion</h2>

<h3 id="complétion-des-fichiers">Complétion des fichiers</h3>

<p>Tapez <code class="language-plaintext highlighter-rouge">@</code> puis Tab pour voir les fichiers disponibles :</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>@sr[Tab]
→ @src/
→ @src/api/
→ @src/components/
</code></pre></div></div>

<h3 id="complétion-des-commandes">Complétion des commandes</h3>

<p>Tapez <code class="language-plaintext highlighter-rouge">/</code> puis Tab :</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/co[Tab]
→ /compact
→ /config
→ /cost
</code></pre></div></div>

<h3 id="complétion-intelligente">Complétion intelligente</h3>

<p>Claude Code propose des complétions basées sur :</p>
<ul>
  <li>Le contexte actuel</li>
  <li>L’historique des commandes</li>
  <li>Les fichiers du projet</li>
</ul>

<h2 id="configuration-avancée-du-terminal">Configuration avancée du terminal</h2>

<h3 id="taille-de-lhistorique">Taille de l’historique</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"history"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"maxSize"</span><span class="p">:</span><span class="w"> </span><span class="mi">1000</span><span class="p">,</span><span class="w">
    </span><span class="nl">"saveToDisk"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="scroll-buffer">Scroll buffer</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"terminal"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"scrollback"</span><span class="p">:</span><span class="w"> </span><span class="mi">10000</span><span class="p">,</span><span class="w">
    </span><span class="nl">"wordWrap"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="format-daffichage">Format d’affichage</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"display"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"codeBlockStyle"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bordered"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"syntaxHighlighting"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"lineNumbers"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"diffStyle"</span><span class="p">:</span><span class="w"> </span><span class="s2">"unified"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h2 id="intégration-avec-le-shell">Intégration avec le shell</h2>

<h3 id="alias-utiles">Alias utiles</h3>

<p>Ajoutez à votre <code class="language-plaintext highlighter-rouge">.zshrc</code> ou <code class="language-plaintext highlighter-rouge">.bashrc</code> :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Lancer Claude Code</span>
<span class="nb">alias </span><span class="nv">cc</span><span class="o">=</span><span class="s1">'claude'</span>

<span class="c"># Claude Code avec modèle spécifique</span>
<span class="nb">alias </span><span class="nv">ccs</span><span class="o">=</span><span class="s1">'claude --model sonnet'</span>
<span class="nb">alias </span><span class="nv">cco</span><span class="o">=</span><span class="s1">'claude --model opus'</span>
<span class="nb">alias </span><span class="nv">cch</span><span class="o">=</span><span class="s1">'claude --model haiku'</span>

<span class="c"># Continuer la dernière session</span>
<span class="nb">alias </span><span class="nv">ccr</span><span class="o">=</span><span class="s1">'claude -c'</span>

<span class="c"># Claude Code en mode print</span>
<span class="nb">alias </span><span class="nv">ccp</span><span class="o">=</span><span class="s1">'claude -p'</span>
</code></pre></div></div>

<h3 id="fonctions-shell">Fonctions shell</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Analyser un fichier avec Claude</span>
analyze<span class="o">()</span> <span class="o">{</span>
  <span class="nb">cat</span> <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span> | claude <span class="nt">-p</span> <span class="s2">"Analyse ce fichier et identifie les problèmes potentiels"</span>
<span class="o">}</span>

<span class="c"># Générer des tests pour un fichier</span>
gentest<span class="o">()</span> <span class="o">{</span>
  claude <span class="nt">-p</span> <span class="s2">"Génère des tests pour @</span><span class="nv">$1</span><span class="s2">"</span> <span class="nt">--allowedTools</span> Read,Write
<span class="o">}</span>

<span class="c"># Review rapide</span>
review<span class="o">()</span> <span class="o">{</span>
  git diff | claude <span class="nt">-p</span> <span class="s2">"Review ces changements"</span>
<span class="o">}</span>
</code></pre></div></div>

<h2 id="multiplexeurs-de-terminal">Multiplexeurs de terminal</h2>

<h3 id="avec-tmux">Avec tmux</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Créer une session Claude Code</span>
tmux new-session <span class="nt">-s</span> claude

<span class="c"># Dans tmux</span>
claude

<span class="c"># Détacher : Ctrl+B, D</span>
<span class="c"># Réattacher : tmux attach -t claude</span>
</code></pre></div></div>

<h3 id="configuration-tmux-recommandée">Configuration tmux recommandée</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># ~/.tmux.conf</span>

<span class="c"># Status bar pour Claude Code</span>
<span class="nb">set</span> <span class="nt">-g</span> status-right <span class="s1">'#[fg=green]Claude #[fg=white]| #[fg=cyan]%H:%M'</span>

<span class="c"># Couleurs adaptées</span>
<span class="nb">set</span> <span class="nt">-g</span> default-terminal <span class="s2">"screen-256color"</span>
</code></pre></div></div>

<h3 id="avec-screen">Avec screen</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>screen <span class="nt">-S</span> claude
claude
<span class="c"># Détacher : Ctrl+A, D</span>
<span class="c"># Réattacher : screen -r claude</span>
</code></pre></div></div>

<h2 id="notifications">Notifications</h2>

<h3 id="notifications-de-fin-de-tâche">Notifications de fin de tâche</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"notifications"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"onTaskComplete"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"onError"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"sound"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="notifications-système">Notifications système</h3>

<p>Avec libnotify (Linux) :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">-p</span> <span class="s2">"Tâche longue"</span> <span class="o">&amp;&amp;</span> notify-send <span class="s2">"Claude terminé"</span>
</code></pre></div></div>

<p>Avec osascript (macOS) :</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">-p</span> <span class="s2">"Tâche longue"</span> <span class="o">&amp;&amp;</span> osascript <span class="nt">-e</span> <span class="s1">'display notification "Claude terminé"'</span>
</code></pre></div></div>

<h2 id="profils-de-configuration">Profils de configuration</h2>

<h3 id="créer-des-profils">Créer des profils</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~/.claude/
├── profiles/
│   ├── work.json
│   ├── personal.json
│   └── ci.json
└── settings.json
</code></pre></div></div>

<h3 id="profile-work">Profile “work”</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"model"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sonnet"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"statusLine"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nl">"style"</span><span class="p">:</span><span class="w"> </span><span class="s2">"detailed"</span><span class="w"> </span><span class="p">},</span><span class="w">
  </span><span class="nl">"editor"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nl">"mode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"vim"</span><span class="w"> </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="profile-ci">Profile “ci”</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"model"</span><span class="p">:</span><span class="w"> </span><span class="s2">"haiku"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"statusLine"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nl">"style"</span><span class="p">:</span><span class="w"> </span><span class="s2">"hidden"</span><span class="w"> </span><span class="p">},</span><span class="w">
  </span><span class="nl">"notifications"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nl">"enabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="charger-un-profil">Charger un profil</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">--profile</span> work
</code></pre></div></div>

<h2 id="accessibilité">Accessibilité</h2>

<h3 id="mode-haut-contraste">Mode haut contraste</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"accessibility"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"highContrast"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"largeText"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
    </span><span class="nl">"screenReaderFriendly"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="désactiver-les-animations">Désactiver les animations</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"display"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"animations"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
    </span><span class="nl">"progressIndicator"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h2 id="template-de-configuration-complète">Template de configuration complète</h2>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"statusLine"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"style"</span><span class="p">:</span><span class="w"> </span><span class="s2">"detailed"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showCost"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showTokens"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showModel"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"editor"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"mode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"vim"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"lineNumbers"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"display"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"codeBlockStyle"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bordered"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"syntaxHighlighting"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"diffStyle"</span><span class="p">:</span><span class="w"> </span><span class="s2">"unified"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"animations"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"history"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"maxSize"</span><span class="p">:</span><span class="w"> </span><span class="mi">1000</span><span class="p">,</span><span class="w">
    </span><span class="nl">"saveToDisk"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"keybindings"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"submit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Enter"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"newLine"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Shift+Enter"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"cancel"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Ctrl+C"</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"notifications"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"onTaskComplete"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"onError"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h2 id="ce-qui-vous-attend-demain">Ce qui vous attend demain</h2>

<p>Dans le <strong>Jour 19</strong>, nous ferons un <strong>comparatif Claude Code vs Cursor vs GitHub Copilot</strong> - comprendre les forces de chaque outil.</p>

<hr />

<p><em>Cet article fait partie de la série “Maîtriser Claude Code en 20 jours”. <a href="/fr/claude-code-troubleshooting/">Jour 17 : Troubleshooting</a></em></p>
]]></content:encoded>
        <pubDate>Sun, 28 Dec 2025 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/fr/claude-code-status-line-terminal/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/fr/claude-code-status-line-terminal/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Status Line and Terminal Customization</title>
        <description>
          
            Customize Claude Code: status line, vim mode, terminal themes, keyboard shortcuts, and advanced interface configuration.
          
        </description>
        <content:encoded><![CDATA[<p>Claude Code runs in your terminal. Did you know you can customize its appearance and behavior? Let’s see how to adapt the interface to your preferences.</p>

<h2 id="the-status-line">The Status Line</h2>

<h3 id="what-is-the-status-line">What is the status line?</h3>

<p>The bar at the bottom of the screen that displays:</p>
<ul>
  <li>Active model</li>
  <li>Tokens used</li>
  <li>Session cost</li>
  <li>Connection status</li>
</ul>

<h3 id="customize-the-status-line">Customize the status line</h3>

<p>Via the <code class="language-plaintext highlighter-rouge">/config</code> command:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/config
</code></pre></div></div>

<p>Status line options:</p>
<ul>
  <li><strong>Minimal</strong>: Just the model</li>
  <li><strong>Standard</strong>: Model + tokens</li>
  <li><strong>Detailed</strong>: Everything (model, tokens, cost, latency)</li>
  <li><strong>Hidden</strong>: No status line</li>
</ul>

<h3 id="configuration-in-settings">Configuration in settings</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"statusLine"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"style"</span><span class="p">:</span><span class="w"> </span><span class="s2">"detailed"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showCost"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showTokens"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showModel"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showLatency"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h2 id="vim-mode">Vim Mode</h2>

<h3 id="enable-vim-mode">Enable vim mode</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/vim
</code></pre></div></div>

<p>Or at launch:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">--vim</span>
</code></pre></div></div>

<h3 id="available-vim-shortcuts">Available vim shortcuts</h3>

<table>
  <thead>
    <tr>
      <th>Mode</th>
      <th>Key</th>
      <th>Action</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Normal</td>
      <td><code class="language-plaintext highlighter-rouge">i</code></td>
      <td>Insert mode</td>
    </tr>
    <tr>
      <td>Normal</td>
      <td><code class="language-plaintext highlighter-rouge">v</code></td>
      <td>Visual mode</td>
    </tr>
    <tr>
      <td>Normal</td>
      <td><code class="language-plaintext highlighter-rouge">dd</code></td>
      <td>Delete line</td>
    </tr>
    <tr>
      <td>Normal</td>
      <td><code class="language-plaintext highlighter-rouge">yy</code></td>
      <td>Copy line</td>
    </tr>
    <tr>
      <td>Normal</td>
      <td><code class="language-plaintext highlighter-rouge">p</code></td>
      <td>Paste</td>
    </tr>
    <tr>
      <td>Normal</td>
      <td><code class="language-plaintext highlighter-rouge">/</code></td>
      <td>Search</td>
    </tr>
    <tr>
      <td>Insert</td>
      <td><code class="language-plaintext highlighter-rouge">Esc</code></td>
      <td>Normal mode</td>
    </tr>
  </tbody>
</table>

<h3 id="vim-configuration">Vim configuration</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"editor"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"mode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"vim"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"lineNumbers"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"relativNumbers"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h2 id="themes-and-colors">Themes and Colors</h2>

<h3 id="built-in-themes">Built-in themes</h3>

<p>Claude Code adapts to your terminal theme. To force a theme:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">export </span><span class="nv">CLAUDE_CODE_THEME</span><span class="o">=</span>dark
</code></pre></div></div>

<p>Options:</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">dark</code>: Dark background</li>
  <li><code class="language-plaintext highlighter-rouge">light</code>: Light background</li>
  <li><code class="language-plaintext highlighter-rouge">auto</code>: Automatic detection</li>
</ul>

<h3 id="custom-colors">Custom colors</h3>

<p>In your terminal config file (.zshrc, .bashrc):</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Claude Code colors</span>
<span class="nb">export </span><span class="nv">CLAUDE_CODE_COLOR_PRIMARY</span><span class="o">=</span><span class="s2">"#00ff00"</span>
<span class="nb">export </span><span class="nv">CLAUDE_CODE_COLOR_SECONDARY</span><span class="o">=</span><span class="s2">"#0066ff"</span>
<span class="nb">export </span><span class="nv">CLAUDE_CODE_COLOR_ERROR</span><span class="o">=</span><span class="s2">"#ff0000"</span>
<span class="nb">export </span><span class="nv">CLAUDE_CODE_COLOR_SUCCESS</span><span class="o">=</span><span class="s2">"#00ff00"</span>
</code></pre></div></div>

<h2 id="keyboard-shortcuts">Keyboard Shortcuts</h2>

<h3 id="default-shortcuts">Default shortcuts</h3>

<table>
  <thead>
    <tr>
      <th>Shortcut</th>
      <th>Action</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Enter</code></td>
      <td>Send message</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Shift+Enter</code></td>
      <td>New line</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Ctrl+C</code></td>
      <td>Cancel/Interrupt</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Ctrl+L</code></td>
      <td>Clear screen</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Esc Esc</code></td>
      <td>Rewind menu</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Shift+Tab</code></td>
      <td>Accept Edits mode</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">↑</code> / <code class="language-plaintext highlighter-rouge">↓</code></td>
      <td>Prompt history</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">Tab</code></td>
      <td>Autocompletion</td>
    </tr>
  </tbody>
</table>

<h3 id="customize-shortcuts">Customize shortcuts</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"keybindings"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"submit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Enter"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"newLine"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Shift+Enter"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"cancel"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Ctrl+C"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"clearScreen"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Ctrl+L"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"rewind"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Esc Esc"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"acceptEdits"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Shift+Tab"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"history.up"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ArrowUp"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"history.down"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ArrowDown"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h2 id="autocompletion">Autocompletion</h2>

<h3 id="file-completion">File completion</h3>

<p>Type <code class="language-plaintext highlighter-rouge">@</code> then Tab to see available files:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>@sr[Tab]
→ @src/
→ @src/api/
→ @src/components/
</code></pre></div></div>

<h3 id="command-completion">Command completion</h3>

<p>Type <code class="language-plaintext highlighter-rouge">/</code> then Tab:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/co[Tab]
→ /compact
→ /config
→ /cost
</code></pre></div></div>

<h3 id="smart-completion">Smart completion</h3>

<p>Claude Code suggests completions based on:</p>
<ul>
  <li>Current context</li>
  <li>Command history</li>
  <li>Project files</li>
</ul>

<h2 id="advanced-terminal-configuration">Advanced Terminal Configuration</h2>

<h3 id="history-size">History size</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"history"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"maxSize"</span><span class="p">:</span><span class="w"> </span><span class="mi">1000</span><span class="p">,</span><span class="w">
    </span><span class="nl">"saveToDisk"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="scroll-buffer">Scroll buffer</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"terminal"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"scrollback"</span><span class="p">:</span><span class="w"> </span><span class="mi">10000</span><span class="p">,</span><span class="w">
    </span><span class="nl">"wordWrap"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="display-format">Display format</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"display"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"codeBlockStyle"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bordered"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"syntaxHighlighting"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"lineNumbers"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"diffStyle"</span><span class="p">:</span><span class="w"> </span><span class="s2">"unified"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h2 id="shell-integration">Shell Integration</h2>

<h3 id="useful-aliases">Useful aliases</h3>

<p>Add to your <code class="language-plaintext highlighter-rouge">.zshrc</code> or <code class="language-plaintext highlighter-rouge">.bashrc</code>:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Launch Claude Code</span>
<span class="nb">alias </span><span class="nv">cc</span><span class="o">=</span><span class="s1">'claude'</span>

<span class="c"># Claude Code with specific model</span>
<span class="nb">alias </span><span class="nv">ccs</span><span class="o">=</span><span class="s1">'claude --model sonnet'</span>
<span class="nb">alias </span><span class="nv">cco</span><span class="o">=</span><span class="s1">'claude --model opus'</span>
<span class="nb">alias </span><span class="nv">cch</span><span class="o">=</span><span class="s1">'claude --model haiku'</span>

<span class="c"># Continue last session</span>
<span class="nb">alias </span><span class="nv">ccr</span><span class="o">=</span><span class="s1">'claude -c'</span>

<span class="c"># Claude Code in print mode</span>
<span class="nb">alias </span><span class="nv">ccp</span><span class="o">=</span><span class="s1">'claude -p'</span>
</code></pre></div></div>

<h3 id="shell-functions">Shell functions</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Analyze a file with Claude</span>
analyze<span class="o">()</span> <span class="o">{</span>
  <span class="nb">cat</span> <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span> | claude <span class="nt">-p</span> <span class="s2">"Analyze this file and identify potential issues"</span>
<span class="o">}</span>

<span class="c"># Generate tests for a file</span>
gentest<span class="o">()</span> <span class="o">{</span>
  claude <span class="nt">-p</span> <span class="s2">"Generate tests for @</span><span class="nv">$1</span><span class="s2">"</span> <span class="nt">--allowedTools</span> Read,Write
<span class="o">}</span>

<span class="c"># Quick review</span>
review<span class="o">()</span> <span class="o">{</span>
  git diff | claude <span class="nt">-p</span> <span class="s2">"Review these changes"</span>
<span class="o">}</span>
</code></pre></div></div>

<h2 id="terminal-multiplexers">Terminal Multiplexers</h2>

<h3 id="with-tmux">With tmux</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Create a Claude Code session</span>
tmux new-session <span class="nt">-s</span> claude

<span class="c"># In tmux</span>
claude

<span class="c"># Detach: Ctrl+B, D</span>
<span class="c"># Reattach: tmux attach -t claude</span>
</code></pre></div></div>

<h3 id="recommended-tmux-configuration">Recommended tmux configuration</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># ~/.tmux.conf</span>

<span class="c"># Status bar for Claude Code</span>
<span class="nb">set</span> <span class="nt">-g</span> status-right <span class="s1">'#[fg=green]Claude #[fg=white]| #[fg=cyan]%H:%M'</span>

<span class="c"># Adapted colors</span>
<span class="nb">set</span> <span class="nt">-g</span> default-terminal <span class="s2">"screen-256color"</span>
</code></pre></div></div>

<h3 id="with-screen">With screen</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>screen <span class="nt">-S</span> claude
claude
<span class="c"># Detach: Ctrl+A, D</span>
<span class="c"># Reattach: screen -r claude</span>
</code></pre></div></div>

<h2 id="notifications">Notifications</h2>

<h3 id="task-completion-notifications">Task completion notifications</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"notifications"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"onTaskComplete"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"onError"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"sound"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="system-notifications">System notifications</h3>

<p>With libnotify (Linux):</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">-p</span> <span class="s2">"Long task"</span> <span class="o">&amp;&amp;</span> notify-send <span class="s2">"Claude finished"</span>
</code></pre></div></div>

<p>With osascript (macOS):</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">-p</span> <span class="s2">"Long task"</span> <span class="o">&amp;&amp;</span> osascript <span class="nt">-e</span> <span class="s1">'display notification "Claude finished"'</span>
</code></pre></div></div>

<h2 id="configuration-profiles">Configuration Profiles</h2>

<h3 id="create-profiles">Create profiles</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~/.claude/
├── profiles/
│   ├── work.json
│   ├── personal.json
│   └── ci.json
└── settings.json
</code></pre></div></div>

<h3 id="work-profile">“work” profile</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"model"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sonnet"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"statusLine"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nl">"style"</span><span class="p">:</span><span class="w"> </span><span class="s2">"detailed"</span><span class="w"> </span><span class="p">},</span><span class="w">
  </span><span class="nl">"editor"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nl">"mode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"vim"</span><span class="w"> </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="ci-profile">“ci” profile</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"model"</span><span class="p">:</span><span class="w"> </span><span class="s2">"haiku"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"statusLine"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nl">"style"</span><span class="p">:</span><span class="w"> </span><span class="s2">"hidden"</span><span class="w"> </span><span class="p">},</span><span class="w">
  </span><span class="nl">"notifications"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nl">"enabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="load-a-profile">Load a profile</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">--profile</span> work
</code></pre></div></div>

<h2 id="accessibility">Accessibility</h2>

<h3 id="high-contrast-mode">High contrast mode</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"accessibility"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"highContrast"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"largeText"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
    </span><span class="nl">"screenReaderFriendly"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="disable-animations">Disable animations</h3>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"display"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"animations"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
    </span><span class="nl">"progressIndicator"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h2 id="complete-configuration-template">Complete Configuration Template</h2>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"statusLine"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"style"</span><span class="p">:</span><span class="w"> </span><span class="s2">"detailed"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showCost"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showTokens"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"showModel"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"editor"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"mode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"vim"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"lineNumbers"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"display"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"codeBlockStyle"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bordered"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"syntaxHighlighting"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"diffStyle"</span><span class="p">:</span><span class="w"> </span><span class="s2">"unified"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"animations"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"history"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"maxSize"</span><span class="p">:</span><span class="w"> </span><span class="mi">1000</span><span class="p">,</span><span class="w">
    </span><span class="nl">"saveToDisk"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"keybindings"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"submit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Enter"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"newLine"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Shift+Enter"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"cancel"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Ctrl+C"</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"notifications"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"onTaskComplete"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"onError"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h2 id="whats-coming-tomorrow">What’s Coming Tomorrow</h2>

<p>In <strong>Day 19</strong>, we’ll do a <strong>comparison: Claude Code vs Cursor vs GitHub Copilot</strong> - understand each tool’s strengths.</p>

<hr />

<p><em>This article is part of the “Master Claude Code in 20 Days” series. <a href="/en/claude-code-troubleshooting/">Day 17: Troubleshooting</a></em></p>
]]></content:encoded>
        <pubDate>Sun, 28 Dec 2025 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/en/claude-code-status-line-terminal-en/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/en/claude-code-status-line-terminal-en/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Troubleshooting Claude Code</title>
        <description>
          
            Guide complet de dépannage Claude Code : erreurs fréquentes, problèmes de connexion, limites de contexte et solutions pratiques.
          
        </description>
        <content:encoded><![CDATA[<p>Claude Code est robuste, mais des problèmes peuvent survenir. Voici un guide complet pour diagnostiquer et résoudre les erreurs les plus courantes.</p>

<h2 id="problèmes-de-connexion">Problèmes de connexion</h2>

<h3 id="erreur--api-key-invalid">Erreur : “API Key invalid”</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Invalid API key
</code></pre></div></div>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Vérifier la clé :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="nv">$ANTHROPIC_API_KEY</span>
</code></pre></div>    </div>
  </li>
  <li>Reconfigurer :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude config <span class="nb">set </span>apiKey sk-ant-...
</code></pre></div>    </div>
  </li>
  <li>Vérifier les permissions sur console.anthropic.com</li>
</ol>

<h3 id="erreur--rate-limit-exceeded">Erreur : “Rate limit exceeded”</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Rate limit exceeded. Please retry after X seconds.
</code></pre></div></div>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Attendre le délai indiqué</li>
  <li>Réduire la fréquence des requêtes</li>
  <li>Passer à un plan supérieur (Max 20x)</li>
  <li>Utiliser <code class="language-plaintext highlighter-rouge">/compact</code> pour réduire les tokens</li>
</ol>

<h3 id="erreur--connection-timeout">Erreur : “Connection timeout”</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Request timed out
</code></pre></div></div>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Vérifier la connexion internet</li>
  <li>Vérifier le statut : status.anthropic.com</li>
  <li>Réessayer avec un timeout plus long :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">--timeout</span> 120000
</code></pre></div>    </div>
  </li>
</ol>

<h2 id="problèmes-de-contexte">Problèmes de contexte</h2>

<h3 id="erreur--context-window-exceeded">Erreur : “Context window exceeded”</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Maximum context length exceeded
</code></pre></div></div>

<p><strong>Cause</strong> : La conversation + fichiers dépassent la limite de tokens.</p>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Utiliser <code class="language-plaintext highlighter-rouge">/compact</code> immédiatement :
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/compact
</code></pre></div>    </div>
  </li>
  <li>Démarrer une nouvelle session :
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/clear
</code></pre></div>    </div>
  </li>
  <li>Limiter les fichiers référencés :
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>❌ @src/**/*.ts  (trop de fichiers)
✅ @src/api/auth.ts  (fichier spécifique)
</code></pre></div>    </div>
  </li>
</ol>

<h3 id="claude-oublie-des-instructions">Claude “oublie” des instructions</h3>

<p><strong>Cause</strong> : Le contexte est saturé et les anciennes instructions sont tronquées.</p>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Ajouter les instructions au CLAUDE.md :
    <div class="language-markdown highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gh"># CLAUDE.md</span>
<span class="gu">## Règle importante</span>
Toujours utiliser des early returns
</code></pre></div>    </div>
  </li>
  <li>Répéter les instructions critiques :
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Rappel : utilise TypeScript strict.
&gt; Maintenant, implémente la feature X.
</code></pre></div>    </div>
  </li>
  <li>Utiliser <code class="language-plaintext highlighter-rouge">/compact</code> puis reformuler</li>
</ol>

<h3 id="fichier-non-trouvé">Fichier non trouvé</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: File not found: @src/missing.ts
</code></pre></div></div>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Vérifier le chemin :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">ls </span>src/missing.ts
</code></pre></div>    </div>
  </li>
  <li>Utiliser le chemin relatif correct :
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>@./src/missing.ts  (avec ./)
@src/missing.ts    (sans ./)
</code></pre></div>    </div>
  </li>
  <li>Vérifier les permissions de lecture</li>
</ol>

<h2 id="problèmes-dexécution">Problèmes d’exécution</h2>

<h3 id="commande-bash-bloquée">Commande bash bloquée</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Claude is waiting for permission...
</code></pre></div></div>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Accepter ou refuser manuellement</li>
  <li>Ajouter aux permissions :
    <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"permissions"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
 </span><span class="nl">"allow"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"Bash(npm run:*)"</span><span class="p">]</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div>    </div>
  </li>
  <li>Utiliser le mode Accept Edits (Shift+Tab)</li>
</ol>

<h3 id="erreur--tool-not-available">Erreur : “Tool not available”</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Tool 'WebFetch' is not available
</code></pre></div></div>

<p><strong>Cause</strong> : L’outil est désactivé ou non disponible.</p>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Vérifier les permissions :
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/permissions
</code></pre></div>    </div>
  </li>
  <li>
    <p>Activer l’outil dans settings.json</p>
  </li>
  <li>Vérifier que l’outil existe (certains sont expérimentaux)</li>
</ol>

<h3 id="boucle-infinie">Boucle infinie</h3>

<p>Claude continue sans fin sur une tâche.</p>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Interrompre avec <code class="language-plaintext highlighter-rouge">Ctrl+C</code></li>
  <li>Utiliser <code class="language-plaintext highlighter-rouge">Esc Esc</code> pour revenir en arrière</li>
  <li>Reformuler avec une limite :
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Fais cette tâche en maximum 3 étapes
</code></pre></div>    </div>
  </li>
</ol>

<h2 id="problèmes-de-performance">Problèmes de performance</h2>

<h3 id="réponses-très-lentes">Réponses très lentes</h3>

<p><strong>Causes possibles</strong> :</p>
<ul>
  <li>Contexte trop large</li>
  <li>Charge serveur élevée</li>
  <li>Connexion réseau lente</li>
</ul>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Réduire le contexte :
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/compact
</code></pre></div>    </div>
  </li>
  <li>Limiter les fichiers :
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Analyse uniquement @src/api/auth.ts
</code></pre></div>    </div>
  </li>
  <li>Utiliser un modèle plus rapide :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">--model</span> haiku
</code></pre></div>    </div>
  </li>
</ol>

<h3 id="coûts-élevés">Coûts élevés</h3>

<p><strong>Diagnostic</strong> :</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/cost
</code></pre></div></div>

<p><strong>Solutions</strong> :</p>

<ol>
  <li><code class="language-plaintext highlighter-rouge">/compact</code> régulièrement</li>
  <li>Être plus précis dans les prompts</li>
  <li>Éviter les lectures massives de fichiers</li>
  <li>Utiliser Haiku pour les tâches simples</li>
</ol>

<h2 id="problèmes-dinstallation">Problèmes d’installation</h2>

<h3 id="npm-install-échoue">npm install échoue</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npm <span class="nb">install</span> <span class="nt">-g</span> @anthropic-ai/claude-code
<span class="c"># Error: EACCES permission denied</span>
</code></pre></div></div>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Utiliser npx :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npx @anthropic-ai/claude-code
</code></pre></div>    </div>
  </li>
  <li>Fixer les permissions npm :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> ~/.npm-global
npm config <span class="nb">set </span>prefix <span class="s1">'~/.npm-global'</span>
<span class="nb">export </span><span class="nv">PATH</span><span class="o">=</span>~/.npm-global/bin:<span class="nv">$PATH</span>
</code></pre></div>    </div>
  </li>
  <li>Utiliser un gestionnaire de versions Node :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>nvm use 20
npm <span class="nb">install</span> <span class="nt">-g</span> @anthropic-ai/claude-code
</code></pre></div>    </div>
  </li>
</ol>

<h3 id="version-node-incompatible">Version Node incompatible</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Unsupported Node.js version
</code></pre></div></div>

<p><strong>Solution</strong> :</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>nvm <span class="nb">install </span>18  <span class="c"># ou 20</span>
nvm use 18
</code></pre></div></div>

<h2 id="problèmes-avec-les-hooks">Problèmes avec les hooks</h2>

<h3 id="hook-ne-sexécute-pas">Hook ne s’exécute pas</h3>

<p><strong>Vérifications</strong> :</p>

<ol>
  <li>Syntaxe du hook :
    <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"hooks"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
 </span><span class="nl">"PreToolUse"</span><span class="p">:</span><span class="w"> </span><span class="p">[{</span><span class="w">
   </span><span class="nl">"matcher"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Edit"</span><span class="p">,</span><span class="w">
   </span><span class="nl">"hooks"</span><span class="p">:</span><span class="w"> </span><span class="p">[{</span><span class="w">
     </span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"command"</span><span class="p">,</span><span class="w">
     </span><span class="nl">"command"</span><span class="p">:</span><span class="w"> </span><span class="s2">"echo 'Hook triggered'"</span><span class="w">
   </span><span class="p">}]</span><span class="w">
 </span><span class="p">}]</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div>    </div>
  </li>
  <li>Logs de debug :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">CLAUDE_CODE_DEBUG</span><span class="o">=</span>1 claude
</code></pre></div>    </div>
  </li>
  <li>Permissions du script :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">chmod</span> +x ./scripts/hook.sh
</code></pre></div>    </div>
  </li>
</ol>

<h3 id="hook-bloque-claude">Hook bloque Claude</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Hook returned: BLOCK
</code></pre></div></div>

<p><strong>C’est intentionnel</strong> si le hook détecte un problème.</p>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Vérifier les conditions du hook</li>
  <li>Modifier le fichier concerné pour satisfaire le hook</li>
  <li>Désactiver temporairement le hook</li>
</ol>

<h2 id="problèmes-avec-mcp">Problèmes avec MCP</h2>

<h3 id="serveur-mcp-ne-démarre-pas">Serveur MCP ne démarre pas</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Failed to connect to MCP server
</code></pre></div></div>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Vérifier l’installation :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npx postgres-mcp-server <span class="nt">--version</span>
</code></pre></div>    </div>
  </li>
  <li>Tester manuellement :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npx postgres-mcp-server
</code></pre></div>    </div>
  </li>
  <li>Vérifier les variables d’environnement :
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="nv">$DATABASE_URL</span>
</code></pre></div>    </div>
  </li>
</ol>

<h3 id="timeout-mcp">Timeout MCP</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: MCP server timed out
</code></pre></div></div>

<p><strong>Solutions</strong> :</p>

<ol>
  <li>Augmenter le timeout :
    <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"mcpServers"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
 </span><span class="nl">"postgres"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
   </span><span class="nl">"timeout"</span><span class="p">:</span><span class="w"> </span><span class="mi">30000</span><span class="w">
 </span><span class="p">}</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div>    </div>
  </li>
  <li>Vérifier la connectivité réseau vers le service</li>
</ol>

<h2 id="diagnostic-général">Diagnostic général</h2>

<h3 id="mode-debug">Mode debug</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">CLAUDE_CODE_DEBUG</span><span class="o">=</span>1 claude
</code></pre></div></div>

<p>Affiche des logs détaillés pour identifier le problème.</p>

<h3 id="vérifier-la-configuration">Vérifier la configuration</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude config list
</code></pre></div></div>

<h3 id="réinitialiser-la-configuration">Réinitialiser la configuration</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">rm</span> <span class="nt">-rf</span> ~/.claude
claude config <span class="nb">set </span>apiKey sk-ant-...
</code></pre></div></div>

<h3 id="vérifier-les-logs">Vérifier les logs</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cat</span> ~/.claude/logs/claude-code.log
</code></pre></div></div>

<h2 id="checklist-de-dépannage">Checklist de dépannage</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>□ Connexion internet OK ?
□ API Key valide ?
□ Version Node.js compatible (≥18) ?
□ Claude Code à jour ?
□ Permissions fichiers OK ?
□ Contexte pas saturé ?
□ Hooks configurés correctement ?
□ MCP servers accessibles ?
</code></pre></div></div>

<h2 id="obtenir-de-laide">Obtenir de l’aide</h2>

<h3 id="documentation-officielle">Documentation officielle</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/help
</code></pre></div></div>

<h3 id="communauté">Communauté</h3>

<ul>
  <li>GitHub Issues : github.com/anthropics/claude-code/issues</li>
  <li>Discord Anthropic</li>
  <li>Stack Overflow tag <code class="language-plaintext highlighter-rouge">claude-code</code></li>
</ul>

<h3 id="support-anthropic">Support Anthropic</h3>

<p>Pour les clients Enterprise : support.anthropic.com</p>

<h2 id="ce-qui-vous-attend-demain">Ce qui vous attend demain</h2>

<p>Dans le <strong>Jour 18</strong>, nous explorerons la <strong>status line et personnalisation du terminal</strong> - configurez l’affichage de Claude Code selon vos préférences.</p>

<hr />

<p><em>Cet article fait partie de la série “Maîtriser Claude Code en 20 jours”. <a href="/fr/claude-code-facturation-couts/">Jour 16 : Facturation et coûts</a></em></p>
]]></content:encoded>
        <pubDate>Sat, 27 Dec 2025 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/fr/claude-code-troubleshooting/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/fr/claude-code-troubleshooting/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
      <item>
        <title>Claude Code Troubleshooting</title>
        <description>
          
            Complete Claude Code troubleshooting guide: common errors, connection issues, context limits, and practical solutions.
          
        </description>
        <content:encoded><![CDATA[<p>Claude Code is robust, but problems can occur. Here’s a complete guide to diagnose and solve the most common errors.</p>

<h2 id="connection-problems">Connection Problems</h2>

<h3 id="error-api-key-invalid">Error: “API Key invalid”</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Invalid API key
</code></pre></div></div>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Verify the key:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="nv">$ANTHROPIC_API_KEY</span>
</code></pre></div>    </div>
  </li>
  <li>Reconfigure:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude config <span class="nb">set </span>apiKey sk-ant-...
</code></pre></div>    </div>
  </li>
  <li>Check permissions on console.anthropic.com</li>
</ol>

<h3 id="error-rate-limit-exceeded">Error: “Rate limit exceeded”</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Rate limit exceeded. Please retry after X seconds.
</code></pre></div></div>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Wait for the indicated delay</li>
  <li>Reduce request frequency</li>
  <li>Upgrade to a higher plan (Max 20x)</li>
  <li>Use <code class="language-plaintext highlighter-rouge">/compact</code> to reduce tokens</li>
</ol>

<h3 id="error-connection-timeout">Error: “Connection timeout”</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Request timed out
</code></pre></div></div>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Check internet connection</li>
  <li>Check status: status.anthropic.com</li>
  <li>Retry with longer timeout:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">--timeout</span> 120000
</code></pre></div>    </div>
  </li>
</ol>

<h2 id="context-problems">Context Problems</h2>

<h3 id="error-context-window-exceeded">Error: “Context window exceeded”</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Maximum context length exceeded
</code></pre></div></div>

<p><strong>Cause</strong>: Conversation + files exceed token limit.</p>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Use <code class="language-plaintext highlighter-rouge">/compact</code> immediately:
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/compact
</code></pre></div>    </div>
  </li>
  <li>Start a new session:
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/clear
</code></pre></div>    </div>
  </li>
  <li>Limit referenced files:
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>❌ @src/**/*.ts  (too many files)
✅ @src/api/auth.ts  (specific file)
</code></pre></div>    </div>
  </li>
</ol>

<h3 id="claude-forgets-instructions">Claude “forgets” instructions</h3>

<p><strong>Cause</strong>: Context is saturated and old instructions are truncated.</p>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Add instructions to CLAUDE.md:
    <div class="language-markdown highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gh"># CLAUDE.md</span>
<span class="gu">## Important rule</span>
Always use early returns
</code></pre></div>    </div>
  </li>
  <li>Repeat critical instructions:
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Reminder: use strict TypeScript.
&gt; Now, implement feature X.
</code></pre></div>    </div>
  </li>
  <li>Use <code class="language-plaintext highlighter-rouge">/compact</code> then reformulate</li>
</ol>

<h3 id="file-not-found">File not found</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: File not found: @src/missing.ts
</code></pre></div></div>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Verify the path:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">ls </span>src/missing.ts
</code></pre></div>    </div>
  </li>
  <li>Use correct relative path:
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>@./src/missing.ts  (with ./)
@src/missing.ts    (without ./)
</code></pre></div>    </div>
  </li>
  <li>Check read permissions</li>
</ol>

<h2 id="execution-problems">Execution Problems</h2>

<h3 id="bash-command-blocked">Bash command blocked</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Claude is waiting for permission...
</code></pre></div></div>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Accept or reject manually</li>
  <li>Add to permissions:
    <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"permissions"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
 </span><span class="nl">"allow"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"Bash(npm run:*)"</span><span class="p">]</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div>    </div>
  </li>
  <li>Use Accept Edits mode (Shift+Tab)</li>
</ol>

<h3 id="error-tool-not-available">Error: “Tool not available”</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Tool 'WebFetch' is not available
</code></pre></div></div>

<p><strong>Cause</strong>: Tool is disabled or unavailable.</p>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Check permissions:
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/permissions
</code></pre></div>    </div>
  </li>
  <li>
    <p>Enable tool in settings.json</p>
  </li>
  <li>Verify tool exists (some are experimental)</li>
</ol>

<h3 id="infinite-loop">Infinite loop</h3>

<p>Claude continues endlessly on a task.</p>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Interrupt with <code class="language-plaintext highlighter-rouge">Ctrl+C</code></li>
  <li>Use <code class="language-plaintext highlighter-rouge">Esc Esc</code> to go back</li>
  <li>Reformulate with a limit:
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Do this task in maximum 3 steps
</code></pre></div>    </div>
  </li>
</ol>

<h2 id="performance-problems">Performance Problems</h2>

<h3 id="very-slow-responses">Very slow responses</h3>

<p><strong>Possible causes</strong>:</p>
<ul>
  <li>Context too large</li>
  <li>High server load</li>
  <li>Slow network connection</li>
</ul>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Reduce context:
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/compact
</code></pre></div>    </div>
  </li>
  <li>Limit files:
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; Analyze only @src/api/auth.ts
</code></pre></div>    </div>
  </li>
  <li>Use a faster model:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude <span class="nt">--model</span> haiku
</code></pre></div>    </div>
  </li>
</ol>

<h3 id="high-costs">High costs</h3>

<p><strong>Diagnosis</strong>:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/cost
</code></pre></div></div>

<p><strong>Solutions</strong>:</p>

<ol>
  <li><code class="language-plaintext highlighter-rouge">/compact</code> regularly</li>
  <li>Be more precise in prompts</li>
  <li>Avoid massive file reads</li>
  <li>Use Haiku for simple tasks</li>
</ol>

<h2 id="installation-problems">Installation Problems</h2>

<h3 id="npm-install-fails">npm install fails</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npm <span class="nb">install</span> <span class="nt">-g</span> @anthropic-ai/claude-code
<span class="c"># Error: EACCES permission denied</span>
</code></pre></div></div>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Use npx:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npx @anthropic-ai/claude-code
</code></pre></div>    </div>
  </li>
  <li>Fix npm permissions:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> ~/.npm-global
npm config <span class="nb">set </span>prefix <span class="s1">'~/.npm-global'</span>
<span class="nb">export </span><span class="nv">PATH</span><span class="o">=</span>~/.npm-global/bin:<span class="nv">$PATH</span>
</code></pre></div>    </div>
  </li>
  <li>Use a Node version manager:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>nvm use 20
npm <span class="nb">install</span> <span class="nt">-g</span> @anthropic-ai/claude-code
</code></pre></div>    </div>
  </li>
</ol>

<h3 id="incompatible-node-version">Incompatible Node version</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Unsupported Node.js version
</code></pre></div></div>

<p><strong>Solution</strong>:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>nvm <span class="nb">install </span>18  <span class="c"># or 20</span>
nvm use 18
</code></pre></div></div>

<h2 id="hook-problems">Hook Problems</h2>

<h3 id="hook-doesnt-execute">Hook doesn’t execute</h3>

<p><strong>Checks</strong>:</p>

<ol>
  <li>Hook syntax:
    <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"hooks"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
 </span><span class="nl">"PreToolUse"</span><span class="p">:</span><span class="w"> </span><span class="p">[{</span><span class="w">
   </span><span class="nl">"matcher"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Edit"</span><span class="p">,</span><span class="w">
   </span><span class="nl">"hooks"</span><span class="p">:</span><span class="w"> </span><span class="p">[{</span><span class="w">
     </span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"command"</span><span class="p">,</span><span class="w">
     </span><span class="nl">"command"</span><span class="p">:</span><span class="w"> </span><span class="s2">"echo 'Hook triggered'"</span><span class="w">
   </span><span class="p">}]</span><span class="w">
 </span><span class="p">}]</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div>    </div>
  </li>
  <li>Debug logs:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">CLAUDE_CODE_DEBUG</span><span class="o">=</span>1 claude
</code></pre></div>    </div>
  </li>
  <li>Script permissions:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">chmod</span> +x ./scripts/hook.sh
</code></pre></div>    </div>
  </li>
</ol>

<h3 id="hook-blocks-claude">Hook blocks Claude</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Hook returned: BLOCK
</code></pre></div></div>

<p><strong>This is intentional</strong> if the hook detects a problem.</p>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Check hook conditions</li>
  <li>Modify the file to satisfy the hook</li>
  <li>Temporarily disable the hook</li>
</ol>

<h2 id="mcp-problems">MCP Problems</h2>

<h3 id="mcp-server-wont-start">MCP server won’t start</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: Failed to connect to MCP server
</code></pre></div></div>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Verify installation:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npx postgres-mcp-server <span class="nt">--version</span>
</code></pre></div>    </div>
  </li>
  <li>Test manually:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npx postgres-mcp-server
</code></pre></div>    </div>
  </li>
  <li>Check environment variables:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="nv">$DATABASE_URL</span>
</code></pre></div>    </div>
  </li>
</ol>

<h3 id="mcp-timeout">MCP timeout</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Error: MCP server timed out
</code></pre></div></div>

<p><strong>Solutions</strong>:</p>

<ol>
  <li>Increase timeout:
    <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"mcpServers"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
 </span><span class="nl">"postgres"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
   </span><span class="nl">"timeout"</span><span class="p">:</span><span class="w"> </span><span class="mi">30000</span><span class="w">
 </span><span class="p">}</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div>    </div>
  </li>
  <li>Check network connectivity to the service</li>
</ol>

<h2 id="general-diagnosis">General Diagnosis</h2>

<h3 id="debug-mode">Debug mode</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">CLAUDE_CODE_DEBUG</span><span class="o">=</span>1 claude
</code></pre></div></div>

<p>Displays detailed logs to identify the problem.</p>

<h3 id="check-configuration">Check configuration</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude config list
</code></pre></div></div>

<h3 id="reset-configuration">Reset configuration</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">rm</span> <span class="nt">-rf</span> ~/.claude
claude config <span class="nb">set </span>apiKey sk-ant-...
</code></pre></div></div>

<h3 id="check-logs">Check logs</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cat</span> ~/.claude/logs/claude-code.log
</code></pre></div></div>

<h2 id="troubleshooting-checklist">Troubleshooting Checklist</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>□ Internet connection OK?
□ API Key valid?
□ Node.js version compatible (≥18)?
□ Claude Code up to date?
□ File permissions OK?
□ Context not saturated?
□ Hooks configured correctly?
□ MCP servers accessible?
</code></pre></div></div>

<h2 id="getting-help">Getting Help</h2>

<h3 id="official-documentation">Official documentation</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/help
</code></pre></div></div>

<h3 id="community">Community</h3>

<ul>
  <li>GitHub Issues: github.com/anthropics/claude-code/issues</li>
  <li>Anthropic Discord</li>
  <li>Stack Overflow tag <code class="language-plaintext highlighter-rouge">claude-code</code></li>
</ul>

<h3 id="anthropic-support">Anthropic Support</h3>

<p>For Enterprise customers: support.anthropic.com</p>

<h2 id="whats-coming-tomorrow">What’s Coming Tomorrow</h2>

<p>In <strong>Day 18</strong>, we’ll explore the <strong>status line and terminal customization</strong> - configure Claude Code display according to your preferences.</p>

<hr />

<p><em>This article is part of the “Master Claude Code in 20 Days” series. <a href="/en/claude-code-billing-costs/">Day 16: Billing and costs</a></em></p>
]]></content:encoded>
        <pubDate>Sat, 27 Dec 2025 00:00:00 +0100</pubDate>
        <link>https://angelo-lima.fr/en/claude-code-troubleshooting-en/</link>
        <guid isPermaLink="true">https://angelo-lima.fr/en/claude-code-troubleshooting-en/</guid>
        
        <dc:creator>Angelo Lima</dc:creator>
        
        
          
          <category>IA</category>
          
          <category>Développement</category>
          
        
        
        <enclosure url="https://angelo-lima.fr/assets/img/claude-code.webp" type="image/png" length="0" />
        
      </item>
    
  </channel>
</rss>
