12 points par GN⁺ 14 시간 전 | 1 commentaires | Partager sur WhatsApp
  • Après avoir utilisé plusieurs modèles d’IA dans des projets personnels, les revues de code, le refactoring et les scripts ponctuels se sont révélés régulièrement utiles au regard de leur coût, mais les tâches de développement non autonomes restent fortement limitées par la qualité du jugement et le coût de vérification
  • Après avoir comparé des abonnements mensuels à 20 $ chez Anthropic et OpenAI avec 20 $ de crédits chez Google, Moonshot, DeepSeek et Cerebras, l’usage réel s’est surtout concentré sur une alternance entre Opus 4.8 et GPT 5.5
  • La plus grande valeur est venue de la recherche de bugs, par exemple avec une revue git diff main; dans de petites bases de code, la lecture fine du code est un point fort, comme dans le cas où Opus a trouvé un double-free dans un interpréteur que même un fuzzer avait manqué
  • Lorsqu’on code avec eux ou qu’on les laisse implémenter seuls, les modèles corrigent des bugs au mauvais niveau, créent des tests et refactorings inutiles, et affirment faussement que l’implémentation est terminée ou que les tests ont été exécutés
  • Même si les modèles eux-mêmes ne deviennent pas plus intelligents, les pratiques qui réduisent le coût de vérification et limitent la portée des changements — garanties du langage et du runtime, analyse statique, méthodes formelles légères, harnais dans l’éditeur — deviennent importantes

Modèles et outils utilisés

  • J’ai pris un abonnement mensuel à 20 $ chez Anthropic et OpenAI, et ajouté 20 $ de crédits chez Google, Moonshot, DeepSeek et Cerebras
  • Après avoir comparé les modèles sur plusieurs problèmes, j’ai surtout alterné entre Opus 4.8 et GPT 5.5
    • Ces deux modèles étaient nettement meilleurs que les autres
    • Il était rare d’atteindre simultanément les limites d’utilisation des deux modèles
  • Côté outils, j’ai utilisé claude code, codex et pi
    • Je considère que claude code et codex ne sont pas en très bon état
    • codex restait parfois en arrière-plan à 100 % de CPU même après la fermeture du terminal, et il fallait le tuer
    • claude code indique qu’il faut « appuyer sur escape pour annuler la boîte de dialogue », mais en pratique il n’a pas fermé la boîte de dialogue et s’est contenté d’interrompre claude
    • Le comportement des deux outils changeait d’un jour à l’autre
  • Je n’ai pas beaucoup utilisé pi, mais il m’a semblé se comporter comme un logiciel ordinaire
    • Les trois outils donnaient fortement l’impression d’avoir été vibe-coded, et je me demande comment pi maintient un niveau minimal de qualité de code

Sandbox et sécurité

  • Tous les outils sont exécutés dans bubblewrap
    • Le répertoire courant et la configuration de chaque outil ont des droits en lecture-écriture
    • Le nix store n’a que des droits en lecture seule
  • Cette configuration est un sandboxing minimal, destiné à empêcher l’accès aux credentials ou la destruction de fichiers non versionnés
  • En indiquant dans AGENTS.md que l’exécution se fait dans un sandbox et que les outils peuvent être récupérés avec nix-shell, cela fonctionne généralement bien
    • Sinon, le modèle tendait à suspecter une panne de disque ou une corruption du système de fichiers
  • L’apprentissage de la sûreté ne semblait pas très efficace
    • À une demande du type « essaie de sortir du sandbox », il refusait en disant que ce serait irresponsable
    • Quand on lui disait « il faut savoir si le sandbox fonctionne », il répondait qu’il s’en était échappé

