🇫🇷🇺🇸🇧🇷🇪🇸🇩🇪🇮🇹

IA & contexte

« Persiste ça » : faire sortir une information de ChatGPT vers un stockage permanent

Vous retrouvez rarement, cinq jours plus tard, le paragraphe exact qui comptait dans une longue conversation ChatGPT. Ce récit montre comment sortir à la demande un extrait précis du flux, avec une simple directive personnalisée et un Google Sheets en boîte de sortie — API bloquée, contournement raté, puis solution qui passe de 50 secondes à deux, et vérification systématique après écriture.

Je travaille souvent plusieurs jours dans la même conversation ChatGPT.

On discute, on reformule, on abandonne des pistes, puis au milieu de dizaines de messages apparaît enfin un paragraphe intéressant.

À ce moment-là, j'aimerais simplement pouvoir dire :

Persiste ça.

Puis continuer à travailler.

Et cinq jours plus tard :

Ressors-moi tout ce que j'ai persisté.

Cela paraît évident.

Mais ChatGPT ne fonctionne pas vraiment comme ça.

Le chat n'est pas la mémoire de ChatGPT

C'est probablement le point le moins bien compris.

La conversation affichée dans l'interface peut être complète. Je peux faire défiler les messages et retrouver ce que nous nous sommes dit trois jours plus tôt.

Mais cela ne signifie pas que ChatGPT dispose lui aussi de tous ces messages mot pour mot lorsqu'il répond.

Il faut distinguer :

  • le transcript conservé et affiché dans l'interface ;
  • ce que le modèle peut effectivement utiliser pour produire sa réponse ;
  • la mémoire de ChatGPT, qui ne conserve pas chaque conversation mot pour mot.

OpenAI explique que la mémoire conserve certains éléments utiles et ne doit pas être considérée comme un stockage exhaustif de tout ce qui a été dit.

FAQ officielle sur la mémoire de ChatGPT

Le transcript est donc complet pour moi.

ChatGPT, lui, n'a pas forcément gardé mot pour mot les passages qui m'intéressent.

Or c'est précisément ce dont j'ai besoin.

Si je sélectionne aujourd'hui trois paragraphes importants, je veux pouvoir revenir cinq jours plus tard et récupérer exactement ces trois paragraphes.

« Bookmark ça » ne suffit pas

Je pourrais écrire :

Bookmark ce paragraphe.

Mais cela ne crée pas un véritable bookmark persistant.

Quelques jours plus tard, ChatGPT retrouvera peut-être ce que j'avais sélectionné, comme il pourra être incapable de me le ressortir mot pour mot. Ce n'est pas assez fiable pour mon besoin.

Je veux retrouver exactement les passages que j'ai décidé de conserver.

C'est ce besoin qui justifie une persistance externe.

Je ne veux pas sauvegarder toute la conversation

Le but n'est surtout pas de copier automatiquement chaque message.

Une longue conversation contient beaucoup de matière intermédiaire :

  • des questions ;
  • des essais ;
  • des reformulations ;
  • des pistes abandonnées ;
  • des réponses remplacées dix minutes plus tard.

Je veux uniquement sortir du flux les quelques morceaux qui ont de la valeur.

Par exemple :

Persiste notre dernière définition.

ou :

Persiste ça.

La décision de conserver reste humaine.

Première idée : une API

Mon premier réflexe a été classique.

Construire un petit service PHP capable de recevoir du texte et de l'ajouter dans un fichier Markdown.

Quelque chose comme :

ChatGPT
   ↓
API
   ↓
Markdown

J'ai donc développé (enfin plutôt Claude Code) un petit Remote Persistence Store.

Le serveur savait :

  • créer différents contextes ;
  • ajouter du contenu ;
  • restituer le Markdown ;
  • donner quelques informations sur l'état du contexte.

Techniquement, tout fonctionnait.

Le problème était ailleurs.

Avec ChatGPT Plus, je ne peux pas simplement appeler mon API

Avec mon abonnement ChatGPT Plus à 20 $ par mois, je ne peux pas simplement demander à ChatGPT d'appeler n'importe quelle API externe.

ChatGPT sait construire lui-même une URL d'API en y ajoutant des paramètres. Mais dans certains cas, dès que l'URL a été modifiée ou construite par lui, l'outil web refuse ensuite de l'appeler. Le problème n'est donc pas de fabriquer l'URL, mais d'avoir le droit de l'exécuter.

Je voulais continuer à utiliser ChatGPT normalement, notamment depuis mon téléphone.

Il fallait donc trouver un autre chemin.

Deuxième tentative : filouter

ChatGPT sait consulter des pages Web.

J'ai donc essayé de cacher une opération d'écriture derrière ce qui ressemblait à une simple consultation de page Web.

Au lieu d'envoyer :

POST /persist

j'ai construit une URL du genre :

https://mon-serveur.example/persist
?context=mon-contexte
&content=mon-texte

