Une quinzaine de chantiers et des notes toujours périmées
Je mène en parallèle une quinzaine de chantiers, entre mes projets techniques, mon alternance, mes candidatures et mon apprentissage. Leur état vivait dans des notes tenues à la main, et ces notes étaient périmées dès qu'une session de travail se terminait ailleurs. Les rituels qui devaient garder l'ensemble cohérent, comme la revue de la semaine, la révision de ce que j'apprends ou la passation d'une session à la suivante, dépendaient de ma discipline et sautaient dès que la charge augmentait.
Mon objectif était donc double : faire tenir ces rituels sans saisie manuelle en les confiant à des agents, et disposer d'une vue de l'état réel de mon travail calculée à partir du disque.
Un vault Obsidian comme mémoire partagée des agents
Le socle est un vault Obsidian qui sert de mémoire partagée à tout le système. Il contient un tableau de bord des chantiers, un knowledge graph de 211 notes atomiques liées entre elles, un carnet où chaque rituel garde son historique, et une inbox de capture. Au-dessus, chaque rituel est devenu un skill de Claude Code, c'est-à-dire un outil invocable en une commande qui lit et écrit dans le vault selon des règles écrites une fois pour toutes.
Ces outils couvrent la revue hebdomadaire, qui relève les échéances, les chantiers qui stagnent et l'hygiène du vault, une veille technologique condensée, la passation d'une session à la suivante, un journal de décisions à prédictions falsifiables qui confronte ce que j'avais prévu à ce qui s'est réellement passé, et la transformation de n'importe quel document en notes atomiques du graph. La révision espacée du knowledge graph reprend la méthode de Leitner et la méthode des J, que j'ai pratiquées pendant mon passage en faculté de médecine et que j'ai voulu retrouver pour réviser ce que j'apprends aujourd'hui en informatique.
Des hooks de Claude Code complètent l'ensemble. Au démarrage d'une session, l'un d'eux affiche l'état des rituels, et un autre alimente un journal d'événements à chaque appel d'outil. Ce journal ne conserve que des metadata, jamais le contenu d'un fichier ni les arguments d'une commande, et il est écrit de sorte à ne jamais faire échouer l'outil qu'il observe.
Trois sources de vérité sur une planète en 3D
La dernière brique est une interface de pilotage en 3D, une planète sur laquelle chaque chantier actif est un bâtiment. Elle superpose trois sources de vérité qui vivent à des rythmes différents. Le tableau des chantiers du vault définit quels bâtiments existent, l'activité des fichiers et l'historique git pilotent leur taille et leur état, et le journal d'événements fait apparaître en temps réel les sessions de Claude Code en cours sous la forme d'ouvriers qui travaillent sur le chantier concerné.
Un chantier actif se voit à un bâtiment éclairé et animé, et un chantier délaissé à un bâtiment éteint. Une seule carte reste à tenir à la main : elle relie chaque chantier aux dossiers qu'il occupe sur le disque, et ne change qu'à la naissance d'un chantier.
three.js sans étape de build servi par FastAPI
La planète est rendue en three.js vanilla, en modules ES et sans étape de build, servie par un backend FastAPI qui lit le disque et pousse les événements par WebSocket. Une page ouverte en local n'aurait pu ni lire les fichiers en direct ni recevoir d'événements. Un écosystème comme react-three-fiber aurait fourni caméra et ombres prêtes à l'emploi, au prix de React et d'une chaîne de build introduits dans un front qui n'en avait pas.
La géométrie et les matériaux sont générés en code. Un pack d'assets libres aurait permis une scène présentable plus vite, et le choix de construire la scène reporte toute la qualité visuelle sur le travail de la lumière et des matériaux. Les sessions qui travaillent hors de tout chantier connu sont placées sur une place centrale au lieu d'être rattachées à un bâtiment par défaut.
Des sessions invisibles jusqu'à leur premier appel d'outil
Le journal a tourné sur des sessions réelles dès la première version, et l'usage a révélé deux contraintes. Les sessions déjà ouvertes au moment où la configuration des hooks est lue n'émettent jamais leur événement de démarrage et n'apparaissent qu'à leur premier appel d'outil, ce qui m'a conduit à créer un ouvrier dès qu'un identifiant de session inconnu se présente. La plupart des commandes commencent aussi par un changement de dossier ou par un préfixe comme sudo ou npx, et l'extraction du nom réel de la commande a dû apprendre à les ignorer.
Chaque rituel en une commande et la suite dans les bâtiments
Chaque rituel s'exécute aujourd'hui en une commande sans saisie manuelle, et le knowledge graph compte 211 notes. Sur la planète, le journal d'événements et le rendu du globe fonctionnent, et la suite porte sur les intérieurs des bâtiments, qui doivent montrer l'activité d'un chantier par ce qui se passe à l'intérieur.