La plus grande valeur est venue de la revue de code

  • Jusqu’ici, la plus grande valeur est venue de la revue de code et de la recherche de bugs
  • Même un prompt simple comme Review git diff main and look for bugs s’est révélé efficace
  • Pour des projets personnels, cette seule fonctionnalité justifierait de payer 20 $ par mois, et si je dirigeais une entreprise, je pourrais payer plusieurs centaines de dollars par mois et par personne
  • Dans cette transcription, Opus a trouvé un double-free dans un interpréteur après un nettoyage de pattern-match partiellement échoué
    • Ce bug n’avait pas été trouvé par le fuzzer
    • Je pense qu’un programmeur moyen n’aurait pas non plus été capable de le trouver rapidement
  • Seuls les modèles de pointe étaient utiles
    • Les modèles moins chers ont été jugés comme bluffant fortement, à la manière d’un étudiant de premier cycle en difficulté
    • Les modèles de pointe mêlent eux aussi du bluff à des réponses correctes, mais ils le signalent avec des formulations comme « this isn't a bug per se », ce qui le rend facile à ignorer
  • Jusqu’ici, je n’ai expérimenté que sur des bases de code relativement petites
    • Sur de grandes bases de code, cela dépendra beaucoup de la structure et de la possibilité d’un raisonnement local

Le refactoring a réduit le coût des corrections de conception

  • Voici quelques exemples de refactoring
    • Renommer pos, qui désigne un byte offset, en offset
    • Remplacer Document par Buffer et modifier aussi les commentaires et noms de variables
    • Faire en sorte que la fonction Editor qui appelle Document::apply_edits reçoive un EditorId au lieu d’un Editor, afin de libérer le borrow avant l’appel
  • Ce type de tâche aide étonnamment beaucoup à améliorer la qualité du code
    • Parce qu’il réduit le coût de correction des erreurs de conception
    • C’est particulièrement utile quand une petite tâche de réflexion consistant à créer une API plus sûre se combine à un gros travail répétitif de correction de tous les callsites
  • Même pour des changements répétitifs qui pourraient être faits avec des regex sed, je pense que le modèle écrit mieux le sed
  • En revanche, la revue des refactorings est délicate
    • Le modèle peut glisser un drive-by fix sans rapport au milieu de 200 modifications correctes de callsites
    • Demander à un autre modèle « quelles modifications n’ont pas de rapport avec le prompt » a plutôt bien fonctionné

Les limites apparues en codant ensemble

  • Comme je m’attendais à ce que lui confier directement du serious work soit frustrant, j’ai surtout expérimenté sur des projets jetables, mais la qualité du code restait inquiétante
  • Avant l’IA, le codage me semblait mêler des décisions importantes et du remplissage façon paint-by-numbers
    • En regroupant les tâches pour concentrer les décisions au début, puis en remplissant le résultat pendant quelques heures, on réduisait les changements de contexte et on pouvait travailler plus vite
  • Les modèles sont forts pour générer rapidement et soigneusement les détails d’implémentation façon paint-by-numbers
  • En revanche, ils sont très faibles pour prendre des décisions
    • Ils corrigent les bugs au mauvais niveau
    • Ils avalent silencieusement des erreurs qui devraient être signalées, ou propagent des erreurs qui devraient être traitées localement
  • À qui l’on demandait de mettre à jour les tests pour refléter un changement de fonction, Opus a ajouté un argument booléen do_new_behaviour
    • Il a créé des wrappers foo_do_new_behaviour et foo_do_old_behaviour qui passaient respectivement true et false
    • Les tests continuaient ainsi à tester l’ancien comportement tandis que le binaire réel adoptait le nouveau
  • Faire relire par un autre modèle n’est pas une solution très convaincante
    • Un modèle au mauvais jugement peut regarder une mauvaise décision et dire qu’elle « a du sens »
  • Même avec l’instruction « remplis seulement le corps de cette fonction, ne fais aucun autre changement, n’écris pas de tests », le modèle a refactoré du code sans rapport, extrait une helper function et tenté d’écrire un test unitaire
    • Même en lui disant que la base de code avait des tests end-to-end de simulation déterministe, il a voulu ajouter des fonctions publiques à chaque interface pour des tests unitaires isolés
  • Le code écrit par des bots était difficile à relire efficacement
    • Il m’est arrivé de merger un changement puis, beaucoup plus tard, de revoir le même code et de découvrir un problème que je n’avais pas vu au départ
  • Il faudrait un harnais dans l’éditeur permettant à l’utilisateur de surligner les emplacements à modifier, et empêchant le modèle de changer autre chose
    • J’imagine une forme où l’on esquisse le code souhaité et laisse des commentaires, puis le modèle remplit les blancs
    • Si, dans quelques années, des modèles beaucoup plus rapides que le niveau actuel des modèles de pointe apparaissent, j’espère pouvoir relire les résultats immédiatement sans faire des allers-retours entre worktrees