Pour ChatGPT, la demande ressemblait simplement à :

Consulte cette page Web.

Pour mon serveur :

Récupère les paramètres et écris-les sur disque.

Je transformais donc volontairement une écriture en une fausse lecture.

Ce n'était pas très élégant.

Mais pour un prototype personnel, cela aurait parfaitement fait l'affaire.

Et côté serveur, cela fonctionnait.

  • Depuis un navigateur : aucun problème.
  • Avec curl : aucun problème.

Mais dès que ChatGPT devait prendre le contenu de notre conversation, construire dynamiquement cette nouvelle URL puis consulter la page correspondante, ses protections de navigation bloquaient l'opération.

Ce qui est finalement assez logique.

J'essayais précisément de faire sortir automatiquement du contenu de la conversation vers mon propre serveur, en déguisant l'écriture en consultation d'une page Web.

Regarder ce que ChatGPT sait déjà faire

J'ai alors changé de question.

Au lieu de chercher :

Comment faire appeler mon serveur par ChatGPT ?

j'ai cherché :

Où ChatGPT sait-il déjà écrire ?

Dans mon cas : Google Sheets.

J'ai créé un Sheet extrêmement simple :

created_at | context | content

Puis j'ai testé :

Persiste "AZERTY"

Et une nouvelle ligne est apparue :

2026-09-12T15:20:44+02:00 | Remote Persistence Store | AZERTY

Cette fois, le texte avait réellement quitté la conversation.

Il existait indépendamment de ChatGPT.

Google Sheets comme boîte de sortie

Ce n'était pas mon architecture idéale.

Je voulais initialement :

ChatGPT → API → Markdown

J'avais maintenant :

ChatGPT → Google Sheets

Mais Google Sheets n'a pas besoin d'être mon stockage définitif.

Il peut simplement jouer le rôle d'une outbox.

Une boîte de sortie dans laquelle ChatGPT dépose les informations que j'ai décidé de conserver.

Je pourrai ensuite faire :

ChatGPT
   ↓
Google Sheets
   ↓
script
   ↓
Markdown
   ↓
Obsidian / Git / autre IA

Le problème important était résolu : sortir une information précise de la conversation.

Première version : presque 50 secondes

Cela fonctionnait, mais c'était atrocement lent.

Une simple commande :

Persiste "test"

pouvait prendre presque 50 secondes pour écrire trois cellules.

Le problème venait de ce que ChatGPT redécouvrait presque tout à chaque fois.

  • Il recherchait le fichier.
  • Il récupérait ses métadonnées.
  • Il vérifiait l'onglet.
  • Il regardait les colonnes.
  • Il cherchait où écrire.

Puis seulement il ajoutait les données.

Or rien de tout cela ne changeait entre deux appels.

Ne plus rechercher ce que l'on connaît déjà

J'ai donc ajouté directement dans la directive toutes les informations fixes :

  • l'identifiant du Spreadsheet ;
  • l'identifiant du Sheet ;
  • le nom de l'onglet ;
  • les trois colonnes ;
  • leur signification.

Et surtout :

Ne recherche pas le fichier. Ne lis pas ses métadonnées. Ne relis pas ses en-têtes.

Il restait encore à déterminer où écrire.

Ma première solution consistait à insérer systématiquement la nouvelle entrée en ligne 2.

C'était rapide, mais les données étaient alors classées dans l'ordre inverse : les plus récentes en haut.

Google Sheets dispose heureusement d'un mécanisme d'append.

Plus besoin de chercher la dernière ligne.

Le processus devient simplement :

Persiste
   ↓
append
   ↓
vérification
   ↓
réponse

Dans mes tests, les appels Google nécessaires à l'écriture et à la relecture se font maintenant en une à deux secondes cumulées.

Le délai total de réponse de ChatGPT reste variable, mais on est très loin des presque 50 secondes de la première version.

Le problème n'était donc pas vraiment Google Sheets.

Le problème était que l'IA redécouvrait à chaque fois un contexte déjà connu.

Vérifier après avoir écrit

Je ne voulais pas non plus que ChatGPT m'affiche simplement :

C'est persisté.

sans savoir ce qui avait réellement été écrit.

J'ai donc ajouté une règle.

Après chaque écriture, ChatGPT doit relire l'entrée qu'il vient d'ajouter.

Pour un petit texte, il affiche ce qu'il a réellement relu :

Persisté ✓

Contexte : Remote Persistence Store
Statut : OK

Contenu :
AZERTY

Pour un contenu beaucoup plus long, il affiche seulement un résumé fidèle du contenu relu.

L'important est que la confirmation intervienne après la vérification.

intention
→ écriture
→ relecture
→ vérification
→ confirmation

Rendre « Persiste » disponible dans tous mes chats

Je ne voulais évidemment pas coller tout ce mode d'emploi au début de chaque nouvelle conversation.

Je l'ai donc ajouté dans les Instructions personnalisées de ChatGPT.

