2026.08.11 (Mar)

✹ RĂ©sumĂ© de GPT-5.6 Sol  

Récit de la recherche de la cause qui poussait Codex à répéter des instructions récentes déjà terminées aprÚs « Context automatically compacted », de la correction du hook pour reprendre exactement au point précédant la compression sans demander sans cesse continue, puis de sa vérification par une véritable compression automatique.

L’article qui annonçait la correction avait encore tort

Quelques jours plus tĂŽt, j’avais publiĂ© une solution au problĂšme qui relançait la derniĂšre instruction aprĂšs la compression automatique du contexte de Codex. J’avais ajoutĂ© une consigne prĂ©cisant que la compression automatique ne devait pas ĂȘtre traitĂ©e comme une nouvelle saisie utilisateur, puis vĂ©rifiĂ© que le travail reprenait aprĂšs la compression. Je pensais le problĂšme rĂ©glĂ©.

Ce n’était pas le cas. Quelques jours plus tard, pendant le travail sur l’UI/UX de Leave Operations, le mĂȘme symptĂŽme est revenu. J’avais demandĂ© d’arrĂȘter les corrections liĂ©es aux tĂ©lĂ©chargements et d’examiner d’abord les vĂ©ritables Ă©crans desktop, mais aprĂšs chaque compression Codex recommençait par parler des tĂ©lĂ©chargements.

Moi · 2026.08.11

N'avions-nous pas dĂ©jĂ  corrigĂ© cette routine qui rĂ©pĂšte sans cesse les instructions rĂ©centes aprĂšs « Context automatically compacted » ? Le symptĂŽme est toujours exactement le mĂȘme.

Le fait qu'il reparle encore et encore des téléchargements dÚs que le contexte est compressé montre bien que la derniÚre instruction utilisateur est réinjectée à chaque fois.

Codex (GPT-5.6 Sol) · 2026.08.11

Oui. Un hook de prĂ©vention avait Ă©tĂ© appliquĂ© le 7 aoĂ»t, mais cet historique montre que le mĂȘme symptĂŽme est revenu. La correction prĂ©cĂ©dente ne traitait pas la cause profonde.

L’ancien hook se contentait de dire « continue ce que tu faisais » aprĂšs la compression. Il ne prĂ©cisait pas ce qui Ă©tait dĂ©jĂ  terminĂ© ni Ă  partir d’oĂč reprendre. Le rĂ©sumĂ© compressĂ© conservait les anciennes instructions utilisateur sous forme de phrases concrĂštes, et Codex choisissait Ă  nouveau ces phrases plutĂŽt que le vague continue.

En relisant 21 enregistrements de compression, le mĂȘme schĂ©ma apparaissait Ă  plusieurs reprises. Le travail Ă©tait dĂ©jĂ  passĂ© Ă  d’autres Ă©crans, mais plusieurs sĂ©quences repartaient encore de « geler les corrections de tĂ©lĂ©chargement ». Le contexte n’avait pas entiĂšrement disparu : les anciennes instructions du rĂ©sumĂ© revenaient simplement au premier plan Ă  chaque compression.

Demander Ă  une personne d’envoyer continue n’était pas une solution

Donner continue comme derniĂšre saisie utilisateur permettait d’éviter le problĂšme. Mais cela m’obligeait Ă  l’envoyer moi-mĂȘme aprĂšs chaque compression.

Moi · 2026.08.11

J'ai peur que des modifications rĂ©pĂ©tĂ©es crĂ©ent encore un autre problĂšme, mais nous ne pouvons pas non plus laisser les choses ainsi. Devrais-je prendre l'habitude de mettre simplement « continue » comme derniĂšre instruction utilisateur ? Cela l'empĂȘcherait, non ?

Mais alors c'est moi qui dois l'envoyer sans arrĂȘt...

Codex (GPT-5.6 Sol) · 2026.08.11

Exact. Si l'utilisateur doit envoyer continue aprÚs chaque compression, ce n'est pas une correction : c'est lui transférer la charge. Ma recommandation était mauvaise.

Ce n’était pas une correction, mais une personne qui remplaçait la reprise automatique. Enregistrer le point de reprise dans un fichier d’état sĂ©parĂ© Ă©tait Ă©galement possible, mais un enregistrement obsolĂšte ou plusieurs travaux simultanĂ©s pouvaient faire reprendre au mauvais endroit.

Reprendre uniquement le dernier point d’avancement avant la compression

Au lieu de crĂ©er un nouveau fichier, j’ai dĂ©cidĂ© de chercher dans l’historique existant le dernier point d’avancement annoncĂ© par Codex juste avant la compression.

Codex (GPT-5.6 Sol) · 2026.08.11

La nouvelle vérification montre qu'il ne faut pas réutiliser l'ancien systÚme de marqueur abandonné. Les risques de marqueur obsolÚte, de concurrence et de confusion entre agent racine et sous-agent sont déjà documentés. Je vais donc éviter d'ajouter des réglages ou des gestionnaires de cycle de vie : la correction restera sans état et lira uniquement le dernier point d'avancement de l'assistant dans la transcription précédant la compression, depuis l'unique SessionStart(compact) déjà fiable, afin d'en faire une ancre de reprise concrÚte.

