Aller au contenu principal
Version: Actuelle

Contexte : rooms et sessions

Ce que la plateforme tient pour la station. Il n'y a pas de clé à écrire : cette page dit ce qui existe aujourd'hui.

La room​

Une room est l'espace d'une personne avec la station. Elle a un code court (u35mub), le même sur toutes les portes : le site du tenant, Claude, ChatGPT. Elle tient la sélection, le parcours ouvert, ce que la personne a dit d'elle (remember), et les enregistrements de ce qui a été soumis, que toute porte relit.

Une room commence anonyme. Le code ouvre la room : qui le détient voit la sélection et les enregistrements, et peut soumettre. Voir Limites actuelles.

Quand une personne se connecte dans une room, la room lui appartient (voir Auth). Son code devient une adresse, plus une clé : tout ce que la room tient ne s'ouvre qu'à elle, connectée.

La session​

Une session est une visite. Une room en a plusieurs : rouvrir la room pendant la même visite ne crée pas de session ; l'ouvrir depuis une autre porte, si.

Le fil de conversation​

  • Ce que voit l'agent : son historique, rangé côté serveur par room, dans la table agent.room_threads et les fils de l'agent.
  • Ce que voit la personne : le fil de la room, rangé côté serveur (room_messages). L'agent l'écrit à la fin de chaque tour. Il garde ce qui s'affiche : les messages de la personne, les réponses de l'agent, les cadres rendus. Il ne garde jamais les consignes données au modèle, ni les arguments des outils, ni leurs résultats bruts. Un tour en échec ne laisse rien.
  • À l'ouverture, le widget et la PWA demandent le fil au serveur. Le navigateur n'écrit plus le fil et ne le garde plus.
  • Une room qui a un propriétaire ne rend son fil qu'à lui, connecté. Sinon, la personne voit « Cette conversation appartient à un compte. Connectez-vous pour l'afficher. », avec les étapes de connexion. Une fois connectée, la conversation s'affiche. Connectée sous un autre compte, elle voit « Cet espace appartient à quelqu'un d'autre. » Tant que la conversation est protégée, ce message est seul : pas d'invitation ni de suggestions, et on ne peut pas écrire. Il faut taper sa propre adresse pour se connecter : celle de la room n'est jamais proposée à qui n'en est pas le propriétaire. La sélection, ce qui a été retenu (remember) et l'historique suivent la même règle : les autres voient seulement que la room est fermée, et qu'ils peuvent se connecter. L'assistant ne peut ni les lire ni les changer non plus, dans le widget comme dans Claude ou ChatGPT.

Ce fil n'est pas la mémoire du modèle. Claude et ChatGPT gardent leur propre conversation.

Ce que garde le navigateur​

oùquoi
localStoragele code de la room (oublié après 30 jours), la clé de connexion (convoy_holder), un identifiant de visiteur pour la mesure d'audience, les phrases de la narration
sessionStoragel'identifiant de session, la sélection affichée, un tour en attente

Un nouvel onglet reprend la dernière room et la connexion : on ne se reconnecte pas à chaque onglet. Une session, elle, reste une visite dans un onglet.

Dans la cible, il ne reste que room_id et session_id, en sessionStorage (Contexte).

Combien de temps​

Côté serveur, rien n'expire tout seul. Le navigateur oublie le code de la room après 30 jours.

Les messages que les navigateurs envoyaient avant que le serveur écrive le fil restent dans la base. Ils ne sont plus jamais relus. Ils ne sont pas encore effacés.

Un script d'exploitation, sweep-room-data.sh, se lance à la main. Par défaut il ne fait que rapporter ; avec --purge, il efface les données des stations supprimées (rooms, événements, journaux, routes) et les fils de l'agent qui n'ont aucune room, au-delà de 30 jours. Les durées par défaut de la cible (24 h pour une room vide, 90 jours d'inactivité) ne sont pas encore appliquées.