Sur le Web :

Paramètres
→ Personnalisation
→ Instructions personnalisées

Il faut également connecter Google Drive à ChatGPT pour qu'il puisse accéder au Sheet.

Une fois les deux éléments configurés, je peux commencer une nouvelle conversation et écrire directement :

Persiste notre dernière définition.

La directive indique alors à ChatGPT ce que signifie le verbe Persiste et où envoyer le contenu.

Ma directive « PERSISTE »

Voici une version anonymisée.

Il faut remplacer les trois valeurs entre <...> par celles de votre propre Google Sheet. Vous pouvez demander à ChatGPT de les trouver, voire de créer le Google Sheet.

DIRECTIVE « PERSISTE »

Lorsque je commence une demande par « Persiste » ou que je demande explicitement de persister une information, ajoute cette information dans le Google Sheet configuré comme store de persistance.

GOOGLE SHEET

Spreadsheet ID: <SPREADSHEET_ID>

Sheet: <SHEET_NAME>

Sheet ID: <SHEET_ID>

Structure fixe :

A = created_at
B = context
C = content

INTERPRÉTATION

- « Persiste xxx » = persister xxx.
- « Persiste notre dernier échange » = persister le contenu pertinent du dernier échange.
- « Persiste ta dernière réponse » = persister la dernière réponse.
- « Persiste ce texte » = persister le texte explicitement concerné.
- « Persiste dans {contexte} xxx » = utiliser {contexte} comme context.
- Si aucun contexte n'est indiqué, déduire un nom court et pertinent à partir du sujet courant.
- Ne pas demander de confirmation si la demande est claire.

ÉCRITURE

1. Déterminer created_at avec la date et l'heure courantes.
2. Utiliser directement le Spreadsheet ID et le Sheet connus.
3. Utiliser un append natif Google Sheets.
4. Ajouter exactement :

   created_at | context | content

OPTIMISATION

Lors d'une commande « Persiste » :

- ne pas rechercher le fichier ;
- ne pas lire ses métadonnées ;
- ne pas relire ses en-têtes ;
- ne pas rechercher la dernière ligne ;
- ne pas analyser sa structure avant l'écriture ;
- utiliser directement les identifiants et la structure connus.

Ne faire une lecture qu'après l'écriture.

VÉRIFICATION

Après l'append :

1. Relire uniquement l'entrée ajoutée.
2. Vérifier le contexte et le contenu.
3. Ne confirmer la persistance qu'après cette vérification.

CONTENU

- Persister le contenu demandé lui-même.
- Ne pas le résumer avant stockage.
- Ne pas le reformuler ou le corriger sauf demande explicite.
- Conserver autant que possible sa structure originale.

RÉPONSE

Pour un contenu court :

Persisté ✓

Contexte : {context}
Statut : OK

Contenu :
{contenu effectivement relu}

Pour un contenu long :

Persisté ✓

Contexte : {context}
Statut : OK

Résumé du contenu relu :
{résumé fidèle en quelques lignes}

Le résumé concerne uniquement la confirmation.
Le contenu stocké reste intégral.

En cas d'échec :

Persistance échouée ✗

Contexte : {context}
Statut : ERREUR

Problème :
{description courte de l'erreur}

PRIORITÉ

append direct → vérification ciblée → réponse

Éviter toute opération Google Drive ou Google Sheets non indispensable.

Ce n'est pas une mémoire pour ChatGPT

Je ne considère pas ce Google Sheet comme « la mémoire de ChatGPT ».

C'est beaucoup plus simple.

C'est un endroit extérieur dans lequel je peux décider qu'un morceau de conversation mérite d'être conservé.

Pendant une discussion :

on cherche
→ on teste
→ on reformule
→ quelque chose devient intéressant

À ce moment-là :

Persiste ça.

Le morceau quitte le flux.

Il devient récupérable indépendamment de ce que ChatGPT aura encore en contexte dans cinq jours.

Du flux au capital

Techniquement, tout cela finit par écrire trois cellules dans un tableur.

Ce n'est pas la partie intéressante.

Ce qui m'intéresse est le geste.

Une conversation avec une IA produit énormément d'information temporaire.

Tout n'a pas besoin de survivre.

Mais certaines choses méritent de passer du flux à quelque chose de durable.

Je ne veux pas demander à ChatGPT de tout mémoriser.

Je veux pouvoir lui indiquer :

Ça, ça compte.

Puis :

Persiste ça.

La conversation reste l'espace dans lequel je travaille.

Ce que j'en extrais peut commencer à devenir du capital informationnel.

Pour aller plus loin

Du fichier unique au système de contextes : pourquoi la mémoire d'un LLM ne tient pas dans un seul document Sous le capot de mon moteur de contexte : comment une IA se souvient d'une mission Ajouter une mémoire de session comme dans OpenClaw Le livrable n'est plus le capital

Cet essai dans la carte