Le problème
Quand on travaille par lots avec des agents, on a vite dix ou vingt sessions ouvertes, dans l'application de bureau, dans des terminaux, et sur une machine distante. Certaines travaillent, d'autres attendent une autorisation ou une réponse depuis dix minutes sans qu'on le voie. La seule façon de savoir était de passer les fenêtres une à une.
Ce que j'ai fait
Un collègue avait fait un port en 3D pour ses propres sessions. Je voulais un rendu à moi : un diorama en pixel art, en perspective cavalière, où le lieu dépend du projet. Les projets pro sont des voiliers dans la baie de Naples, le hockey patine à Vannes, le perso et la mémoire marchent dans le cirque de Mafate, le labo et l'infra skient aux Menuires. Un personnage qui attend lève une bulle, et un clic ouvre la bonne fenêtre pour lui répondre. Créée le 28 octobre 2026, cinq versions en quatre jours, en service depuis.
D'où vient l'information
Aucune API : tout vient de ce que l'outil écrit déjà sur le disque, plus trois petits crochets qu'il appelle lui-même. Le serveur ne décide jamais rien à la place de l'humain et ne répond jamais à une autorisation à distance.
Registre des sessions
La liste des sessions vivantes, avec un test que le processus existe encore.
Lu chaque seconde
Transcriptions
Le journal de chaque session donne l'outil en cours, le contexte consommé et le modèle.
Lu chaque seconde
Crochets
Trois évènements de l'outil déposent une note quand une session attend une autorisation, une question ou un plan, et l'effacent dès qu'elle repart. Le crochet n'écrit rien d'autre et sort toujours sans erreur.
Évènementiel
Machine distante
Une sonde rapporte les sessions d'un serveur de la maison.
Chaque seconde
Serveur local
Node sans dépendance, à l'écoute en local seulement, avec liste blanche d'origine. Il assemble un instantané et le pousse au navigateur en flux continu. Le journal des quatorze derniers jours se recharge toutes les trente secondes.
Un instantané par seconde
Le monde
Une petite image en pixel art, agrandie pour rester nette, avec les étiquettes et les bulles par-dessus.
60 images par seconde
Dessiner un personnage, à essayer
Dans la Capitainerie, chaque sprite est une liste de chaînes de caractères dans le code, une lettre par pixel et une palette par lettre. Celui-ci est un patineur de 7 pixels sur 12, dessiné pour cette page. Modifiez les lettres à gauche, le personnage change à droite, et choisissez l'état de la session pour voir sa bulle.
. vide
n nuit
b bleu
o orange
p papier
a brume
Les choix
Ne jamais décider à la place de l'humain. Le crochet n'écrit rien sur la sortie standard et sort toujours en zéro, il ne peut donc ni autoriser ni refuser. La bulle propose seulement « Ouvrir pour répondre » ou « Plus tard ».
Une maquette à sessions fictives d'abord, validée à l'écran, puis le branchement aux vraies sessions. Trois rendus ont été jetés avant : une patinoire seule, un paysage, une 3D en Three.js trop lourde pour ce qu'elle montrait.
Des points et des trophées seulement sur de vraies transitions d'état, jamais au premier instantané, sinon tout le monde gagne au démarrage.
Environ 2 000 lignes en service. Un seul concurrent repéré, et il ne couvre ni le terminal ni une machine distante.
Ce qui a cassé
- Le navigateur met l'animation en pause quand le volet est caché, et le monde repartait d'un coup avec vingt secondes de retard.
- Le premier instantané du serveur est vide, et il faisait disparaître tous les personnages pendant une seconde.
- Une fiche reconstruite chaque seconde perd le clic qu'on était en train de faire dessus. Elle n'est plus reconstruite que si son contenu change.
- Les bulles débordaient près des bords du monde, et un observateur de redimensionnement seul ratait la mise en page au premier affichage.
- Les caches du serveur grossissent tant qu'il tourne. C'est connu et pas encore corrigé.
Retour au catalogueLa mémoire que ces sessions partagentTravailler avec des agents