Retour à l'accueil

Sources de Claude Code : Architecture CLI

Fuite des Sources de Claude Code Révélée : Runtime Multi-Mode sur React/Ink avec Orchestration d'Agents, Imports Dynamiques, et Sécurité Bash Stricte. L'Analyse se Concentre sur l'Architecture pour l'IA Terminale.

Internes de Claude Code issus de la Fuite : React et Agents
Advertisement 728x90

Anatomie de Claude Code : Ce que révèle le code source divulgué

Le 31 mars 2026, le code source de Claude Code a fuité via une sourcemap dans un package npm. Il ne s'agit pas d'un dépôt git propre, mais d'un instantané récupéré de code côté client avec des transformations et des fichiers manquants comme assistant/index.ts ou daemon/main.js. screens/REPL.tsx est déjà compilé avec React Compiler, et main.tsx conserve des traces d'optimisations de lancement : profileCheckpoint, préchargement du trousseau de clés, lecture MDM parallèle.

Le code reflète une évolution d'un simple CLI vers un système d'exploitation de terminal. Les imports sont dynamiques pour le chargement différé ; --version s'exécute sans dépendances. Mais la complexité augmente : démon, contrôle à distance, tmux, serveurs MCP.

CLI comme façade d'un runtime multi-mode

entrypoints/cli.tsx est le centre de routage : --version, invite système, démon, exécuteur d'environnement, exécuteur auto-hébergé, ps/logs/attach/kill. Les imports dynamiques minimisent l'évaluation : les workers sont légers. Les chemins rapides ne chargent pas de modules lourds, réduisant la mémoire et les risques de plantage.

Google AdInline article slot

Plus : optimisation du démarrage. Moins : connaître tous les modes donne au CLI l'impression d'un aéroport. Le chargement différé sauve la mise, mais la structure est intimidante.

// Exemple de cli.tsx
if (fastPath) {
  // zéro import au-delà de ce fichier
  console.log(version);
  process.exit(0);
}

main.tsx : Le centre de gravité du système

main.tsx est le point de convergence : initialisation, sélection de mode, pool d'outils, drapeaux de fonctionnalités, KAIROS/Proactif, sortie structurée, récupération de session. Plus : toute la logique de branchement en un seul endroit. Moins : des compromis comme le mode proactif avant getTools() pour SleepTool.isEnabled().

L'évolution est visible : d'un CLI à un système avec drapeaux et vérifications. L'échelle engendre de telles constructions.

Google AdInline article slot
  • Initialisation et sélection de mode
  • Invite système et pool d'outils
  • Drapeaux de fonctionnalités et sessions distantes
  • Lancement de l'interface et sessions

React dans le terminal : Ink et le frontend combinés

Claude Code est une application React sur Ink. screens/REPL.tsx gère les notifications, modales, intégration IDE, MCP, plugins, mode coéquipier, interface flottante, Buddy.

Synchronise l'état, filtre les outils, intègre les plugins. Pas un chat, mais un frontend dans le terminal avec des habitudes de navigateur.

Orchestrer les agents comme infrastructure

Pas un seul agent, mais un centre de contrôle. AgentTool prend en charge :

Google AdInline article slot
  • Lancement synchrone/asynchrone
  • Isolation en arrière-plan et de l'arbre de travail
  • Modes distant et coéquipier
  • Son propre pool d'outils et mode de permission
  • Identité de cache pour prompt/outils

Agents asynchrones avec progression, notifications. L'arbre de travail comme partie de la route. Capacités d'agent matures au-delà de Promise.all.

L'agent d'exploration est limité : lecture seule, pas d'écriture/suppression/redirection/heredoc, concentré sur grep/lecture parallèle. Un équilibre entre autonomie et retenue.

Exécution d'outils : Concurrence et tolérance aux pannes

Les outils sont groupés : lecture seule en parallèle, les plus risqués — en série. Un exécuteur en flux avec :

  • Annulation des frères en cas d'erreur
  • user_interrupted vs sibling_error vs streaming_fallback
  • Tamponnage pour l'ordre
  • Gestion des interruptions

Le produit survit aux blocages et conflits.

Bash sans autodestruction : Paranoïa de sécurité

bashPermissions et bashSecurity bloquent :

  • Substitution de commande/processus
  • Heredoc/égalités zsh
  • zmodload/ztcp/zpty
  • Drapeaux obfusqués
  • env/sudo/nice/timeout
  • Espaces/échappements

Une couche mature contre les vraies morsures de shell des LLMs.

La touche humaine : Buddy et animations

buddy/ — sprites ASCII, bulles de dialogue, animations. Un compagnon de terminal ajoute de la vie au CLI.

Points clés à retenir :

  • Imports dynamiques pour un démarrage rapide des modes
  • main.tsx comme centre d'orchestration avec des compromis d'échelle
  • Infrastructure d'agent avec isolation et cycle de vie
  • Appels d'outils parallèles/sériels avec gestion des erreurs
  • Sécurité Bash contre les attaques shell
  • React/Ink pour l'interface terminal avec Buddy

— Editorial Team

Advertisement 728x90

Lire ensuite