Saltar al contenido principal

Referencia técnica

Una memoria es un grafo editable de forma incremental. Las escrituras son aditivas y atómicas a nivel de observación; el grafo de entidades y relaciones se deriva de esas observaciones y se mantiene conforme cambian. La recuperación es primero por entidad y no realiza síntesis con modelo de lenguaje — de eso se encarga el agente que llama.


Modelo de datos

ObjetoCamposNotas
Observacióntítulo, contenido, categoría, etiquetas, fecha observada, confianza, origenLa unidad de escritura, edición y borrado. Se identifica con un slug estable
Entidadnombre, tipo, descripción, gradoLos nombres se normalizan, así que el mismo nombre en dos observaciones resuelve a una entidad
Relaciónorigen, tipo, destino, descripción, pesoDirigida — se conserva el orden con que se escribió
Archivo del apéndiceruta, nombre, tipo, tamaño, descripción, creado porSe guarda por memoria y se referencia desde las observaciones por ruta

Contrato de escritura

  • Toda entidad requiere una descripción no vacía. Es la señal principal de recuperación; una entidad sin ella no es recuperable y la escritura se rechaza.
  • Las observaciones tienen un límite blando de unos 2.000 caracteres. El contenido más largo debe dividirse en observaciones separadas, con el documento fuente en el apéndice y referenciado por ruta.
  • Las relaciones son opcionales pero muy recomendables — son lo que hace que una consulta devuelva algo más que la nota que ya tenías.
  • Las entidades pueden llevar consultas de recuperación: un par de preguntas que la entidad debería responder, incorporadas a cómo se la empareja.

Las escrituras repetidas que nombran una entidad existente se fusionan con ella en vez de crear un duplicado. Las respuestas de escritura devuelven el vecindario de cada entidad tocada, para que quien llama reutilice nombres existentes y detecte conexiones desactualizadas en lugar de duplicarlas.


Consulta

Dos modos, ambos sin llamadas a modelos de lenguaje.

ModoSe activa conSelección
SemánticoUn texto de consultaOrdena entidades según la consulta y devuelve su subgrafo
EstructuralSin consultaFiltra observaciones por categoría, etiquetas, rango de fechas o nombre de entidad

Ambos devuelven la misma forma: una lista ordenada de entidades, las relaciones entre ellas y un extracto acotado por cada observación de origen. La respuesta tiene tope — entidades, relaciones y observaciones tienen cada una su límite — y se incluye un aviso cuando se recortaron resultados.

Los extractos son cortos a propósito. Una observación más larga que el extracto se marca como truncada, y su texto completo se pide aparte por slug. Así una consulta se mantiene muy por debajo del límite de tamaño de respuesta sin dejar de anclar cada entidad en la nota de la que salió.

La recuperación es primero por entidad, no por documento. Una consulta empareja primero descripciones de entidades; las observaciones vuelven porque una entidad en ellas quedó bien posicionada, no porque la consulta coincidiera con su texto. Por eso consultar por una persona también saca a la luz los proyectos y organizaciones ligados a ella.


Semántica de edición y borrado

  • El slug es la identidad estable. Cambiar el título de una observación no cambia su slug, así que las ediciones posteriores contra un slug ya devuelto siguen funcionando. El título es solo de presentación.
  • Las actualizaciones fusionan, no reemplazan. Pasar una lista parcial de entidades en una edición la une con el grafo actual de la observación; quien llama gana en los conflictos. Omitir una entidad no la elimina — quitar algo es explícito.
  • Un cambio material en la descripción de una entidad dispara un aviso de revisión. La respuesta lista las relaciones existentes de esa entidad para refrescar sus descripciones; no se reescribe nada solo, porque la descripción de una conexión puede seguir siendo correcta tras cambiar un nodo.
  • Borrar una observación poda lo que queda huérfano. Se eliminan las entidades y relaciones sostenidas solo por esa observación; lo referenciado en otro lado sobrevive.

Consolidación

La consolidación revisa un almacén y emite propuestas — sobre todo fusiones de entidades donde la misma cosa real quedó registrada con nombres variantes. Las propuestas nunca se aplican solas; cada una se acepta o se rechaza. Aceptar una fusión reasigna cada extremo de relación a la entidad canónica, descarta los bucles sobre sí misma y recalcula los grados.


Niveles de acceso

El acceso se concede por conexión entre agente y memoria, no por agente.

NivelAgrega
readConsultar, inspeccionar una entidad, leer una observación completa, listar y leer archivos del apéndice
read_writeAgregar observaciones, guardar archivos, ejecutar la consolidación — solo aditivo
fullActualizar y borrar observaciones existentes — correctivo

Las conexiones nuevas usan read_write por defecto. Los niveles son estrictamente anidados; un nivel concede todo lo que está por debajo.


Comportamiento y límites

  • Las escrituras se serializan por memoria. Las escrituras concurrentes a un almacén se encolan en vez de intercalarse; las lecturas nunca se bloquean.
  • La configuración de recuperación de un almacén se fija al crearlo y no se puede editar. Cambiarla haría que las entradas existentes y las nuevas no fueran consultables entre sí, así que es una migración, no un ajuste.
  • El orden no está garantizado entre agentes. Dos agentes que escriben en el mismo periodo pueden quedar en cualquier orden; las observaciones son independientes, así que esto no corrompe el grafo, pero sí significa que «gana la última» no es una suposición segura para datos contradictorios. Corrige las contradicciones con una edición explícita.
  • Los resultados de consulta tienen tope, y la respuesta lo indica cuando se descartaron resultados. Acota con una categoría, etiqueta o rango de fechas en lugar de esperar más del tope.
  • Una memoria compartida con visibilidad de organización es legible por toda la organización; el nivel de acceso sigue rigiendo qué puede hacer con ella cada agente.

Qué sigue