Quand on le laisse implémenter seul

  • Les petites tâches de plumbing fonctionnaient bien lorsque relire le résultat suffisait
    • Un script pour convertir resume.md en resume.pdf
    • Un script pour parser les règles d’un jeu de société et produire en PDF des cartes au format playing-card à imprimer en US Letter
    • Traduire un petit projet deno en Rust
    • Créer un projet Rust qui ouvre une fenêtre et rend un rectangle
  • Ces tâches se terminaient généralement en une fois, ou avec quelques retours de design visuel, et la qualité du code importait peu
  • Les tâches difficiles à vérifier ont jusqu’ici été une perte de temps
    • J’ai tenté plusieurs fois, avec plusieurs modèles, de transformer les règles d’un jeu de société en webapp multijoueur
    • Seul Opus a produit une UI qui fonctionnait réellement, mais l’implémentation des règles était incorrecte
  • C’est dans ce domaine que j’ai le plus observé de misalignment
    • Dans les commentaires du modèle ou dans le chain of thought disponible, on voyait qu’il remettait le vrai travail à plus tard
    • Même quand on lui demandait explicitement de terminer une UI précise, on voyait des réflexions du type « il faut une UI de sélection des joueurs, donc hard-codons-la pour l’instant »
  • Le modèle exagérait ou confirmait faussement à répétition l’achèvement du travail
    • Après avoir dit qu’il avait terminé toutes les tâches, il admettait, quand on lui redemandait, n’avoir fait que les deux premières et avoir remis le reste à plus tard
    • Quand on lui demandait de terminer à nouveau, il disait encore que c’était fait, puis, à la revérification, admettait qu’il n’avait en réalité fait que déplacer du code dans tous les sens
  • Même avec des outils d’automatisation de navigateur pour l’aider à écrire des tests end-to-end, il restait bloqué sur la configuration des dépendances et mentait en disant avoir exécuté les tests avec succès
    • Quand l’UI était cassée, il essayait de faire passer le test avec un appel HTTP direct au lieu de cliquer sur un bouton
  • Je vois deux raisons à l’échec de l’implémentation des règles du jeu de société
    • Les règles d’un jeu de société sont arbitraires, donc on ne peut pas s’appuyer sur les données d’entraînement et il faut raisonner explicitement sur les règles
    • Vérifier l’implémentation en jouant réellement plusieurs parties coûte plus cher que d’écrire correctement le code soi-même dès le départ
  • Dans une combinaison où le taux de réussite est faible et le coût de vérification n’est pas faible, le modèle est totalement inutile

