Saltar al contenido principal

Memorias

Un almacén de memoria es un cuaderno que alguien más también puede leer. Tu asistente escribe un hecho en una página y nombra a las personas y cosas de las que trata ese hecho; más tarde, tú — y cada uno de tus agentes de Nirvai — abren el mismo cuaderno y encuentran la misma página. No es el borrador privado de tu asistente. Es un solo cerebro, compartido.

Todo en esta página corre a través de nirvai_execute en el área memory. Lee primero la referencia de MCP si la gramática de alias te resulta nueva.


Qué contiene un almacén

PiezaQué es
ObservaciónUn hecho atómico, con un slug estable que es su dirección permanente, más un título, categoría, etiquetas y la fecha en que se observó.
EntidadUna persona, empresa o cosa que menciona una observación. Cada observación debe nombrar al menos una, con su descripción — esa descripción es lo que el recall usa para encontrarla.
RelaciónUn vínculo con tipo entre dos entidades ("Acme firmó MSA-2025").
Archivo de apéndiceUn documento original guardado junto a las notas, direccionado por una ruta lógica.
El modelo de embeddings se elige una vez, para siempre

El modelo de embeddings de un almacén — lo que decide qué significa "parecido" cuando se busca en él — queda fijo al crear el almacén y nunca puede cambiar. Tu asistente lo elige entre los modelos listados al momento de crearlo, y se le rechaza si intenta adivinarlo. Cambiarlo después significaría reconstruir el almacén.


Los verbos

VerboPermisoQué hace
memory.recallreadNavega o busca en un almacén. Tres modos — más abajo.
memory.get_observationreadExpande UNA observación a su texto completo, por slug.
memory.list_filesreadLista el apéndice — ruta, nombre, descripción, tipo, tamaño. Sin el contenido de los archivos.
memory.read_filereadObtiene un enlace de descarga de corta duración para un archivo del apéndice.
memory.addwriteEscribe una observación nueva directamente, con sus entidades y relaciones.
memory.store_filewriteArchiva un documento ya subido en el apéndice, en una ruta.
memory.update_observationwriteEdita una observación en su lugar; solo cambian los campos que se envían.
memory.consolidatewriteSugiere fusiones, deduplicaciones y vínculos faltantes. Nunca modifica el almacén.
memory.create_storecreateCrea un almacén nuevo. embedding_model_id es obligatorio y permanente.
memory.proposecreateRedacta un paquete revisable de almacenes y observaciones; haces clic en Crear.
memory.delete_observationdestructivoRetenido. Se rechaza con cualquier token — borrar no es posible por la conexión.

Todo lo que una persona debería ver antes de que quede escrito pasa por memory.propose: tu asistente redacta el paquete y tú recibes una página de revisión con las observaciones en tarjetas y un botón real de Crear. Las escrituras directas son para los casos donde una revisión no aporta nada, como corregir una frase equivocada.

Dónde lo terminas tú

memory.propose no crea nada. Te entrega un enlace a una página en /external/memories/… dentro de Nirvai, donde lees el almacén y los primeros hechos que va a contener, y haces clic en Crear.

  • Tienes que haber iniciado sesión, y solo tú puedes abrirla. Un enlace de propuesta no se comparte.
  • memory.add no pasa por una página de revisión. Escribir una observación nueva en un almacén que ya existe entra directo — la revisión es para crear el almacén en sí.
  • No se puede hacer clic dos veces. Al volver a abrirla verás Creado ✓ y se rechaza un segundo almacén; tu asistente toma el id nuevo del feed, no proponiendo de nuevo.
  • ¿Lo quieres distinto? La página te da un bloque para copiar y pegar de vuelta, y tu asistente vuelve a proponer — ver la referencia de MCP.

recall tiene tres modos, y debes nombrar uno

mode es obligatorio. La conexión valida el par (mode, query) y rechaza uno inconsistente — nunca cambia de modo por su cuenta en nombre de tu asistente.

modequeryÚsalo paraQué devuelve
recalldebe estar ausenteNavegar o enumerar — todo en una categoría, todo desde una fecha, todo sobre una entidadObservaciones con texto completo más entidades. Completo; no hace falta un segundo paso.
localobligatorioHacer una pregunta en lenguaje naturalEntidades rankeadas, sus relaciones y fragmentos de 240 caracteres marcados como truncated.
cascadeobligatorioLa misma pregunta, cuando local devolvió pocoLa misma forma que local.

mode="recall" con una query se rechaza. mode="local" sin una se rechaza. Los filtros válidos cambian según el modo — nirvai_describe sobre el almacén lista cuáles acepta ese almacén.

nirvai_execute(
alias = "memory.get_observation",
args = { store: "…", slug: "acme-renewed-msa" },
description = "Leer la nota completa detrás del fragmento de Acme"
)

Usa get_observation para expandir un fragmento truncado. No lo repitas en bucle para reconstruir un almacén entero — para eso está el modo estructural, que ya devuelve el texto completo.


Ejemplo real: reconciliar al conectar por primera vez

La primera vez que un asistente se conecta, los hechos duraderos que ya carga sobre ti pertenecen a Nirvai, donde tus agentes también pueden verlos. Primero lee, después escribe solo lo que falta.

nirvai_execute(
alias = "memory.recall",
args = { store: "…", mode: "recall", category: "clients", limit: 20 },
description = "Ver qué sabe ya Nirvai sobre mis clientes"
)

nirvai_execute(
alias = "memory.add",
args = {
store: "…",
title: "Acme renovó su MSA",
content: "Acme renovó el contrato marco de servicios en marzo de 2025 por 24 meses.",
category: "contracts",
tags: ["acme", "renewal"],
entities: [{ name: "Acme Corp", type: "company",
description: "cliente empresarial de larga data; renovó el MSA" }],
relationships: [{ source: "Acme Corp", target: "MSA-2025",
relationship_type: "signed" }]
},
description = "Registrar la renovación de Acme que ya conocía"
)

Es una reconciliación única por almacén, no un volcado de cada turno: solo hechos duraderos sobre tu mundo, nunca el estado pasajero de una conversación.


Límites y garantías

  • Una observación sin una entidad descrita se rechaza, de entrada y con un error claro. Sin ella sería imposible de encontrar, así que la conexión se niega a escribir un hecho que nadie podrá recordar.
  • La consolidación solo propone. Devuelve sugerencias; aplicarlas es una acción tuya en Nirvai. Si un asistente dice que limpió tu grafo, no lo hizo.
  • Borrar es imposible. memory.delete_observation se rechaza con cualquier token, siempre.
  • Editar el título puede regenerar el slug; una edición solo de contenido lo conserva, y conserva las entidades vinculadas a él.
  • Los resultados son acotados. El recall devuelve una vista previa y un enlace, nunca el grafo crudo; los archivos grandes vuelven como una referencia de descarga, no como texto en línea.
  • Cada escritura exitosa aparece de inmediato en tu vista de memorias y en el Feed de Actividad.

Siguiente paso