Skip to main content
Glama

inspeximus — memoria a largo plazo para agentes de IA que se mantiene correcta

Memoria para agentes Python en un solo archivo sin dependencias, más un servidor MCP para Claude Code y Cursor. Cuando se corrige un hecho, inspeximus sirve el nuevo valor e impide que el antiguo vuelva a aparecer — de forma determinista, sin un LLM en el bucle.

PyPI Descargas CI Auditoría de afirmaciones Python Sin dependencias Pruebas Licencia DOI

pip install inspeximus

Los 30 segundos que importan

Toda biblioteca de memoria puede almacenar y recuperar. La pregunta que nadie responde es qué sucede cuando un hecho almacenado resulta ser incorrecto.

from inspeximus import Inspeximus

m = Inspeximus("memory.json")

m.remember("The staging database is db-3.internal", key="staging-db")
m.remember("The staging database is db-7.internal", key="staging-db")   # a correction

m.recall("which staging database")[0]["text"]
# 'The staging database is db-7.internal'          <- the correction wins, every time

m.revert("staging-db")                              # and it is reversible
m.recall("which staging database")[0]["text"]
# 'The staging database is db-3.internal'

Sin deriva de embeddings, sin "el LLM suele elegir el más reciente". El valor antiguo se retira por clave, y la retirada es un registro que puedes auditar, revertir y probar.


Related MCP server: NeverOnce

Por qué otra biblioteca de memoria

Porque medimos lo único que los demás no publican: con qué frecuencia vuelve un hecho corregido.

Cada sistema se ejecutó en su propia configuración nativa, misma tarea, mismas 30 pruebas:

sistema

mantiene la corrección

resucita el valor antiguo

inspeximus

100%

0%

Graphiti 0.x (Neo4j + OpenAI)

86.7%

13.3%  IC 95% [3.3, 26.7]

mem0 2.0.11 (OpenAI nativo)

53.3%

46.7%  IC 95% [30.0, 63.3]

inspeximus, guardia desactivada

0%

el control: esto es lo que hace la guardia

n = 30 por sistema. mem0 medido en 2.0.11 (2026-07); mem0 está ahora en 2.0.18 y no lo hemos vuelto a ejecutar — la versión está sellada en lugar de reafirmar la afirmación como actual. Método completo, arrays sin procesar y el arnés reejecutable: RAMR · echo_resistance_backends_result.json

Lee la fila de Graphiti correctamente — su defensa contra el eco no falló. Nuestro propio resultado sin procesar registra echo_attributable_flips: 0 de 26 correcciones que se extrajeron correctamente antes de que se ejecutara el eco. La invalidación bitemporal de Graphiti mantuvo cada una de ellas. El 13.3% anterior son cuatro fallos de extracción previa al eco — la corrección nunca llegó al grafo — lo cual es un fallo diferente del que trata esta tabla. Expresado como el mecanismo en lugar del titular: en la resurrección atribuible al eco, Graphiti obtiene un 0%, igual que nosotros, al mantener el enlace de sustitución en el momento de la escritura. Ese es el hallazgo real aquí: lo que separa a estos sistemas es si el enlace se registra, no quién lo registró.

La fila inferior es el punto. Si desactivamos nuestra guardia, obtenemos cero — así que el número es el mecanismo, no el punto de referencia siendo amable con nosotros.


Úsalo en Claude Code (una línea)

inspeximus install --ide claude     # also: cursor, windsurf, codex, cline

Eso conecta un servidor MCP con 71 herramientas y tres hooks. Desde la siguiente sesión, tu agente empieza a saber lo que el anterior decidió — sin editar CLAUDE.md, sin reexplicar:

  • SessionStart inyecta las decisiones que siguen vigentes

  • PostToolUse captura lo que realmente sucedió, indexado por archivo

  • PreToolUse muestra la decisión que afecta a la acción antes de que se ejecute


Lo que obtienes

La corrección como operación de primera clase. remember(key=...) retira el valor anterior para esa clave. revert(key) lo restaura. history(key) muestra la cadena. Todo determinista, todo auditable.

Borrado que se puede probar. forget_subject() elimina permanentemente cada memoria atribuible a un sujeto — incluyendo resúmenes que la heredaron a través del linaje — y deja una lápida firmada y sin contenido, para que una auditoría posterior pueda distinguir borrado deliberado de manipulado.

Procedencia que puedes verificar, no solo almacenar. check_sources() relee el origen de cada registro y devuelve FRESH / DRIFTED / ORPHANED / UNCHECKABLE, más cuatro números de cobertura que se mantienen deliberadamente separados — porque un campo source que está poblado al 98.3% y reobtenible al 0.01% es un esquema, no una garantía. (Esos dos números son nuestros, medidos en nuestro propio almacén de producción).

