Repository navigation
Article : « J'ai fait coder mon Mac tout seul pendant deux semaines » - #166
Conversation
…aines » Récit de deux semaines d'implémentation de Jakarta Persistence avec un LLM local (Qwen3.6) sur MacBook M5 Max. Les deux diagrammes mermaid (équipe d'agents, boucle de session) sont pré-rendus en PNG car le blog Markdown ne rend pas mermaid. Restent à déposer : 5 illustrations (vignette + 4 inline). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NZfnP6AWEm5WLqNVNHGK6R Signed-off-by: Yann Blazart <yann@durand-blazart.fr>
…o Banana) Vignette de couverture, stagiaire fantôme, petite entreprise d'agents, bureau-mémoire qui ralentit, complémentarité homme-machine. Générées via Gemini (Nano Banana), style éditorial cohérent, palette teal/orange/cream. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NZfnP6AWEm5WLqNVNHGK6R Signed-off-by: Yann Blazart <yann@durand-blazart.fr>
La v1 portait « FAST/SLOW » malgré la consigne. v2 : cadran vierge (graduations + arc rouge), cohérent avec un article en français. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NZfnP6AWEm5WLqNVNHGK6R Signed-off-by: Yann Blazart <yann@durand-blazart.fr>
Le fichier précédent était un spritesheet parasite récupéré par erreur dans ~/Downloads (le download via le viewer plein écran avait échoué). v2 : robot au corps translucide présentant un chevalet vide, dérivant vers l'espresso. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NZfnP6AWEm5WLqNVNHGK6R Signed-off-by: Yann Blazart <yann@durand-blazart.fr>
|
|
||
| Bon. Maintenant la vraie vie. | ||
|
|
||
| Une IA qui code, ça a une mémoire de travail. Une sorte de bureau sur lequel elle pose tout ce dont elle a besoin : le code en cours, les résultats des tests, mes instructions. Ce bureau a une taille. Quand il déborde, tout tombe par terre et la séance s'arrête net. Un jour, sur une seule tâche, mon assistant a rempli son bureau jusqu'au crash. En enquêtant, j'ai découvert le coupable : pour lire les sources d'un test, il avait décompressé la même archive 34 fois de suite, en s'étalant à chaque fois des milliers de mots inutiles sous les yeux. Comme quelqu'un qui, pour vérifier un numéro de téléphone, réimprimerait l'annuaire entier à chaque appel. Solution : je lui ai tout bonnement interdit de décompresser quoi que ce soit. On délègue ça à un assistant secondaire dont la mémoire, elle, part à la poubelle après usage. |
There was a problem hiding this comment.
L'annuaire, est peut-être une référence daté...
|
|
||
| J'avais pourtant fini par lui inscrire noir sur blanc dans ses consignes : « Tu ne racontes pas ce que tu vas faire, tu le fais. » Il replongeait quand même. Un modèle de cette taille imite ce qu'il vient de lire plus qu'il n'obéit à ses instructions, et quand il vient d'écrire trois phrases de belles intentions, la pente naturelle est d'en écrire une quatrième. Ce qui l'a réveillé, finalement, ce n'est pas la supplication, ni « tu continues ? », ni le fait d'appuyer sur Entrée en soupirant. C'est l'ordre carré : une commande qui rouvre sèchement sa feuille de route et lui dit « tâche suivante, exécution ». Pas de « s'il te plaît ». Un ordre de mission. Depuis, quand il rêvasse, je ne discute pas et je ne le relance pas gentiment, ce qui ne fait qu'empirer les choses en lui donnant encore de la prose à imiter. Je lui redonne sa feuille de route, point, et il repart au travail. Il y a là-dedans une leçon de management que je vous laisse méditer. | ||
|
|
||
| Mon préféré, celui qui m'a fait perdre le plus de temps et rire le plus fort, c'est l'histoire de la version qui ne plaisait pas. Mon assistant a besoin d'un outil d'analyse du code Java pour s'y retrouver, l'équivalent de l'autocomplétion de votre traitement de texte, mais pour les programmes. Cet outil refusait obstinément de démarrer. Des heures d'enquête. Et la cause, la voilà : pour vérifier quelle version de Java était installée, mon assistant posait la question, et attendait une réponse du genre « 25 point 0 point 3 ». Sauf que les versions récentes de Java répondent simplement « 25 ». Sans les points. Et devant cette réponse trop courte, le programme concluait qu'il n'y avait pas de Java du tout, et débranchait tout l'outillage en silence. Toute une chaîne bloquée par un logiciel qui boude parce qu'un numéro n'a pas la ponctuation attendue. J'ai réglé le problème en installant une version de Java dont le numéro contenait les fameux points. C'est d'une bêtise magnifique. C'est aussi, très exactement, le quotidien de l'ingénierie logicielle. |
There was a problem hiding this comment.
Ça me rappelle les galères d'éclipse au passage de Sun à oracle. Où l'outil ne pouvait plus identifier les versions de Java parce que sun était en dur dans la regexp. (Ou le nombre de caractères)
|
|
||
| Un modèle lâché seul sur un projet de cette taille se perd. Il oublie ce qu'il faisait, il tourne en rond, il refait trois fois la même erreur avec la même bonne foi. Pour en tirer quelque chose d'utile, il a fallu bâtir autour de lui toute une organisation. Des postes, des droits d'accès, un règlement intérieur, des procédures. Laissez-moi vous présenter le personnel. | ||
|
|
||
| Il y a le développeur en chef. C'est lui qui écrit le code, lance les tests, et a le droit de tout modifier. Le gros du travail passe par ses mains. Mais il a une consigne de fer : une seule tâche à la fois, puis il ferme boutique et on repart à neuf. Un développeur qui garde trop de dossiers ouverts sur son bureau finit par tout mélanger, et le sien déborde vite. |
There was a problem hiding this comment.
Alors, j'aurais envie de parler directement d'agent. C'est peut-être forcer la clarification, mais ton passage à l'équipe créé un peu de flou, parler des le début d'agent devrait supprimer ce flou (cette ambiguïté)
Je me demande également si c'est pas une bonne idée de mettre le lien vers le MD de l'agent
|
|
||
| C'est là que j'ai eu mon idée, et je vais me permettre d'en être un peu fier, parce qu'elle est de moi. Pas du gros modèle distant qui a bâti tout l'atelier, pas du petit local qui y travaille. De moi, l'humain resté dans la boucle, avec une astuce toute bête que connaît n'importe quel écrivain : on relit toujours mieux le texte d'un autre que le sien. Le sien, on l'aime déjà, on glisse sur ses défauts sans les voir. Alors pourquoi ne pas faire relire le plan au modèle, mais dans une conversation neuve, cerveau vidé, en lui cachant qu'il en est l'auteur ? Le même modèle, convoqué cette fois comme correcteur, pas comme écrivain. | ||
|
|
||
| J'ai fabriqué une seconde commande pour ça. Elle relance le modèle à froid, avec une seule mission : voilà un plan que quelqu'un a écrit, déchire-le, trouve ce qui déborde, ce qui est trop gros, ce qui est mal rangé, et corrige. |
There was a problem hiding this comment.
Ajouter la commande en question
|
|
||
| Oui, si vous avez la machine qu'il faut, et cette machine coûte cher et chauffe. Oui, si vous acceptez de passer une partie de votre temps non pas à coder, mais à comprendre pourquoi votre assistant boude. Oui, si vous mesurez tout et ne croyez rien sur parole, y compris et surtout vos propres intuitions, qui se trompent plus souvent qu'on ne l'admet. | ||
|
|
||
| Mais que personne ne vous vende la simplicité. Télécharger un modèle et le regarder coder tout seul à votre place, c'est un fantasme de brochure. Ce que j'ai vécu ressemble bien davantage à monter une petite entreprise : recruter les bons profils, écrire les fiches de poste, distribuer les clés, rédiger les procédures, et mesurer sans relâche pour distinguer ce qui marche vraiment de ce qu'on s'est raconté. Le modèle est le moteur, et un bon moteur. Mais un moteur posé sur un établi ne vous emmène nulle part. Il faut construire la voiture autour, et la voiture, c'est le plus gros du chantier. Faire de l'IA locale qui marche, ce n'est pas simple. C'est même exactement le contraire, et c'est le seul enseignement que je retiens sans la moindre réserve. |
There was a problem hiding this comment.
Je préfèrerais à "monter une entreprise", monter une "équipe", voir "une équipe projet"
|
|
||
| *Yann Blazart développe la pile logicielle Vidocq. Toutes les mesures citées dans cet article ont été relevées sur sa propre machine et consignées ; il les fournira volontiers à quiconque doute, ce qui est la moindre des choses quand on parle d'intelligence artificielle.* | ||
|
|
||
| *Transparence, tant qu'on y est : cet article a été écrit avec l'aide d'une IA, la même engeance que celle dont il parle. Je n'en ai aucune honte, et je préfère le dire que le cacher. La machine a tenu le clavier et proposé des tournures ; les idées, les mesures, les erreurs, les partis pris et les blagues douteuses restent les miens. Le jus de cerveau, c'est encore moi qui le fournis. Il fallait bien quelqu'un pour décider de quoi parler, trancher ce qui était vrai de ce qui m'arrangeait, et vérifier que la machine ne prenait pas, elle non plus, quelques libertés cachées sous la masse.* |
There was a problem hiding this comment.
Est-ce la transparence ne serait pas de mettre les modèles utiliser ?
Y compris dans les descriptifs du projet ?
| La métaphore, c'est bien pour la conversation, mais si vous êtes du métier vous voulez voir les vrais boulons. Les voici. Tout tient dans un dossier discret à la racine du projet, `.opencode`, plus quelques fichiers texte. Rien de propriétaire, rien de magique : du Markdown et un peu de JSON, versionnés dans le dépôt comme le reste du code. | ||
|
|
||
| ``` | ||
| .opencode/ |
There was a problem hiding this comment.
Remarque : sur mon poste, j'ai dû mettre des modèles pour mes agents dans le fichier de configuration user (~/.config/opencode/opencode.jsonc - un truc du genre), sinon open code s'arrêtait tout seul...
De plus, je pense qu'il y a beaucoup à dire sur l'importance du client (Opencode versus Cursor, Claude-Code etc...) mais peut être dans d'autres blogs
- relie A3B au concept MoE (le sigle n'est pas dans le nom, A3B le trahit) - introduit le mot « agent » dès la présentation de l'équipe (lève le flou) - « monter une petite entreprise » -> « monter une équipe projet » - nomme les commandes évoquées (/next, /check-plan) - transparence: nomme les modèles (Qwen3.6-35B-A3B en local, Claude en distant) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NZfnP6AWEm5WLqNVNHGK6R Signed-off-by: Yann Blazart <yann@durand-blazart.fr>
|
Merci Charles, franchement bonne relecture 🙏 J'ai poussé un commit qui prend le gros de tes remarques :
Ce que je garde volontairement : l'annuaire téléphonique 😅 Je sais que c'est daté, mais le côté rétro me plaît, je l'assume. Pour tes anecdotes : Eclipse au passage Sun→Oracle avec La compa des clients (OpenCode vs Cursor vs Claude Code), je la garde pour un prochain billet, c'est un vrai sujet. Merci encore pour l'approve 🍻 |
|
/preview |
|
🚀 Preview deployed successfully! 🌐 Preview: https://pr-166-sciam-preview.surge.sh |
|
|
||
| Pour le piloter, j'utilise deux outils. Un serveur local qui héberge le modèle et répond aux questions, et un assistant de programmation qui joue les chefs d'orchestre : il lit mes fichiers, lance les compilations, écrit le code, relance les tests. Le modèle est le cerveau, l'assistant est les mains. Mon travail à moi, dans tout ça, se résume de plus en plus à celui d'un contremaître un peu méfiant. | ||
|
|
||
| L'objectif, tant qu'à faire, n'était pas de générer un « bonjour le monde ». Puisque je trichais déjà sur le matériel, autant ne pas tricher sur le reste. J'ai donc visé une bête de concours, une des spécifications les plus retorses de tout l'écosystème Java : implémenter Jakarta Persistence, la norme officielle qui permet à un programme de discuter avec une base de données. Un monument aride, doté de sa propre suite de tests de conformité : 269 familles de tests, environ 1 745 vérifications individuelles, chacune impitoyable. Le genre de montagne qu'on ne gravit pas en un week-end, et que la plupart des gens sensés n'iraient pas attaquer avec une petite IA posée sur un ordinateur portable. Appelez ça de la folie. Moi j'appelle ça refuser de me faciliter la tâche : pour savoir si l'IA locale tient vraiment la route, il faut la mettre face à quelque chose de dur, pas lui tendre une perche. Une démonstration facile ne prouve que la facilité. |
There was a problem hiding this comment.
Tu es sûr pour « bonjour le monde » ?
|
My bad
Le mer. 2 sept. 2026 à 10:35, Antoine Sabot-Durand ***@***.***>
a écrit :
… ***@***.**** approved this pull request.
LGTM, but please next time keep the default header to let reviewer follow
the task ;-)
------------------------------
In _posts/2026-08-31-jai-fait-coder-mon-mac-tout-seul.md
<#166 (comment)>
:
> +
+Parce qu'un jour on m'a posé la question qui pique. « L'IA locale, ça marche ? » Et je n'avais que des intuitions, pas de réponse. Alors j'ai débranché le câble et j'ai regardé ce qui se passait.
+
+Spoiler : ça marche, avec des guillemets partout, un astérisque en gras, et une facture d'électricité.
+
+## Le décor, et pourquoi vous n'allez pas me croire
+
+Ma machine, c'est un MacBook avec une puce M5 Max et 128 gigaoctets de mémoire. Autant vous le dire tout de suite : c'est de la triche. C'est comme raconter qu'on a fait Paris-Marseille en voiture électrique sans préciser qu'on roulait en berline de luxe avec trois batteries. Un ordinateur normal, celui que vous avez sur les genoux là maintenant, ne fait pas tourner ce dont je vais parler. Gardez ça en tête à chaque phrase. Ce n'est pas une expérience reproductible dans le salon de tout le monde. C'est une expérience de laboratoire, et le laboratoire coûte le prix d'une petite voiture d'occasion.
+
+Deuxième détail que la brochure marketing oublie de mentionner : ça chauffe. Un modèle d'intelligence artificielle, c'est des milliards de multiplications par seconde. Quand tout ça se met à mouliner, la machine se transforme en radiateur d'appoint et les ventilateurs entonnent leur petit chant. Mon bureau a gagné quelques degrés, ce qui, un après-midi de beau temps, n'était pas franchement le bienvenu. On code, et on entend la machine forcer, comme un vieux réfrigérateur qui redémarre.
+
+Le modèle en question s'appelle Qwen3.6, un descendant chinois de la grande famille des grands modèles de langage. Sa version compacte pèse 35 milliards de paramètres, dont seulement 3 milliards qui travaillent à chaque instant. Imaginez une entreprise de 35 000 personnes où, pour chaque tâche, on ne réveille que les 3 000 spécialistes concernés. Le reste dort. C'est ce qui permet de le faire tenir sur une machine personnelle : compressé, il occupe une vingtaine de gigaoctets, soit à peu près une saison de série en haute définition.
+
+Pour le piloter, j'utilise deux outils. Un serveur local qui héberge le modèle et répond aux questions, et un assistant de programmation qui joue les chefs d'orchestre : il lit mes fichiers, lance les compilations, écrit le code, relance les tests. Le modèle est le cerveau, l'assistant est les mains. Mon travail à moi, dans tout ça, se résume de plus en plus à celui d'un contremaître un peu méfiant.
+
+L'objectif, tant qu'à faire, n'était pas de générer un « bonjour le monde ». Puisque je trichais déjà sur le matériel, autant ne pas tricher sur le reste. J'ai donc visé une bête de concours, une des spécifications les plus retorses de tout l'écosystème Java : implémenter Jakarta Persistence, la norme officielle qui permet à un programme de discuter avec une base de données. Un monument aride, doté de sa propre suite de tests de conformité : 269 familles de tests, environ 1 745 vérifications individuelles, chacune impitoyable. Le genre de montagne qu'on ne gravit pas en un week-end, et que la plupart des gens sensés n'iraient pas attaquer avec une petite IA posée sur un ordinateur portable. Appelez ça de la folie. Moi j'appelle ça refuser de me faciliter la tâche : pour savoir si l'IA locale tient vraiment la route, il faut la mettre face à quelque chose de dur, pas lui tendre une perche. Une démonstration facile ne prouve que la facilité.
Tu es sûr pour « bonjour le monde » ?
—
Reply to this email directly, view it on GitHub
<#166?email_source=notifications&email_token=AABQTY5OC3B7JTELLFPYOHL5M7LWZA5CNFSNUABKM5UWIORPF5TWS5BNNB2WEL2QOVWGYUTFOF2WK43UKJSXM2LFO4XTKMBYGI3TCOJUGA32M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L#pullrequestreview-5082719407>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AABQTY7NG3LVZ77BWCYWDQ35M7LWZAVCNFSNUABFKJSXA33TNF2G64TZHM3DINBZGQ2TSMJVHNEXG43VMU5TKMRZHEZTMNZZHA4KC5QC>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/AABQTY3RA66OXVUVRW45VTD5M7LWZA5CNFSNUABKM5UWIORPF5TWS5BNNB2WEL2QOVWGYUTFOF2WK43UKJSXM2LFO4XTKMBYGI3TCOJUGA32M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KUZTPN52GK4S7NFXXG>
and Android
<https://github.com/notifications/mobile/android/AABQTY4VRDOFI2PHFXGLS6L5M7LWZA5CNFSNUABKM5UWIORPF5TWS5BNNB2WEL2QOVWGYUTFOF2WK43UKJSXM2LFO4XTKMBYGI3TCOJUGA32M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2K4ZTPN52GK4S7MFXGI4TPNFSA>.
Download it today!
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Nouvel article de Yann Blazart (auteur
yannblazart) pour la catégorie software / news.Sujet
Récit de deux semaines à implémenter Jakarta Persistence 3.2 avec un LLM local (Qwen3.6-35B-A3B) sur un MacBook M5 Max, entièrement hors ligne. Ton grand public façon Scientific American : ce qui marche, ce qui déraille, et ce que ça dit de l'état réel de l'IA locale pour du vrai travail d'ingénierie. ~8 000 mots, temps de lecture ~28 min.
Contenu de la PR
_posts/2026-08-31-jai-fait-coder-mon-mac-tout-seul.md— l'article (Markdown, front matter Jekyll,toc: true)..mmd— le blog Markdown ne rend pas mermaid nativement.Vérifié
jekyll serve) : titre, auteur, date, sommaire, vignette et toutes les images inline s'affichent correctement.—), ton volontairement vivant.🤖 Generated with Claude Code
https://claude.ai/code/session_01NZfnP6AWEm5WLqNVNHGK6R