ConceptosConceptos fundamentalesModelo de memoria

Concept

Modelo de memoria

Comprenda los hechos duraderos, las decisiones, las entregas y la atribución de origen antes de elegir una integración.

Qué almacena XMemo

XMemo mantiene un contexto duradero que permanece útil después de que finalice el chat o la tarea actual: hechos del proyecto, decisiones, preferencias, correcciones y notas de entrega. El ruido de conversación transitorio, las respuestas únicas y la salida sin procesar de las herramientas no pertenecen a la memoria.

  • semantic: hechos y decisiones duraderos que se mantienen fieles en las sesiones.
  • episodic — algo que sucedió, ligado a un momento en una tarea o sesión.
  • procedural — cómo se realiza una tarea en este proyecto.
  • working — Estado activo de la tarea en curso.
  • identity — información estable sobre el propietario o el propio agente.

Escribe una memoria duradera

Una escritura duradera necesita el content, un path lógico que lo vincula a un proyecto o espacio de nombres y el tipo de memoria. El path es el filtro que usará recall más adelante.

remember({
  content: "Use OAuth for hosted ChatGPT connections.",
  path: "projects/memory-os/decisions"
})

Tipos de memoria en el SDK

MemoryCandidate.memory_type acepta el mismo conjunto mediante el SDK de TypeScript, de modo que un evento de agente normalizado lleva el type bajo el que debe almacenarse.

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); // episodic

Guía interactiva de procedencia y ciclo de vida (Demostración sintética)

Una demostración paso a paso y verificable del ciclo de vida que muestra la creación de memoria, la recuperación entre clientes, la corrección de usuario en tiempo real con sustitución de versiones (v1 -> v2), la protección del presupuesto de tokens, el marcado de eliminación suave y el desmontaje sintético aislado. Cada paso está respaldado por evidencias de tiempo de ejecución desechables sin exposición de memorias de usuario reales:

  • Paso 1 [STATE_1_CREATED_ACTIVE_V1]: El Agente A (Claude Desktop) escribe la preferencia inicial con autor inmutable, hash de instancia y metadatos de dispositivo mediante tools.py::remember — Recibo: Estado 200 OK, demo_mem_lifecycle_001@v1, activo — Estado: [SOURCE_BACKED_PUBLIC_CONTRACT (VERIFIED)] — Límite: [DEMO_DATA: SYNTHETIC].
  • Paso 2 [STATE_2_ACCESSED_ATTRIBUTED]: El Agente B (Codex CLI) en el mismo ámbito autorizado recupera de inmediato la memoria con recibo de citación y cero desviación entre clientes mediante tools.py::recall — Recibo: Estado 200 OK, citado demo_mem_lifecycle_001@v1 — Estado: [SOURCE_BACKED_PUBLIC_CONTRACT (VERIFIED)] — Límite: [DEMO_DATA: SYNTHETIC].
  • Paso 3 [STATE_3_CORRECTED_SUPERSEDED_V2]: El usuario corrige la sala y la hora de la reunión mediante tools.py::update_memory. VersionController crea una instantánea inmutable de v1 con status='superseded' y asciende el registro activo a v2 — Recibo: Estado 200 OK, v2, padre v1, diff: Room Orion -> Room Polaris — Estado: [SOURCE_BACKED_PUBLIC_CONTRACT (VERIFIED)] — Límite: [DEMO_DATA: SYNTHETIC].
  • Paso 4 [STATE_4_RETRIEVAL_FILTERED]: La consulta posterior recall selecciona solo v2 activa, mientras que v1 obsoleta se filtra estrictamente de la ventana de contexto de LLM para evitar alucinaciones y ahorrar presupuesto de tokens — Recibo: Estado 200 OK, seleccionada v2, excluida v1 sustituida — Estado: [SOURCE_BACKED_PUBLIC_CONTRACT (VERIFIED)] — Límite: [DEMO_DATA: SYNTHETIC].
  • Paso 5 [STATE_5_TOMBSTONE_DELETED]: El propietario marca el hecho como eliminado mediante tools.py::forget. Se excluye de inmediato de las consultas candidatas y se traslada a la vista de papelera con acción de restauración — Recibo: Estado 200 OK, estado: deleted, recuento de candidatos: 0 — Estado: [SOURCE_BACKED_PUBLIC_CONTRACT (VERIFIED)] — Límite: [DEMO_DATA: SYNTHETIC].
  • Paso 6 [STATE_6_RESET_PURGED]: El desmontaje desechable aislado (reset_synthetic_state) purga los registros del ámbito de demo a exactamente 0 filas residuales en disco. El restablecimiento total de la cuenta personal (POST /api/v1/me/memories/reset) queda estrictamente excluido — Recibo: teardown_status: SUCCESS_PURGED, residual_rows: 0, account_hard_reset_called: FALSE — Estado: [SOURCE_BACKED_PUBLIC_CONTRACT (VERIFIED)] — Límite: [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                             |                |
+------------------------------------------------------------------------------------------------------------------------+

Flujos de roles

Usuario de ChatGPT

Dale a ChatGPT acceso duradero a tus preferencias de XMemo, datos de proyecto, decisiones y TODOs sin pegar fichas bearer en un chat.

Guarde una nota de preferencia sintética o de proyecto, inicie un nuevo chat y luego pida a ChatGPT que la recuerde a través de XMemo antes de continuar el trabajo.

Copiloto / Codex desarrollador

Lleve decisiones de repo, convenciones de codificación, notas de corrección de errores e historial de tareas entre los agentes IDE y CLI.

Grabe una decisión de base de código o corrección de errores, y luego pida al siguiente agente IDE o CLI que recuerde el contexto XMemo relevante antes de editarlo.

Equipo / propietario del piloto de la empresa

Evalúe la memoria compartida con controles de cuenta, atribución de origen, flujos de trabajo export/delete y pruebas de configuración seguras para los revisores.

Haga que un miembro piloto guarde una memoria sintética del equipo, confirme la atribución de origen en XMemo, luego revise delete/export y las rutas de soporte.

Fuente: Introducción