Index
5 min de lecture

Compaction Codex : résumé chiffré et transfert de session

Comment Codex gère la compaction du contexte avec des résumés AES chiffrés, et pourquoi l'architecture de transfert entre sessions compte bien plus que la qualité de la synthèse.

En bref

Comment Codex gère la compaction du contexte avec des résumés AES chiffrés, et pourquoi l'architecture de transfert entre sessions compte bien plus que la qualité de la synthèse.

Utilisez Claude Code assez longtemps et vous finirez par tomber sur le message “Compacting conversation…”. Après ça, les réponses commencent à dériver et les temps d’attente s’envolent. La fenêtre de contexte de 200K tokens se remplit bien plus vite qu’on ne l’imagine.

Le bruit courait qu’OpenAI’s Codex gérait ce problème de façon plus intelligente, alors j’ai épluché toutes les analyses publiques disponibles.

La summarisation, c’est quand même oublier

Quand les conversations s’allongent, le fait que l’IA oublie les échanges précédents est une limite structurelle. La fenêtre de contexte plafonne à 200K tokens, et une seule session de coding peut facilement dépasser ça. Même avec une synthèse, la conversation d’origine est perdue — la précision se dégrade inévitablement.

Je l’ai vécu des dizaines de fois : demander des informations sur “la fonction dont on a parlé tout à l’heure” après une compaction, et recevoir une réponse complètement à côté.

  • La fenêtre par défaut de 200K tokens de Claude Code s’épuise en une seule grosse session de refactoring
  • Le résumé remplace l’original → le contexte détaillé disparaît → la qualité des réponses chute
  • L’aplatissement des résultats d’appels d’outils dans les résumés est particulièrement dévastateur

La compaction de Codex : un “résumé chiffré”

Kangwook Lee, CAIO chez Krafton, a fait de la rétro-ingénierie sur le pipeline interne de Codex via deux injections de prompt, avec des résultats fascinants.

Quand l’API compact() du modèle Codex est appelée, un LLM séparé côté serveur résume la conversation et renvoie le résultat chiffré en AES. Au tour suivant, ce blob chiffré est déchiffré, préfixé d’un prompt de passation indiquant “voici un résumé de la conversation précédente”, puis transmis au modèle.

  • Contenu quasi identique au prompt de compaction du Codex CLI open-source pour les modèles non-codex
  • La raison du chiffrement reste floue — il contiendrait peut-être des données de restauration d’appels d’outils
  • Reproductible en 35 lignes de Python (script publié par Kangwook Lee)
  • L’API officielle d’OpenAI supporte la compaction automatique côté serveur via le paramètre compact_threshold

La vraie différence : le transfert de contexte entre sessions

Plus intéressant que la compaction elle-même, c’est le transfert de contexte entre sessions. L’automatisation mise en place par un développeur était impressionnante — j’appelle ça le pattern “session handover”.

Juste avant la compaction, les outils d’écriture sont bloqués et seuls les messages utilisateur et les blocs de réflexion sont extraits du log de session JSONL. Ça réduit le volume de 98% par rapport à l’original. Ensuite, trois sous-agents repèrent les lacunes dans le résumé en fouillant les logs d’origine et compilent le tout dans un fichier resume-prompt.md.

Quand le file watcher de VS Code détecte ce fichier, une nouvelle session s’ouvre automatiquement et hérite du contexte précédent de façon transparente.

  • Un hook pre-compact bloque les écritures avant la compaction → empêche les modifications de code dans un état incomplet
  • La conversion JSONL → MD ne conserve que les messages utilisateur + messages système + blocs de réflexion
  • Les sous-agents effectuent une analyse des lacunes et récupèrent les informations manquantes dans les logs d’origine
  • Amélioration de l’efficacité de build rapportée à 10x

Le vrai enjeu : recherche dans les logs de session et KV cache

Les données de session s’accumulent sous forme de fichiers JSONL, donc le facteur déterminant, c’est la précision avec laquelle on peut retrouver le contexte dont on a besoin. La réponse n’est pas dans une meilleure synthèse — c’est dans la recherche par récupération à travers les sessions passées.

En tenant compte des taux de hit du KV cache, on peut réutiliser le même préfixe de prompt pour réduire à la fois les coûts et la latence des réponses. Quand j’ai conçu ma propre structure de dossiers de session, l’archivage basé sur l’ID de session a eu le plus grand impact sur la vitesse de recherche. Intégrer QMD — que j’ai présenté hier — pour la pré-indexation semble aussi une piste prometteuse.

  • Conserver le JSONL brut permet une recherche précise en cas de besoin
  • resume-prompt.md inclut le résumé de la session précédente + les résultats de l’analyse des lacunes + la liste des fichiers modifiés
  • Fixer le system prompt et les préfixes du handoff prompt maximise les hits du KV cache
  • L’automatisation de l’archivage de sessions maintient le contexte sur des dizaines de sessions consécutives

Le vrai goulot d’étranglement du coding IA : la gestion du contexte

Le vrai goulot d’étranglement des outils de coding IA, ce n’est pas la performance du modèle — c’est la gestion du contexte. Concevoir un système capable de retrouver ce qui a été oublié compte bien plus que de perfectionner la synthèse.

La compaction entraîne inévitablement des pertes d’information. Ce qui compte, c’est de construire à la fois un pipeline de recherche capable de retrouver les informations perdues et une architecture de handover qui transfère le contexte entre sessions sans lacunes.

Basé sur l’analyse de Kangwook Lee, CAIO.

Rejoindre la newsletter

Recevez des mises à jour sur mes derniers projets, articles et expériences en IA et développement web.