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); // episodicGuí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