Ce que stocke XMemo
XMemo conserve le contexte durable qui reste pertinent après la clôture de la discussion ou de la tâche en cours : faits de projet, décisions, préférences, corrections et notes de passage de relais. Le bruit conversationnel éphémère, les réponses ponctuelles et les sorties brutes d'outils ne doivent pas être conservés en mémoire.
- semantic — faits durables et décisions qui demeurent valables d'une session à l'autre.
- episodic — événement survenu, associé à un instant précis d'une tâche ou d'une session.
- procedural — méthode d'exécution d'une tâche dans le cadre de ce projet.
- working — état actif de la tâche actuellement en cours d'exécution.
- identity — informations stables relatives au propriétaire ou à l'agent lui-même.
Écrire une mémoire durable
Une écriture durable requiert le contenu, un chemin d'accès logique qui le rattache à un projet ou à un espace de noms, ainsi que le type de mémoire. Le chemin correspond au critère de filtrage utilisé lors des rappels ultérieurs.
remember({
content: "Use OAuth for hosted ChatGPT connections.",
path: "projects/memory-os/decisions"
})Les types de mémoire dans le SDK
MemoryCandidate.memory_type accepte le même ensemble de valeurs via le TypeScript SDK, assurant qu'un événement d'agent normalisé véhicule le type sous lequel il doit être enregistré.
import { normalizeAgentEvent, toMemoryCandidate } from '@xmemo/client';
const event = normalizeAgentEvent(
{ type: 'command_completed', command: 'pytest', exit_code: 0, output: '12 passed' },
{ source: 'shell', defaultAgentId: 'codex' },
);
console.log(toMemoryCandidate(event).memory_type); // episodicVisite interactive de la provenance et du cycle de vie (Démo synthétique)
Une démonstration étape par étape et vérifiable du cycle de vie montrant la création de mémoire, la récupération multi-client, la correction utilisateur en temps réel avec remplacement de version (v1 -> v2), la protection du budget de jetons, le marquage de suppression réversible et le démantèlement synthétique isolé. Chaque étape s'appuie sur des preuves d'exécution jetables sans aucune exposition de mémoires utilisateur réelles :
- Étape 1 [STATE_1_CREATED_ACTIVE_V1] : L'agent A (Claude Desktop) écrit la préférence initiale avec un auteur immuable, un hachage d'instance et des métadonnées d'appareil via tools.py::remember — Reçu : Statut 200 OK, demo_mem_lifecycle_001@v1, actif — Statut : [SOURCE_BACKED_PUBLIC_CONTRACT (VERIFIED)] — Limite : [DEMO_DATA: SYNTHETIC].
- Étape 2 [STATE_2_ACCESSED_ATTRIBUTED] : L'agent B (Codex CLI) dans la même portée autorisée récupère immédiatement la mémoire avec reçu de citation et zéro dérive multi-client via tools.py::recall — Reçu : Statut 200 OK, cité demo_mem_lifecycle_001@v1 — Statut : [SOURCE_BACKED_PUBLIC_CONTRACT (VERIFIED)] — Limite : [DEMO_DATA: SYNTHETIC].
- Étape 3 [STATE_3_CORRECTED_SUPERSEDED_V2] : L'utilisateur corrige la salle et l'heure de réunion via tools.py::update_memory. VersionController crée un instantané immuable de v1 avec status='superseded' et passe l'enregistrement actif à v2 — Reçu : Statut 200 OK, v2, parent v1, diff : Room Orion -> Room Polaris — Statut : [SOURCE_BACKED_PUBLIC_CONTRACT (VERIFIED)] — Limite : [DEMO_DATA: SYNTHETIC].
- Étape 4 [STATE_4_RETRIEVAL_FILTERED] : La requête recall ultérieure sélectionne uniquement v2 active tandis que v1 obsolète est strictement filtrée de la fenêtre de contexte LLM pour éviter les hallucinations et préserver le budget de jetons — Reçu : Statut 200 OK, v2 sélectionnée, v1 remplacée exclue — Statut : [SOURCE_BACKED_PUBLIC_CONTRACT (VERIFIED)] — Limite : [DEMO_DATA: SYNTHETIC].
- Étape 5 [STATE_5_TOMBSTONE_DELETED] : Le propriétaire marque le fait comme supprimé via tools.py::forget. Il est immédiatement exclu des requêtes candidates et déplacé vers la corbeille avec action de restauration — Reçu : Statut 200 OK, statut : deleted, nombre de candidats : 0 — Statut : [SOURCE_BACKED_PUBLIC_CONTRACT (VERIFIED)] — Limite : [DEMO_DATA: SYNTHETIC].
- Étape 6 [STATE_6_RESET_PURGED] : Le démantèlement jetable isolé (reset_synthetic_state) purge les enregistrements de portée de démo à exactement 0 ligne résiduelle sur disque. La réinitialisation totale du compte personnel (POST /api/v1/me/memories/reset) est strictement exclue — Reçu : teardown_status : SUCCESS_PURGED, residual_rows : 0, account_hard_reset_called : FALSE — Statut : [SOURCE_BACKED_PUBLIC_CONTRACT (VERIFIED)] — Limite : [DEMO_DATA: SYNTHETIC].
+------------------------------------------------------------------------------------------------------------------------+
| [PROVENANCE & LIFECYCLE 6-STATE STATE MACHINE: DISPOSABLE HARNESS WALKTHROUGH] |
| |
| Agent A (Claude Desktop) XMemo FastMCP & Engine Agent B (Codex CLI) Demo Owner (Supervising) |
| [04f9b8c2 / MacBook] [VersionController / Scope] [e81d7a31 / Workstation] [user:demo_owner] |
| | | | | |
| (1) remember(sync in Orion) | | | |
| -------------------------------------> | | | |
| | [STATE 1: Created Active v1] | | |
| <------------------------------------- | | | |
| Receipt: mem-001@v1 | | | |
| | | (2) recall(sync) | | |
| | | <--------------------------- | | |
| | | [STATE 2: Cited @v1] | | |
| | | ---------------------------> | | |
| | | Citation: mem-001@v1 | | |
| | | | (3) update_memory(Polaris) | |
| | | <---------------------------------------------------------- | |
| | | [STATE 3: Bump v2, Supersede v1] | |
| | | ----------------------------------------------------------> | |
| | | Receipt: mem-001@v2 (parent: v1) | |
| | | | | |
| | | (4) recall(Polaris) | | |
| | | <--------------------------- | | |
| | | [STATE 4: Select v2, | | |
| | | Filter superseded v1] | | |
| | | ---------------------------> | | |
| | | Citation: mem-001@v2 only | | |
| | | | (5) forget(mem-001) | |
| | | <---------------------------------------------------------- | |
| | | [STATE 5: Tombstone / Trash View] | |
| | | ----------------------------------------------------------> | |
| | | Receipt: status=deleted | |
| | | | | |
| | | (6) reset_synthetic_state() | |
| | | <---------------------------------------------------------- | |
| | | [STATE 6: Teardown Purge] | |
| | | Scope purged: 0 residual rows (account reset excluded) | |
| | | ----------------------------------------------------------> | |
| | | Teardown Status: SUCCESS_PURGED | |
+------------------------------------------------------------------------------------------------------------------------+Flux par rôle
Utilisateur de ChatGPT
Donnez à ChatGPT un accès durable à vos préférences XMemo, faits de projet, décisions et TODOs sans coller de jetons bearer dans un chat.
Enregistrez une préférence synthétique ou une note de projet, démarrez un nouveau chat, puis demandez à ChatGPT de la rappeler via XMemo avant de poursuivre le travail.
Développeur Copilot / Codex
Transmettez les décisions du dépôt, les conventions de codage, les notes de correctifs et l'historique des tâches entre les agents IDE et CLI.
Enregistrez une décision relative au code ou un correctif, puis demandez au prochain agent de l'IDE ou de la CLI de rappeler le contexte XMemo pertinent avant toute modification.
Responsable de projet pilote d'équipe / entreprise
Évaluez la mémoire partagée avec les contrôles de compte, l'attribution des sources, les flux d'exportation/suppression et des preuves de configuration sécurisées pour les évaluateurs.
Demandez à un membre du projet pilote d'enregistrer une mémoire d'équipe synthétique, confirmez l'attribution de la source dans XMemo, puis examinez les chemins de suppression/exportation et de support.
Source : Introduction