Au-delà de la fenêtre de contexte : pourquoi les compagnons IA perdent le fil
La plupart des compagnons IA commencent avec justesse, puis deviennent vagues. Ce n’est pas qu’ils se désintéressent : c’est la conversation qui sort peu à peu de leur champ de vision.
L’illusion de la mémoire
La première heure avec un compagnon IA classique a quelque chose d’étrange. Il reprend le fil, se souvient du prénom de votre sœur, revient sur la dispute que vous avez eue deux scènes plus tôt. On a l’impression d’être vraiment connu.
Puis, vers le trentième message, il commence à dériver. Il vous pose une question à laquelle vous avez déjà répondu. Un personnage sorti de la pièce se remet soudain à parler. La blessure d’hier a guéri sans que personne ne la soigne.
Rien n’a cassé. Vous avez simplement atteint la limite de ce que le modèle pouvait voir.
Un modèle de langage n’a pas de mémoire d’un appel à l’autre. Chaque tour est une nouvelle requête qui emporte toute la conversation, et cette requête a une taille maximale : la fenêtre de contexte. Quand on la dépasse, les éléments les plus anciens disparaissent. Vos premières scènes tombent par l’arrière et, du point de vue du modèle, elles n’ont jamais existé.
À quoi ressemble vraiment la dégradation du contexte
Dans la plupart des applications de compagnons, la défaillance est rarement spectaculaire. C’est une lente perte de précision, ce qui explique pourquoi on accuse si facilement le modèle d’être « paresseux ».
- Les noms se brouillent. Deux personnages secondaires se fondent en un seul, ou un nom est réutilisé pour quelqu’un d’autre.
- Les promesses s’évaporent. Un personnage qui avait juré de vous retrouver au port ne voit pas de quoi vous parlez.
- Les enjeux repartent de zéro. La dette, la blessure, le secret que quelqu’un dissimule : l’intrigue se détend discrètement jusqu’à revenir à l’état neutre.
- Les faits établis s’inversent. Un personnage qui ne sait pas nager va se baigner.
Pris séparément, chacun de ces accrocs prête à hausser les épaules. Ensemble, ils font la différence entre une histoire et une suite de scènes agréables mais sans lien — et expliquent pourquoi les longues parties de roleplay s’essoufflent si souvent au lieu de trouver une fin.
Quatre façons de retenir le passé
Quatre approches sont couramment utilisées, et chacune échoue à un endroit différent.
| Approche | Comment elle conserve le passé | Son point de rupture |
|---|---|---|
| Fenêtre glissante | Les N derniers messages, mot pour mot | Tout ce qui est plus ancien disparaît. Rappel parfait dans la fenêtre, amnésie totale au-delà. |
| Fenêtre très étendue | Des dizaines ou des centaines de milliers de tokens, mot pour mot | Le coût et la latence augmentent à chaque tour, tandis que l’attention se dilue au milieu d’un long contexte : le modèle peut voir un détail sans lui accorder de poids. |
| Recherche vectorielle (RAG) | Les messages passés sont vectorisés puis recherchés par similarité | Elle renvoie un texte qui semble pertinent. Elle ne sait pas ce qui est vrai à l’instant présent : un fait et sa correction ultérieure lui paraissent tout aussi valables. |
| État structuré de l’histoire | Les faits, personnages, relations et événements sont consignés au fil de l’action | Il faut un vrai travail de maintenance, et sa qualité ne dépasse jamais celle de ce qui est écrit : ce qui n’est pas consigné est perdu. |
Je voulais un monde qui consigne les choses. Quand elle se souvient de votre troisième soirée ensemble, c’est parce qu’elle y était vraiment.
Fondateur, projectDigo
Pourquoi une fenêtre plus grande ne suffit pas
La solution évidente consiste à agrandir démesurément la fenêtre. C’est aussi la plus coûteuse, et elle ne fait pas ce qu’on espère.
L’intégralité du contexte est renvoyée et relue à chaque tour. Une conversation qui contient cent mille tokens d’historique les refacture donc à chaque message — et fait attendre davantage chaque réponse. Pire encore, un modèle qui lit un contexte très long ne le parcourt pas de manière uniforme : ce que votre personnage a dit il y a quarante scènes peut être techniquement présent tout en étant pratiquement invisible.
Une grande fenêtre achète du temps. Elle ne change pas la nature du problème, car le problème n’est pas la capacité : c’est que rien ne décide de ce qui compte.
Ce que nous faisons à la place
projectDigo conserve une trace de l’histoire.
Ce qui compte — qui existe, ce qui s’est passé entre les personnages, ce qui est vrai maintenant — est conservé dans l’état propre de l’histoire, au lieu d’être abandonné à une conversation qui finira par sortir du champ de vision. Les scènes suivantes sont écrites à partir de cet état. La scène quatre cents sait ce que la scène trois a établi, parce que la scène trois a été consignée, et pas seulement racontée.
La manière dont cette trace est constituée, tenue à jour et remise au travail est la partie à laquelle nous avons consacré le plus de temps — et celle que nous gardons pour nous. Le résultat, lui, est assez simple : une continuité qui tient, quelle que soit la durée de votre partie.
Le compromis, sans fard
Ce n’est pas gratuit. Tenir une trace demande plus de travail par scène que de faire suivre une transcription, et une histoire ne peut retenir que ce qui valait la peine d’être consigné : tout ce qui a été oublié est perdu aussi sûrement qu’avec une fenêtre glissante.
En échange, l’histoire s’enrichit au fil du temps. Au bout de dix heures, le monde possède un passé que vous pouvez montrer du doigt, et les personnages se comportent comme des gens qui l’ont réellement vécu.
Les questions qu'on nous pose
Pourquoi ne pas utiliser un modèle avec une fenêtre de contexte d’un million de tokens ?
Parce que vous payez l’intégralité du contexte à chaque tour, en argent comme en temps d’attente, et que l’attention se dilue au milieu d’un contexte très long : un détail peut être présent tout en étant pratiquement ignoré. Une grande fenêtre repousse la dégradation du contexte sans la supprimer.
Est-ce la même chose que le RAG ?
C’est lié, mais ce n’est pas la même chose. La recherche retrouve des passages qui ressemblent à la requête, ce qui est utile pour retrouver une information mais peu fiable pour savoir ce qui est vrai maintenant : un fait et sa correction ultérieure semblent tous deux être de bonnes correspondances. Une trace de l’histoire conserve un état — ce qui est vrai à présent — plutôt qu’un texte aux sonorités similaires.
Jusqu’où un personnage peut-il réellement se souvenir ?
Dans projectDigo, jusqu’au début de la session. Ce qui persiste, c’est l’état de l’histoire plutôt que la formulation de chaque message ; les souvenirs ne se dégradent donc pas à mesure que la session s’allonge.
Le modèle contredit-il parfois ses propres souvenirs ?
Cela peut arriver — c’est pourquoi projectDigo vérifie la cohérence avant qu’une scène ne vous parvienne. Le plus souvent, vous ne voyez jamais la correction. Rien ne détecte tout, mais le problème devient une glissade occasionnelle plutôt qu’une dérive continue.