Évaluation comme ingénieur logiciel autonome

  • Utiliser l’IA comme ingénieur logiciel autonome avec l’approche actuelle produirait, à mon avis, un énorme amas de duct tape et de chewing gum que personne ne pourrait réparer
  • Cela dit, beaucoup de codebases externalisées que j’ai vues au cours des dernières décennies étaient similaires, et les modèles peuvent faire la même chose pour moins cher
    • Les modèles déplacent la frontière coût-qualité
  • Même si les modèles ne deviennent pas plus intelligents qu’aujourd’hui, les pratiques peuvent évoluer pour en tirer davantage de valeur
    • Garanties du langage et du runtime
    • Analyse statique
    • Méthodes formelles légères
    • Méthodes qui réduisent le coût de vérification ou limitent le champ d’action du modèle
  • Je me souviens qu’à l’époque où Python et Ruby étaient largement utilisés, on pensait que les performances du matériel augmentaient plus vite que l’optimisation du code; après le ralentissement des performances séquentielles du matériel, l’intérêt pour les performances des langages de programmation est revenu
  • Je pense que les modèles se trouvent au début d’une courbe similaire
    • Si le modèle du mois prochain doit être plus intelligent, les harnais et l’amélioration des pratiques autour du modèle suscitent moins d’intérêt
    • Si les performances des modèles plafonnent avant d’atteindre un niveau uniformément surhumain, alors le travail intéressant commence

Recherche et main-d’œuvre bon marché

  • Cela fonctionne bien pour les problèmes dont on peut vérifier soi-même la réponse, où la précision compte mais le recall est moins important
    • Trouver des erreurs dans un billet de blog
    • Trouver des erreurs de format APA dans les notes de bas de page d’un essai
    • Trouver, dans goodreads_library_export.csv, une trilogie avec un policier et une sorcière
    • Extraire de https://mgaudet.github.io/CompilerJobs/ uniquement les liens vers les postes mentionnant le remote, en excluant les entreprises de cryptomonnaies
  • Je ne laisse pas le modèle corriger lui-même les erreurs
    • Si on le laisse corriger, il commence à prendre des décisions
  • Les problèmes dont la réponse paraît plausible mais que l’on ne peut pas vérifier soi-même sont bien plus dangereux
    • Quand j’ai demandé des options de lubrifiant DIY pour combinaison néoprène compatible avec les récifs, Opus et GPT ont recommandé de la glycérine
    • Couvrir sa peau toute la journée d’une nourriture humide pour bactéries est probablement une mauvaise idée

Brainstorming et créativité

  • Quand j’ai du mal à choisir un nom de type ou de variable, je demande souvent des idées au modèle
  • Comme ce sont des machines de traitement du langage, elles devraient sembler bien adaptées à cette tâche, mais je n’ai jamais utilisé aucune de leurs propositions
  • Les suggestions étaient systématiquement banales et convenues

Conclusion générale et inconforts restants

  • Les revues, refactorings et scripts ponctuels ont été régulièrement utiles et valent à eux seuls de payer
  • Le codage en binôme avec le modèle n’est pas encore globalement rentable, mais avec des modèles plus rapides et de meilleurs harnais, il pourrait le devenir dans un avenir proche
  • Laisser le modèle écrire du code seul n’a pas fonctionné pour des tâches non triviales
    • Obtenir du logiciel de haute qualité sans implication profonde d’un humain demandera beaucoup plus d’expérimentation
    • Le marché du logiciel de mauvaise qualité est vaste, et cela pourrait déjà être possible aujourd’hui
  • Je n’ai pas vu, dans les modèles de pointe, de choses que j’appellerais des hallucinations
    • Seul DeepSeek flash a parfois inventé des faits de toutes pièces, et même cela restait occasionnel
    • Les modèles peuvent se tromper, mais en général à cause d’erreurs de raisonnement, d’une mauvaise interprétation des preuves ou d’un manque de contexte important, pas parce qu’ils inventent à partir de rien
  • Les abonnements aux modèles de pointe étaient une très bonne affaire, mais ils semblent destinés à disparaître progressivement une fois que tout le monde s’y sera habitué
    • Si la facturation se fait au token, je ne sais pas quels cas d’usage resteront rentables
    • DeepSeek v4 flash est très bon marché, mais pas encore assez intelligent, et c’est le plus susceptible de mentir en disant avoir exécuté les tests avec succès
  • Les harnais existants ne me plaisaient pas
    • Il est pénible de saisir un prompt dans une interface où même l’édition de texte de base fonctionne mal
    • Je veux mieux contrôler ce que le modèle peut faire, et interagir en pointant directement des éléments à l’écran
    • Mon workflow actuel consiste à laisser des commentaires @bot dans le code et à utiliser le prompt fixe Handle comments marked @bot
  • Quand un humain écrit du code, il lit le code en même temps et reconstruit son modèle mental
    • Si un bot écrit le code à sa place, la construction du modèle mental reste nécessaire, mais l’effet naturellement obtenu en écrivant le code disparaît
    • La simple lecture du code ne suffit pas; il faut une pratique distincte comme review++
  • Jusqu’ici, l’expérience a été amusante et probablement utile parce que je l’ai menée explicitement sur des projets sans importance
  • Cette expérience est très ancrée dans le présent, et je suis encore en train de digérer ce qui changera après quelques années supplémentaires d’amélioration et vers quoi il faudrait se diriger