Aplicabilidad del estado actual. evaluate_applicability() responde a una pregunta diferente de "esta memoria ¿es verdad?": ¿puede impulsar una acción aquí, ahora? La evidencia histórica puede ser perfectamente válida y ya no autorizada — la rama se movió, la política cambió, el inquilino difiere, la ventana expiró. Implementa el contrato CML independiente del proveedor; dos implementaciones independientes coinciden en su fixture congelado.

Aislamiento multiinquilino. for_tenant("acme") proporciona una vista con ámbito sobre un almacén compartido, con el inquilino vinculado al mensaje firmado para que un registro no pueda moverse entre inquilinos y seguir verificándose.

Sin dependencias. Un archivo. La recuperación semántica es opcional (embed=your_model); la alternativa léxica no necesita nada. El servidor MCP, el cifrado y los adaptadores de framework son todos extras opcionales.


Funciona con

langchain · langgraph-store · llamaindex · haystack · autogen · pydantic-ai · google-adk · memoryagentbench

10 de 13 verificados contra la versión actual ascendente, 3 registrados como rotoscrewai, langgraph-checkpointer y openai-agents, nombrados en lugar de eliminados silenciosamente de la lista. Los recuentos se leen de docs/integration_conformance.json por la auditoría de afirmaciones, por lo que esta línea no puede desviarse de lo que el ejecutor midió por última vez.

Una lista de "funciona con" que solo nombra éxitos es un muro de logotipos. Esta te dice qué adaptador se romperá antes de que construyas sobre él.


Cómo se prueba esto

Más de 2.600 pruebas, y una puerta de mutación que es la razón para creerlas: 175 defectos sembrados, 175 eliminados, 0 sobrevivieron. Un conjunto de pruebas que pasa no es evidencia; un conjunto que atrapa cada rotura deliberada sí lo es.

Cada número en esta página está registrado en docs/CLAIMS.md, con el comando exacto que lo recalcula. Si uno no coincide con tu ejecución, ese es un informe de error que queremos.


Documentación

Sitio del proyecto →

el recorrido guiado: el punto de referencia, la superficie MCP, la historia de gobernanza

Medido vs mem0 y Graphiti

la tabla de resurrección completa, con el control y el alcance honesto

Configuración de Claude Code

la instalación MCP de una línea, y lo que hace cada uno de los tres hooks

La versión larga

cada mecanismo, cada medición, y los que fallaron

API completa

cada método, con el fallo que existe para prevenir

Borrado y RGPD

derecho al olvido a través de resúmenes derivados, con recibos

Evidencia de la Ley de IA de la UE

registro del Artículo 12, mapeado a lo que el almacén ya mantiene

Herramientas MCP

las 68, y para qué sirve cada una

Libro de afirmaciones

cada número publicado, y el comando que lo recalcula

Registro de cambios

qué cambió y por qué, incluyendo lo que hicimos mal


Para quién es esto

Estás construyendo un agente que funciona durante semanas, no minutos. Aprenderá algo, y luego esa cosa cambiará — un valor de configuración, una política, la preferencia de una persona, un hecho. El fallo que te costará no es que el agente olvide. Es que el agente recuerde con confianza la respuesta antigua.

Ese es el fallo alrededor del cual está construida esta biblioteca, y el único en el que nos evaluamos.


Cómo citar

Archivado en Zenodo con un DOI independiente de la versión — 10.5281/zenodo.21708778. Los metadatos legibles por máquina están en CITATION.cff, por lo que el botón "Cite este repositorio" de GitHub te proporciona BibTeX y APA directamente.


Licencia MIT. Construido por Agora, una organización de investigación autónoma que publica sus réplicas fallidas junto con las exitosas.

mcp-name: io.github.DanceNitra/inspeximus

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
38dResponse time
0dRelease cycle
7Releases (12mo)

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Persistent, correctable AI memory with zero dependencies. Corrections always surface first and never decay. SQLite-backed, 400 lines of pure Python, MCP server included.
    7
    3
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Two-layer memory for AI agents. Episodes compress into identity. The only MCP memory server with an immune system. Patterns earn permanence through evidence, false knowledge gets caught and demoted, and stale information fades — so your agent's memory gets smarter over time, not just bigger. Zero dependencies. 5 tools. Works with any MCP client.
    16
    10
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Open-source MCP memory server for AI agents — persistent, searchable, tiered memory across sessions. Works over stdio (Cursor, Claude Desktop) or HTTP+SSE. MIT licensed.
    6
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DanceNitra/inspeximus'

If you have feedback or need assistance with the MCP directory API, please join our Discord server