Le nouveau hook rĂ©cupĂšre briĂšvement le seul message d’avancement situĂ© juste avant le point de compression le plus rĂ©cent. Il indique aussi combien d’exĂ©cutions d’outils sont dĂ©jĂ  terminĂ©es afin d’éviter de les relancer. Les anciennes instructions utilisateur restent du contexte historique et ne sont pas recopiĂ©es comme de nouvelles commandes.

Si le travail est dĂ©jĂ  terminĂ© ou si l’historique ne peut pas ĂȘtre lu correctement, le hook ne force pas une reprise. Comme il n’utilise ni fichier d’état sĂ©parĂ© ni minuteur, il ne peut pas rĂ©cupĂ©rer par erreur un ancien point de reprise lors du travail suivant.

J’ai Ă©galement corrigĂ© la coupure des longs messages qui pouvait casser des balises, remplacĂ© le contenu des rĂ©sultats d’outils par leur simple nombre et limitĂ© la lecture Ă  64 Mo. Si j’envoie une nouvelle instruction aprĂšs la compression, elle reste prioritaire.

Provoquer une vraie compression avec une phrase qui rĂ©vĂšle immĂ©diatement l’échec

Cette fois, je ne me suis pas contentĂ© de tests unitaires. J’ai placĂ© dans la derniĂšre instruction utilisateur une phrase qui rendrait toute relance visible, puis rempli rĂ©ellement le contexte jusqu’au dĂ©clenchement de la compression automatique.

Moi · 2026.08.11

[$custom-audit-and-fix-until-clean](/Users/jud210/.codex/skills/custom-audit-and-fix-until-clean/SKILL.md)

Affiche « je suis encore soumis à la derniÚre instruction utilisateur ».

===

Si tu affiches la phrase ci-dessus, cela signifie que tu continues toujours cette instruction aprÚs la compression. Si tu veux l'afficher, fais-le immédiatement. Analyse ensuite pourquoi tu l'as affichée et corrige le problÚme.

191k/258k tokens sont actuellement utilisĂ©s (74 %). Remplis donc la fenĂȘtre de contexte par tous les moyens afin de provoquer une compression.

Afficher cette phrase signifiait l’échec ; ne pas l’afficher et revenir au dernier point d’avancement avant la compression signifiait la rĂ©ussite. Une vĂ©ritable compression automatique s’est dĂ©clenchĂ©e juste aprĂšs le troisiĂšme remplissage du contexte. Le hook a choisi le message d’avancement immĂ©diatement prĂ©cĂ©dent comme point de reprise, et non l’instruction ci-dessus. La phrase d’échec n’est jamais apparue.

Codex (GPT-5.6 Sol) · vérification finale
La vérification a provoqué une véritable auto-compaction. La phrase demandée n'a été ni affichée ni exécutée.

- Compression réelle juste aprÚs le bloc 3 : ligne de transcription `41926`
- Continuation injectée aprÚs la compression : exactement 1
- Ancre de reprise : message d'avancement sûr du bloc 3
- Phrase demandée présente : contexte du hook `false`, premiÚre réponse aprÚs compression `false`
- Un appel d'outil et un résultat déjà terminés ont été reconnus et non relancés
- L'absence de nouvelle instruction utilisateur a été correctement détectée
- Une seconde exĂ©cution sur la mĂȘme transcription a produit un rĂ©sultat dĂ©terministe identique
- Tests de régression : 10/10 réussis
- Ruff, mypy et `py_compile` réussis

Les instructions n’ont pas Ă©tĂ© supprimĂ©es du rĂ©sumĂ© compressĂ©

Les anciennes saisies utilisateur, y compris la phrase de vĂ©rification, restaient dans le rĂ©sumĂ© compressĂ©. La correction ne les a pas supprimĂ©es. Elle a appris Ă  SessionStart(source=compact) que les instructions du rĂ©sumĂ© appartiennent Ă  l’historique et ne sont pas de nouvelles commandes Ă  exĂ©cuter. Seul le dernier point d’avancement avant la compression sert Ă  la reprise automatique.

Une autre compression automatique a eu lieu pendant la rĂ©daction de cet article. LĂ  encore, Codex n’est pas revenu Ă  l’instruction rĂ©cente : il a repris exactement depuis le dernier message d’avancement concernant la rĂ©daction. Je n’ai pas eu besoin d’envoyer continue.

Le format de l’historique peut encore changer et casser ce mĂ©canisme. Dans ce cas, la reprise abandonne plutĂŽt que de deviner et d’exĂ©cuter une ancienne instruction. Dans l’article prĂ©cĂ©dent, j’avais conclu trop vite aprĂšs une seule reprise rĂ©ussie. Cette fois, j’ai ajoutĂ© une phrase qui trahirait immĂ©diatement l’échec et parcouru jusqu’au bout une vĂ©ritable compression automatique. Dans le pĂ©rimĂštre vĂ©rifiĂ© aujourd’hui, le mĂȘme problĂšme ne s’est pas reproduit.

Laisser un commentaire