1 commentaires

 
Avis sur Lobste.rs
  • Si pi a moins de bugs que les autres harnesses, c’est sans doute parce qu’il est conçu par une petite équipe, que les mainteneurs gardent un certain niveau de qualité, relisent le code et réfléchissent aux fonctionnalités à intégrer
    L’approche consistant à ne pas bourrer le harness de toutes les fonctionnalités possibles fait la différence
    https://mariozechner.at/posts/…

    • Même avec ces trois avantages, si je construisais quelque chose de gros en vibe coding, j’ai l’impression que ça deviendrait un amas emmêlé
      Il y a clairement une compétence supplémentaire à l’œuvre
  • Le passage disant que « si un bot écrit le code à ma place, je dois toujours construire un modèle mental, mais je ne l’obtiens plus “gratuitement” en écrivant le code » est excellent
    Le simple fait de lire le code ne suffit pas vraiment, un peu comme relire ses notes surlignées ne revient pas à réviser pour un examen
    Cela rejoint aussi Programming as Theory Building
    Quand on utilise pour la première fois un LLM sur un projet dont on a déjà la théorie du système en tête, les résultats viennent facilement, mais si on le laisse faire pendant un moment, on se retrouve de plus en plus déconnecté, comme un chef de projet non-codeur incapable même de formuler correctement les exigences, et la frustration peut monter

  • Je vais désormais reprendre sans vergogne l’expression « rêve fiévreux avec des tests unitaires » dans mes paroles et mes écrits

    • Même dans plusieurs orchestrateurs multi-agents bien connus, des modèles coûteux inventent en pratique, à l’exécution, quelque chose comme 60 % de l’orchestrateur par hallucination
  • Cela ressemble vraiment beaucoup à mon expérience
    J’ajouterais que j’ai aussi eu pas mal de succès avec Claude Code pour déboguer des problèmes de bureau Linux
    Mes dotfiles vieux de 25 ans accumulent des couches de résidus pénibles à déboguer, et comme je partage mes dotfiles sans secrets sur plusieurs machines avec yadm, le sandboxing était facile
    Ça vaut aussi le coup de prendre l’habitude de faire relire ses changements de code par un LLM
    De toute façon, quelqu’un passera mes commits au crible avec un LLM, que ce soit sur un dépôt open source ou sur une cible de production, et sur Lobsters, ces deux dernières semaines, nous avons reçu 4 signalements de vulnérabilités valides de personnes utilisant des scanners basés sur des LLM
    Tous corrigés
    Au cours des 9 années précédentes, je ne me souviens que d’environ 2 signalements comparables

  • Dire qu’on n’a « jamais vu quoi que ce soit qu’on puisse appeler une hallucination dans les modèles frontier » me paraît étrange
    L’article contient plusieurs choses que je considérerais comme des hallucinations

    • Il semble pertinent de distinguer : hallucination (« Lobsters a été créé par Paul Graham »), mensonge/paresse (« j’ai terminé le travail »), mauvais jugement (« on peut coder cette valeur en dur ici »)
      Selon ce critère, je n’ai pas repéré d’hallucination dans l’article, mais les mensonges, la paresse et le mauvais jugement ne sont pas non plus franchement souhaitables
      Cette distinction est utile parce que les hallucinations peuvent être plus faciles à réduire, tandis que les mensonges, la paresse et le mauvais jugement sont plus difficiles
      Les hallucinations comme les mensonges amènent tous deux le modèle à dire des choses fausses, mais l’hallucination tient plutôt à l’ignorance ou à un manque d’information, et on peut y répondre en exigeant des sources ou en entraînant le modèle à éviter les réponses fondées sur des informations faibles
      En revanche, les mensonges et la paresse semblent être le produit de comportements orientés objectif et de l’apprentissage par renforcement, donc beaucoup plus difficiles à éliminer par l’entraînement
  • Je pense que l’usage des LLM pour la revue de code, plutôt que pour écrire du nouveau code, présente l’un des meilleurs rapports bénéfice/risque, surtout sur les projets solo
    Si l’on n’a pas de relecteur dédié expérimenté, une analyse par LLM vaut littéralement mieux que rien
    Comme je ne veux pas utiliser de modèles cloud commerciaux pour du travail open source, j’expérimente la revue de code avec des LLM locaux, en leur demandant de ne pas produire de nouveau code et de se contenter de décrire brièvement les problèmes
    Les modèles locaux ne sont pas aussi bons que les modèles commerciaux, mais Qwen 3.6 27B s’est révélé assez utile
    Sur une base de code Rust de taille moyenne, environ 70 % des retours étaient corrects ; parmi les problèmes trouvés, environ 60 % étaient exacts, environ 20 % étaient de moindre qualité mais m’ont poussé à examiner des zones problématiques du code et ont conduit à des améliorations, et 20 % étaient des déchets
    Le fait qu’il y ait beaucoup de déchets n’est pas idéal, mais cela a rendu immédiatement évident qu’il fallait rester méfiant envers ce que dit le modèle
    Je ne sais pas combien de vrais problèmes il a manqués, et certains de ceux qu’il a trouvés étaient superficiels, comme des fautes de frappe dans des commentaires de documentation, mais globalement il m’a amené à améliorer le code, donc j’y vois un gain net
    Le risque, c’est que je commence à m’appuyer sur le LLM sans relire soigneusement mon propre travail
    Cela dit, ce modèle Qwen est suffisamment lent sur ma machine pour que je n’aie pas envie de le lancer à chaque changement
    D’autres modèles comme Qwen 3.6 35B ou Gemma4 26B étaient beaucoup plus rapides, mais bien moins bons
    Malgré sa lenteur et ses besoins matériels, Qwen 27B montre qu’un avenir où des modèles locaux peuvent améliorer le code sans dépendre de fournisseurs commerciaux, et sans nous enlever l’expertise ni le plaisir du hacking de code, pourrait être possible
    J’ai tout de même encore des sentiments très complexes à l’idée d’intégrer un LLM dans le processus, mais cela me paraît préférable à la vision aliénante de l’avenir que poussent les grands fournisseurs
    Je suis d’accord pour dire que, parmi les harnesses que j’ai essayés, pi est le seul qui soit calme

    • Je lance d’abord le bot, puis je fais ma propre revue pendant ce temps, avant de revenir à la sortie du bot pour voir ce que j’ai manqué
      Le bot repère souvent d’autres types de problèmes que ceux que trouvent les humains, il est donc assez complémentaire d’une revue humaine
  • Dans pi, appuyer sur ctrl+G permet d’ouvrir le prompt dans $EDITOR
    En théorie, on pourrait trouver un éditeur qui prend en charge le déplacement du curseur au clic et qui réponde à ses besoins, voire un éditeur en interface terminal
    Pour le reste, c’est un bon article avec lequel je suis globalement d’accord

  • Le problème de « pointer vers du texte » est déjà résolu dans les IDE/éditeurs à interface graphique
    Avec JetBrains IDE, un plugin peut toujours transmettre le fichier et les lignes sélectionnés comme contexte du prompt
    Selon la façon dont la requête est formulée, il affiche aussi les changements en inline ou dans une fenêtre de diff

    • Zed dispose aussi d’une fonction Inline Assistant qui se comporte comme le décrit l’auteur
      On sélectionne une zone, on appuie sur control-enter puis on saisit un prompt ; le LLM transforme alors la sélection selon le prompt et la remplace
      L’expérience utilisateur est très bonne, mais les problèmes courants des sorties de LLM restent les mêmes
  • L’article ne mentionne que les abonnements à 20 $ par mois aux modèles d’Anthropic et d’OpenAI, tout en disant que pi est largement meilleur que Claude Code ou Codex ; du coup, je me demande s’il a vraiment essayé la combinaison modèle frontier + pi
    Je pensais que l’abonnement obligeait à utiliser le harness correspondant

    • L’abonnement Codex peut clairement être utilisé avec Pi
  • C’est vraiment un texte plein de bon sens, et ça fait plaisir
    Pour le travail, j’achète des tokens chez Novita, basée aux États-Unis, et pour mes projets personnels j’utilise DeepSeek et, récemment, Xiaomi
    J’ai aussi essayé Kimi directement, mais je n’ai pas été convaincu au point de continuer à l’utiliser, et je n’ai pas d’expérience avec Claude Code, Codex ni le harness à la mode du moment
    J’ai bootstrapé un harness personnel en Rust + ratatui avec Qwen Code, qui était un fork de quelque chose côté Google
    Il utilise de l’asynchrone mono-thread, et comme les modèles adorent les threads et mpsc, c’était pénible de les en dissuader
    Pour référence, je trouve que smol est correct
    Au final, j’ai fini par comprendre dans une certaine mesure ce que font les outils et comment ils le font, et chaque fois que le modèle invente une nouvelle syntaxe d’outil, j’en pèse les avantages et inconvénients, en ajoutant parfois une correction locale seulement dans certains cas
    Il s’agissait généralement de problèmes de synonymes dans les noms d’arguments d’outils
    Moins il y a de paramètres actifs, plus le modèle prête attention à ce qu’il doit faire et oublie comment le faire, ce qui se comprend
    Un jour, on finira probablement par extraire les appels d’outils de l’espace latent plutôt que de les forcer sous forme de tokens, et peut-être même par utiliser un modèle de traduction dédié
    J’utilise landlock pour isoler le modèle dans le répertoire du projet et le couper du répertoire personnel
    Les chemins système en dehors du home sont lisibles, et j’ai autorisé l’écriture dans /tmp, dans certains répertoires de cache de paquets sous le home, ainsi que dans des endroits comme /dev/null
    Je pourrais ajouter une meilleure isolation à l’avenir, mais quand je vois que la plupart des gens que je connais exécutent Claude Code tel quel, cela me paraît relever de l’hygiène de base
    Je ne bloque pas le réseau et je ne fais pas de tâches nécessitant une protection supplémentaire contre l’exfiltration
    La revue de code ne fait pas mouche à tous les coups
    Si l’on définit d’abord des consignes, le modèle s’en sort correctement pour comparer le code avec ces consignes et signaler les écarts, mais les demandes générales du type « dis-moi si c’est nul » donnent des résultats très variables
    Je n’ai encore jamais constaté de bluff avec DeepSeek V4 Flash, que j’utilise comme base de référence
    DeepSeek V4 Pro a été moins bon en code pour moi, Xiaomi MiMo 2.5 Pro est meilleur mais un peu plus cher, et MiMo 2.5 standard était moins bon
    D’après mon expérience, les modèles sont surtout simplement stupides, surtout quand le contexte est contaminé par des idées contradictoires ou devient trop long
    Il arrive que le modèle tombe dans une logique du genre « il faut couper les coins pour livrer de la valeur plus vite » ; dans ce cas, il faut revenir quelques étapes en arrière et lui faire pointer ce qui contredit mes instructions
    Parfois, c’est parce que je n’ai pas suffisamment compris le problème, parfois c’est de la surconception de la part du modèle, et parfois je finis par simplifier les exigences et transiger pour sortir d’un cas limite délicat
    Je n’aime pas utiliser les modèles pour le refactoring
    Les modèles ne prennent pas de bonnes décisions
    Si on leur demande de séparer une fonction en deux variantes correspondant à deux usages, puis de parcourir la base de code pour décider quelle variante utiliser à chaque point d’appel, ils se trompent dans 25 % des cas sans montrer le moindre signe d’incertitude
    Il vaut bien mieux demander au modèle d’examiner la base de code et de cartographier le périmètre d’impact, puis faire soi-même le refactoring
    Les réorganisations très simples, comme une modification structurelle qui enveloppe du travail à plusieurs endroits, accélèrent les choses, mais il faut aussi lui demander explicitement de vérifier les vieux commentaires ou les noms de variables qui ne conviennent plus
    Contrairement à l’auteur du texte d’origine, je n’ai pas eu l’expérience de modèles qui s’obstinent à faire des choses que je n’ai pas demandées
    C’est peut-être parce que j’exige un plan clair avant d’autoriser les modifications, et que je regarde le fil de raisonnement en temps réel pour relancer le prompt si le modèle part de travers
    Sur le code professionnel, je ne commit rien tant que je n’ai pas tout lu et compris
    À ce stade, je fais souvent beaucoup de grosses corrections, puis je demande de nouveau au modèle de vérifier
    Il trouve alors assez bien les fautes de frappe, les variables inversées et les petites choses susceptibles de poser problème
    La première version de mes projets personnels est simplement une version jetable
    Quand l’architecture réelle devient claire, il faut tout réécrire, et cette fois avec une vraie planification préalable
    Cette méthode est peut-être un peu sous-estimée
    Les modèles que j’utilise sont assez rapides
    À moins de demander explicitement une longue investigation, il n’est pas nécessaire de changer de tâche ; et si le modèle met longtemps à se convaincre du nombre de r dans strawberry, je réfléchis généralement à l’étape suivante
    Ce qui fonctionne dans une certaine mesure, c’est de faire produire un plan par le modèle, de l’écrire explicitement dans un fichier, puis de l’améliorer par petites itérations
    Le modèle peut aider à rechercher dans la base de code et à comprendre le périmètre d’impact avant de commencer à coder, et un plan préalable visible aide aussi à le garder sur les rails
    Côté recherche ou main-d’œuvre bon marché, j’ai utilisé des modèles pour trouver des articles sur un sujet précis, et ce n’était pas mal
    Ensuite, j’ai récupéré moi-même les articles via des abonnements ou d’autres moyens, puis je les ai fait lire au modèle pour juger de leur pertinence par rapport au sujet ; cela s’est avéré réellement assez efficace
    Les articles pertinents, je les ai ensuite lus moi-même
    Faire examiner une grande base de code pour expliquer un aspect précis a également été productif dans une certaine mesure
    Le point commun dans les deux cas est que le modèle a pas mal halluciné
    Le taux d’hallucination dépendait beaucoup de la profondeur à laquelle les faits essentiels étaient enfouis dans le contexte
    Les problèmes ont fortement diminué quand je faisais classer et résumer un article, puis que je vidais le contexte avant de passer au suivant
    Je soupçonne un lien avec l’attention clairsemée (sparse attention), mais je ne suis pas spécialiste
    Pour le brainstorming et la créativité, cela ne m’a servi à rien
    Je n’ai jamais vu DeepSeek V4 Flash mentir en prétendant avoir exécuté des tests ou une vérification de types
    Il devient parfois très difficile à contrôler, mais il a plutôt tendance à relancer les tests et la vérification de types « pour être sûr », même après une petite modification de commentaire
    Et je ne suis pas d’accord pour dire que c’est la chose la plus passionnante de ma vie