MemoryGuard

Gobernanza de memoria MCP local-primero para agentes de codificación con reglas compartidas, deduplicación, auditoría, reversión e información de tokens.

Documentación

MemoryGuard

Memoria compartida gobernada para agentes de codificación.
Memoria MCP local-first con organización automática, reglas con alcance, evidencia y reversión.

PyPI version CI status Python 3.10 or newer MIT license 中文文档

Deja que los agentes escriban sin convertir la memoria compartida en un montón sin revisar. MemoryGuard organiza cada escritura, preserva la evidencia detrás de los cambios y mantiene las decisiones de gobernanza reversibles.

Sin cuenta. Sin servidor remoto. Sin telemetría remota. La telemetría de uso local es opcional y almacena agregados acotados y que preservan la privacidad localmente.

Inicio rápido · Actualización · Biblioteca de conocimiento · Arquitectura · Hosts compatibles · Privacidad y seguridad

Animated MemoryGuard neuron graph with governed memory categories and signals moving through the local projection

Una proyección gobernada sintética: las señales se mueven a través de categorías de memoria mientras el texto de conversación en bruto permanece fuera del grafo.

Novedades en v0.7.8

v0.7.8 consolida las correcciones de gobernanza, observabilidad y tiempo de ejecución del host preparadas después de v0.7.7:

  • Gobernanza canónica de memoria y reglas: las reglas, hábitos y memorias relacionados convergen a través de una única ruta canónica de lectura/escritura mientras la evidencia, los enlaces de origen, las ramas del grafo, el historial de sustitución, la revisión de conflictos y la resolución permanecen auditables y reversibles.
  • Gobernanza multiagente legible: identidades de programa verificadas, etiquetas legibles, iconos de familia seguros, alcance de grupo compartido, explicaciones de riesgo, cierre de conflictos obsoletos y el shell de GUI de siete páginas mantienen la gobernanza diaria comprensible.
  • Vista de uso y ahorro local: la página de Tokens muestra eventos locales de conversión MCP y unidades estimadas de referencia frente a entregadas de siete/treinta días. Las mediciones de tokens del proveedor se usan solo cuando se informan (actualmente Codex y Grok); Claude, Cursor y Trae permanecen explícitamente no compatibles. No se almacena cuerpo de conversación, cuenta, ruta ni identificador de instancia.
  • Alineación del ciclo de vida y tiempo de ejecución de Codex: la evidencia de hilo de terminal controla la recuperación de cohortes filtradas propiedad de Codex; los turnos ordinarios siguen siendo reanudables. La reparación instalada alinea los Hooks de MCP y ciclo de vida con el intérprete actual mientras preserva la identidad de Agente/grupo compartido y los límites de cierre ante fallos.

Consulta el registro de la versión v0.7.8.

Los detalles de versiones anteriores se mantienen en el Changelog y registros de versiones de GitHub.

Refactorización principal V2 en v0.6.0

v0.6.0 fue una refactorización del plano de datos de producción, no una actualización solo de almacenamiento:

  • Dominios V2 autoritativos: los estados de Memoria, Reglas, Evidencia, Contenido, Tiempo de ejecución, Proyección, Activos, CodeGraph, Habilidades y Sistema se separan en dominios SQLite explícitos con límites gobernados.
  • Transición explícita: V1_ACTIVE → V2_BUILDING → V2_READY → V2_ACTIVE es de cierre ante fallos; V2 nunca retrocede silenciosamente a almacenes heredados o escrituras duales después de READY/ACTIVE.
  • Migración sin pérdidas: la preparación de fuente congelada usa copias de seguridad en línea coherentes de SQLite, valida la evidencia de origen/destino, vuelve a verificar la deriva de la fuente en vivo y preserva los datos V1 más las copias de seguridad de migración para la reversión.
  • Enrutamiento nativo: las superficies MCP, CLI, GUI y Hook se clasifican explícitamente; la versión cerró la transición de 233 superficies con 138 rutas implementadas, 95 rutas retiradas y cero rutas neutrales/bloqueantes.
  • Inteligencia gobernada: el ciclo de vida de reglas y RuleMerge, extracción/enriquecimiento, importación MCP externa, plano de control del proveedor, historial de conversación, Biblioteca de conocimiento y gobernanza de GUI usan las rutas de evidencia y decisión V2.
  • Evidencia operativa: Auditoría de referencia, salud SQLite por dominio, mantenimiento protegido, evidencia de reversión y diagnósticos no vinculados seguros son parte de la preparación y las operaciones.

Por qué MemoryGuard

La memoria persistente resuelve el almacenamiento. No resuelve la gobernanza.

Cuando varios agentes de codificación escriben en el mismo contexto, los registros se vuelven duplicados, obsoletos, contradictorios, demasiado amplios o inseguros de reutilizar. MemoryGuard se sitúa entre los agentes de codificación y su memoria compartida para mantener ese contexto utilizable.

Sin gobernanzaCon MemoryGuard
Las notas se acumulan sin un estado canónicoLas escrituras se clasifican, deduplican, sustituyen o se muestran como conflictos
Una corrección destruye silenciosamente el valor anteriorLa evidencia y las cadenas de sustitución preservan qué cambió y por qué
Los tokens y credenciales pueden permanecer activosEl contenido de apariencia sensible se pone en cuarentena de la memoria activa
Cada escritura necesita aprobación manualLos agentes escriben normalmente; las personas revisan excepciones y resultados
Los registros de chat en bruto se filtran al contexto futuroEl historial de conversación permanece como un archivo de evidencia separado y leído explícitamente

Arquitectura del sistema

%%{init: {"theme":"base","themeVariables":{"background":"#071521","fontFamily":"Arial, sans-serif","fontSize":"14px","primaryTextColor":"#EEF4F8","lineColor":"#557287","edgeLabelBackground":"#071521","clusterBkg":"#0A1A29","clusterBorder":"#27445A"},"flowchart":{"htmlLabels":true,"curve":"basis","nodeSpacing":32,"rankSpacing":48,"padding":14}}}%%
flowchart TB
    Hosts["CODING-AGENT HOSTS<br/>Claude Code · Codex · Cursor · TRAE&nbsp;&nbsp;&nbsp;&nbsp;"]:::host
    Gateway["LOCAL INTEGRATION<br/>MCP stdio · redirect rules · lifecycle hooks&nbsp;&nbsp;&nbsp;&nbsp;"]:::gateway

    subgraph Core["GOVERNANCE CORE&nbsp;&nbsp;&nbsp;&nbsp;"]
        direction LR
        Identity["TRUST<br/>identity · scope&nbsp;&nbsp;&nbsp;&nbsp;"]:::core
        MemoryAPI["MEMORY<br/>governed I/O&nbsp;&nbsp;&nbsp;&nbsp;"]:::active
        Rules["RULES<br/>scope · assignment&nbsp;&nbsp;&nbsp;&nbsp;"]:::rule
        HistoryAPI["HISTORY<br/>search · timeline&nbsp;&nbsp;&nbsp;&nbsp;"]:::history
        Security["SAFETY<br/>validate · quarantine&nbsp;&nbsp;&nbsp;&nbsp;"]:::danger

        Identity --> MemoryAPI
        Identity --> Rules
        Identity --> HistoryAPI
        MemoryAPI --> Security
    end

    subgraph Stores["LOCAL GOVERNED STORES&nbsp;&nbsp;&nbsp;&nbsp;"]
        direction LR
        SharedDB[("V2 DOMAIN STORES<br/>Memory · Rules · Evidence · Content&nbsp;&nbsp;&nbsp;&nbsp;")]:::store
        HistoryDB[("HISTORY STORE<br/>isolated conversations&nbsp;&nbsp;&nbsp;&nbsp;")]:::historyStore
        AuditDB[("RECOVERY STORE<br/>versions · receipts · backups&nbsp;&nbsp;&nbsp;&nbsp;")]:::store
    end

    Bootstrap["BOUNDED CONTEXT BOOTSTRAP<br/>mandatory rule pack · relevant recall&nbsp;&nbsp;&nbsp;&nbsp;"]:::bootstrap
    Control["HUMAN CONTROL<br/>CLI · desktop governance console&nbsp;&nbsp;&nbsp;&nbsp;"]:::surface

    Hosts --> Gateway --> Identity
    MemoryAPI --> SharedDB
    Rules --> SharedDB
    HistoryAPI --> HistoryDB
    Security --> AuditDB
    SharedDB --> Bootstrap
    Control --> Identity

    classDef host fill:#12243A,stroke:#38D5C8,color:#EEF4F8,stroke-width:1.4px;
    classDef gateway fill:#0D3338,stroke:#38D5C8,color:#EEF4F8,stroke-width:2.4px;
    classDef core fill:#12243A,stroke:#557287,color:#EEF4F8,stroke-width:1.4px;
    classDef active fill:#0D383A,stroke:#38D5C8,color:#EEF4F8,stroke-width:2px;
    classDef rule fill:#3B2C18,stroke:#F3B562,color:#EEF4F8,stroke-width:1.8px;
    classDef history fill:#102F45,stroke:#73C7F5,color:#EEF4F8,stroke-width:1.8px;
    classDef danger fill:#3A2028,stroke:#EA6A6A,color:#EEF4F8,stroke-width:1.8px;
    classDef bootstrap fill:#EEF4F8,stroke:#38D5C8,color:#071521,stroke-width:2.4px;
    classDef store fill:#0B1624,stroke:#7F96A8,color:#EEF4F8,stroke-width:1.4px;
    classDef historyStore fill:#102436,stroke:#73C7F5,color:#EEF4F8,stroke-width:1.4px;
    classDef surface fill:#EEF4F8,stroke:#38D5C8,color:#071521,stroke-width:2px;

    style Core fill:#081827,stroke:#27445A,stroke-width:1px,color:#EEF4F8
    style Stores fill:#081827,stroke:#27445A,stroke-width:1px,color:#EEF4F8
    linkStyle default stroke:#557287,stroke-width:1.4px;

Inicio rápido

Metadatos del registro MCP

Este paquete expone un servidor MCP stdio local como io.github.irisxc4/memoryguard. Los metadatos del registro se mantienen en server.json. El marcador anterior es obligatorio en el README del paquete PyPI. El artefacto PyPI actual de agent-memguard 0.7.8 no tiene marcador, por lo que 0.7.8 aún no se puede publicar en el registro MCP. Para la próxima versión, primero incrementa ambas versiones de server.json a la nueva versión del paquete, publica un artefacto PyPI con marcador, confirma que su versión y marcador son visibles, y luego ejecuta mcp-publisher publish.

1. Instalar

python -m pip install agent-memguard

Para la consola de gobernanza de escritorio:

python -m pip install "agent-memguard[gui]"

2. Autorizar el proyecto actual

memoryguard source add .

3. Conectar o reparar tu agente de codificación

La configuración global del proveedor se reconstruye desde el enlace real en el directorio de datos de usuario canónico. El comando es idempotente y elimina las anulaciones obsoletas a nivel de proyecto de MemoryGuard después de una toma de control global exitosa.

# Repair one provider
memoryguard provider repair claude
memoryguard provider repair codex
memoryguard provider repair cursor
memoryguard provider repair trae

# Repair every detected provider
memoryguard provider repair all

Reinicia el host después de la instalación y luego verifica la integración:

memoryguard doctor
memoryguard mcp-status
memoryguard hooks status --provider all

Inicia la consola de escritorio:

memoryguard gui

memoryguard-gui . permanece disponible para accesos directos de escritorio. Un memoryguard gui simple siempre abre el directorio de control de usuario canónico (por defecto %LOCALAPPDATA%\MemoryGuard en Windows), por lo que ejecutarlo desde un proyecto o desde C:\Windows\System32 no puede cambiar silenciosamente las bases de datos. MEMORYGUARD_WORKSPACE es una anulación explícita del operador; un memoryguard gui <project-path> o memoryguard gui --workspace <project-path> explícito selecciona un espacio de trabajo específico. No recuerda un proyecto seleccionado previamente ni abre un selector de carpetas. En Windows, memoryguard gui separa la ventana nativa de la terminal, por lo que cerrar PowerShell no cierra la GUI.

Configuración y comportamiento específicos del proveedor:

Enlace estable de Codex / Router

Codex/Router vincula MemoryGuard al programa y control local estable de Codex. Un perfil de cuenta es un endpoint/alias, no un nuevo propietario de memoria: cambiar de perfil descubre o repara automáticamente el perfil y reutiliza el enlace de Agente verificado y el grupo activo. La identidad de solicitud permanece de cierre ante fallos; esto no comparte registros entre máquinas ni con cuentas arbitrarias.

Actualización

MemoryGuard se actualiza actualmente a través del administrador de paquetes de Python:

python -m pip install --upgrade agent-memguard
memoryguard --version
memoryguard doctor

Si instalaste el extra de GUI, mantenlo durante la actualización:

python -m pip install --upgrade "agent-memguard[gui]"

No hay comando de autoactualización del paquete. El administrador de paquetes es la ruta autoritativa de actualización de paquetes; memoryguard upgrade a continuación es el flujo explícito de migración de espacio de trabajo, no un actualizador de paquetes.

Actualizar un directorio de datos V1 existente

Actualiza el paquete y luego ejecuta la migración verificada. No se requieren argumentos de espacio de trabajo, directorio de datos, aplicación o confirmación para el directorio de datos de usuario normal:

python -m pip install --upgrade agent-memguard
memoryguard --version                    # 0.7.8
memoryguard upgrade
memoryguard doctor

El comando prepara V2, valida la evidencia de fuente congelada y en vivo, migra el control de Agente/Grupo, activa solo después de que todas las compuertas pasen y elimina solo el lote de copia de seguridad perteneciente a esa migración exitosa. Volver a ejecutarlo en V2_ACTIVE es idempotente. Para un informe sin escrituras, usa:

memoryguard upgrade --preview

Las opciones avanzadas explícitas de espacio de trabajo/directorio de datos permanecen disponibles para operadores que gestionan una instalación aislada. Una compuerta fallida permanece no activa y preserva su evidencia; la activación exitosa no mantiene una copia de seguridad de migración redundante.

Espacios de trabajo pre-V2 existentes: transición V2 explícita

v0.6.0 nunca activa automáticamente un espacio de trabajo existente. Actualiza el paquete primero, luego usa la CLI de operador empaquetada:

# Read-only manifest status
memoryguard-v2 status -w .

# Build a frozen-source V2 shadow and stop at V2_READY
memoryguard-v2 prepare -w . --apply

# Activate only after the prepare result is V2_READY / ready=true
memoryguard-v2 activate -w . --confirm V2_ACTIVE

El paso de preparación usa copias de seguridad en línea coherentes de SQLite, preserva V1 y migration-backups, y vuelve a verificar la deriva de la fuente en vivo antes de READY. La activación realiza otra verificación de deriva fresca antes de cambiar el manifiesto. No elimines los datos V1 heredados ni las copias de seguridad de migración como parte de la actualización.

Biblioteca de conocimiento

La consola de escritorio puede convertir una carpeta seleccionada o un conjunto de archivos en una biblioteca de conocimiento local gobernada. Los archivos fuente permanecen donde están; MemoryGuard almacena el índice buscable en su directorio de datos de usuario en lugar de copiar una base de datos de tiempo de ejecución en cada proyecto fuente. Los metadatos de conocimiento nunca se convierten en un segundo almacén de cuerpo fuente.

CapacidadComportamiento actual
Ingestión de archivos/carpetasAgregar una carpeta como libro o archivos seleccionados como documentos
EstructuraAnalizar documentos, preservar el contexto de capítulo/sección y crear fragmentos trazables
RecuperaciónBúsqueda de texto completo, incrustaciones opcionales y un grafo de conocimiento en capas
Sincronización naturalRe-ingestar archivos cambiados; un escaneo parcial o fallido no elimina silenciosamente contenido indexado previamente
Ciclo de vidaMover un libro a la papelera de la biblioteca, restaurarlo o purgar explícitamente su instantánea de recuperación
Candidatos de memoriaPrevisualizar candidatos respaldados por evidencia antes de aceptarlos en la memoria a largo plazo gobernada

Abre la consola de escritorio y elige Biblioteca de conocimiento. La incrustación remota o la indexación basada en modelos es opcional y requiere autorización explícita; la recuperación local de texto completo permanece disponible sin enviar texto fuente a un proveedor remoto.

Actualización de CodeGraph

La primera compilación de CodeGraph es una compilación completa explícita y confirmada. Después de que un alcance se haya compilado, cada escritura de archivo confiable exitosa puede desencadenar una actualización incremental para ese alcance, sujeta a una validación estricta de ruta fuente y enlace activo. Los hashes de contenido sin cambios son una no operación; los archivos eliminados se retiran; el siguiente contexto recibe un recibo acotado de affected. MemoryGuard no ejecuta un daemon ni un observador para esta ruta y no infiere rutas de shell o texto de forma libre.

Superficies de la consola de escritorio

La GUI sigue una arquitectura de información de siete páginas:

  1. Resumen de gobernanza
  2. Fuentes de datos y agentes
  3. Núcleo de memoria
  4. CodeGraph
  5. Reglas y hábitos
  6. Historial de conversación
  7. Señales de riesgo y consola de gobernanza

Las listas de agentes usan nombres legibles de programa/proveedor; el ID subyacente permanece disponible en la vista de detalle. Los datos vacíos se muestran como un estado vacío explícito.

Ciclo de vida de escritura y gobernanza

%%{init: {"theme":"base","themeVariables":{"background":"#071521","fontFamily":"Arial, sans-serif","fontSize":"14px","primaryTextColor":"#EEF4F8","lineColor":"#557287","edgeLabelBackground":"#071521","clusterBkg":"#0A1A29","clusterBorder":"#27445A"},"flowchart":{"htmlLabels":true,"curve":"basis","nodeSpacing":30,"rankSpacing":42,"padding":14}}}%%
flowchart TD
    subgraph Intake["01 · INTAKE&nbsp;&nbsp;&nbsp;&nbsp;"]
        direction LR
        Write(["Memory write&nbsp;&nbsp;&nbsp;&nbsp;"]):::entry
        Scope["Resolve identity<br/>scope · audience&nbsp;&nbsp;&nbsp;&nbsp;"]:::core
        Validate{"Authorized?&nbsp;&nbsp;&nbsp;&nbsp;"}:::decision
        Reject["Reject<br/>no persistence&nbsp;&nbsp;&nbsp;&nbsp;"]:::danger
        Write --> Scope --> Validate
        Validate -- NO --> Reject
    end

    subgraph Organize["02 · ORGANIZE&nbsp;&nbsp;&nbsp;&nbsp;"]
        direction TB
        Secret{"Sensitive?&nbsp;&nbsp;&nbsp;&nbsp;"}:::decision
        Quarantine["Quarantine<br/>outside active set&nbsp;&nbsp;&nbsp;&nbsp;"]:::danger
        Compare["Classify · compare<br/>governed records&nbsp;&nbsp;&nbsp;&nbsp;"]:::active
        Relation{"Relationship&nbsp;&nbsp;&nbsp;&nbsp;"}:::decision
        New["NEW<br/>create active record&nbsp;&nbsp;&nbsp;&nbsp;"]:::result
        Duplicate["DUPLICATE<br/>merge provenance&nbsp;&nbsp;&nbsp;&nbsp;"]:::result
        Correction["CORRECTION<br/>supersede old record&nbsp;&nbsp;&nbsp;&nbsp;"]:::rule
        Conflict["CONFLICT<br/>preserve both sides&nbsp;&nbsp;&nbsp;&nbsp;"]:::danger

        Secret -- YES --> Quarantine
        Secret -- NO --> Compare --> Relation
        Relation --> New
        Relation --> Duplicate
        Relation --> Correction
        Relation --> Conflict
    end

    subgraph Govern["03 · GOVERN&nbsp;&nbsp;&nbsp;&nbsp;"]
        direction LR
        Receipt[("Evidence event<br/>version receipt&nbsp;&nbsp;&nbsp;&nbsp;")]:::store
        Review["CLI or desktop review&nbsp;&nbsp;&nbsp;&nbsp;"]:::surface
        Action["Correct · merge<br/>restore · delete&nbsp;&nbsp;&nbsp;&nbsp;"]:::rule
        Snapshot["Reversible<br/>snapshot&nbsp;&nbsp;&nbsp;&nbsp;"]:::active
        Receipt --> Review --> Action --> Snapshot
    end

    Validate -- YES --> Secret
    Quarantine --> Receipt
    New --> Receipt
    Duplicate --> Receipt
    Correction --> Receipt
    Conflict --> Receipt

    classDef entry fill:#EEF4F8,stroke:#38D5C8,color:#071521,stroke-width:2.4px;
    classDef core fill:#12243A,stroke:#557287,color:#EEF4F8,stroke-width:1.5px;
    classDef decision fill:#0D3338,stroke:#38D5C8,color:#EEF4F8,stroke-width:2px;
    classDef active fill:#0D383A,stroke:#38D5C8,color:#EEF4F8,stroke-width:2px;
    classDef result fill:#12243A,stroke:#38D5C8,color:#EEF4F8,stroke-width:1.6px;
    classDef rule fill:#3B2C18,stroke:#F3B562,color:#EEF4F8,stroke-width:1.8px;
    classDef danger fill:#3A2028,stroke:#EA6A6A,color:#EEF4F8,stroke-width:1.8px;
    classDef store fill:#0B1624,stroke:#7F96A8,color:#EEF4F8,stroke-width:1.4px;
    classDef surface fill:#EEF4F8,stroke:#38D5C8,color:#071521,stroke-width:2px;

    style Intake fill:#081827,stroke:#27445A,stroke-width:1px,color:#EEF4F8
    style Organize fill:#081827,stroke:#27445A,stroke-width:1px,color:#EEF4F8
    style Govern fill:#081827,stroke:#27445A,stroke-width:1px,color:#EEF4F8
    linkStyle default stroke:#557287,stroke-width:1.4px;

La consola no es una cola de aprobación. Los agentes siguen avanzando. MemoryGuard registra el resultado y expone la evidencia necesaria para corregirlo más tarde.

Lo que puedes gobernar

SeñalAcción de gobernanza
Memoria duplicada o desactualizadaInspeccionar el registro canónico y la cadena de sustitución; restaurar una versión anterior cuando sea necesario
Memorias en conflictoMantener ambas visibles hasta que el conflicto se resuelva deliberadamente
Secretos, tokens o credencialesPoner en cuarentena el registro para que no pueda entrar en la memoria compartida activa
Organización automática incorrectaCorregir, fusionar, bloquear, restaurar o revertir con evidencia
Múltiples agentes de codificaciónVincular agentes a un grupo compartido único preservando la identidad y el alcance de la fuente
Reglas obligatoriasAsignar reglas a un Agente, proyecto, proveedor, rol de ejecución o grupo compartido

Las reglas y el historial permanecen separados

MemoryGuard mantiene deliberadamente la memoria gobernada a largo plazo y el historial crudo de conversación en rutas diferentes.

SuperficiePropósitoComportamiento del contexto
Reglas y hábitosPreferencias, procedimientos, correcciones, hechos, proyectos y reglas obligatorias con alcanceLas reglas obligatorias usan un presupuesto independiente de caracteres/tokens después del alcance, exclusión, conflicto y deduplicación semántica. Un recuento efectivo superior a 20 es una advertencia de salud, no un bloqueo duro; el almacenamiento no está limitado por recuento. Los registros sensibles, corruptos, de tamaño excesivo por elemento y el desbordamiento agregado aún fallan de forma cerrada sin truncamiento silencioso. Los registros ordinarios se recuperan cuando son relevantes
Historial de conversaciónArchivo local de evidencia cruda con controles de acceso de propietario y grupo compartidoNunca entra en el arranque automáticamente; el texto crudo se lee solo a través de herramientas de historial explícitas
Grafo neuronalNavegación y gobernanza sobre memoria, reglas, proyectos, agentes y sesionesLos nodos de historial contienen metadatos seguros y resúmenes, no contenido crudo de chat

La recuperación del historial es progresiva: resultados de búsqueda, luego una línea de tiempo acotada, luego un turno o sesión seleccionado explícitamente. Extraer del historial crea una vista previa primero; no escribe silenciosamente una memoria a largo plazo.

%%{init: {"theme":"base","themeVariables":{"background":"#071521","fontFamily":"Arial, sans-serif","fontSize":"14px","primaryTextColor":"#EEF4F8","lineColor":"#557287","edgeLabelBackground":"#071521","clusterBkg":"#0A1A29","clusterBorder":"#27445A"},"flowchart":{"htmlLabels":true,"curve":"basis","nodeSpacing":30,"rankSpacing":42,"padding":14}}}%%
flowchart LR
    subgraph HistoryPath["CONVERSATION EVIDENCE&nbsp;&nbsp;&nbsp;&nbsp;"]
        direction TB
        Archive[("Raw local history&nbsp;&nbsp;&nbsp;&nbsp;")]:::historyStore
        Search["Search summaries&nbsp;&nbsp;&nbsp;&nbsp;"]:::history
        Timeline["Bounded timeline&nbsp;&nbsp;&nbsp;&nbsp;"]:::history
        Read["Explicit turn or session&nbsp;&nbsp;&nbsp;&nbsp;"]:::history
        Preview["Evidence-backed<br/>extraction preview&nbsp;&nbsp;&nbsp;&nbsp;"]:::history
        Confirm["Explicit acceptance&nbsp;&nbsp;&nbsp;&nbsp;"]:::surface
        Isolation["NO AUTOMATIC<br/>BOOTSTRAP PATH&nbsp;&nbsp;&nbsp;&nbsp;"]:::barrier

        Archive --> Search --> Timeline --> Read --> Preview --> Confirm
        Archive -.-> Isolation
    end

    subgraph GovernedMemory["GOVERNED LONG-TERM MEMORY&nbsp;&nbsp;&nbsp;&nbsp;"]
        direction TB
        Mandatory["Scoped mandatory rules&nbsp;&nbsp;&nbsp;&nbsp;"]:::rule
        Assignments["Agent · project<br/>role · group scope&nbsp;&nbsp;&nbsp;&nbsp;"]:::core
        RulePack["Mandatory-rule<br/>budget&nbsp;&nbsp;&nbsp;&nbsp;"]:::budget
        Ordinary["Facts · preferences<br/>projects · procedures&nbsp;&nbsp;&nbsp;&nbsp;"]:::memory
        Recall["Task-relevant<br/>recall budget&nbsp;&nbsp;&nbsp;&nbsp;"]:::budget
        Context["BOUNDED CONTEXT PACKET&nbsp;&nbsp;&nbsp;&nbsp;"]:::context

        Mandatory --> Assignments --> RulePack --> Context
        Ordinary --> Recall --> Context
    end

    HistoryPath ==>|GOVERNED WRITE&nbsp;&nbsp;&nbsp;&nbsp;| GovernedMemory

    classDef rule fill:#3B2C18,stroke:#F3B562,color:#EEF4F8,stroke-width:1.8px;
    classDef core fill:#12243A,stroke:#557287,color:#EEF4F8,stroke-width:1.4px;
    classDef memory fill:#0D383A,stroke:#38D5C8,color:#EEF4F8,stroke-width:1.8px;
    classDef budget fill:#12243A,stroke:#38D5C8,color:#EEF4F8,stroke-width:1.6px;
    classDef context fill:#EEF4F8,stroke:#38D5C8,color:#071521,stroke-width:2.4px;
    classDef history fill:#102F45,stroke:#73C7F5,color:#EEF4F8,stroke-width:1.6px;
    classDef historyStore fill:#102436,stroke:#73C7F5,color:#EEF4F8,stroke-width:1.6px;
    classDef surface fill:#EEF4F8,stroke:#73C7F5,color:#071521,stroke-width:2px;
    classDef barrier fill:#3A2028,stroke:#EA6A6A,color:#EEF4F8,stroke-width:2px;

    style GovernedMemory fill:#081827,stroke:#27445A,stroke-width:1px,color:#EEF4F8
    style HistoryPath fill:#081827,stroke:#27445A,stroke-width:1px,color:#EEF4F8
    linkStyle default stroke:#557287,stroke-width:1.4px;

Hosts compatibles

HostIntegraciónLímite actual
Claude CodeEnlace MCP global, reglas de redirección, Hook de ciclo de vida a nivel de usuarioRuta de toma de control verificada
CodexEnlace MCP global, reglas de redirección, Hook de ciclo de vida a nivel de usuarioRuta de toma de control verificada
CursorEnlace MCP global, reglas de redirección, Hook de ciclo de vida a nivel de usuarioRuta de toma de control verificada
TRAEEnlace MCP y reglas de redirecciónSin costura de Hook verificada; reportado como respaldo en lugar de toma de control completa

El estado del proveedor se reporta honestamente como redirigido, observado, operativo o no compatible. MemoryGuard no afirma que puede deshabilitar la memoria nativa de cada host cuando el host no expone un punto de integración confiable.

Arquitectura

CapaResponsabilidad
Evidencia y contenidoFuentes autorizadas, evidencia inmutable, blobs/ocurrencias con direccionamiento por contenido, manifiestos de fuente y archivos de conversación
Memoria y reglasÁtomos de memoria con alcance, revisiones, enlaces, definiciones de reglas, decisiones, enlaces de evidencia y operaciones de gobernanza compensatorias
Ejecución y proyecciónContexto de trabajo acotado, proyecciones de escenarios/perfiles, CodeGraph, Assets y metadatos de Skills
Transición y gobernanzaManifiesto de cuatro estados, enrutamiento nativo MCP/CLI/GUI/Hook, Auditoría de Referencia, mantenimiento, adaptadores de proveedor y evidencia de reversión

V2 usa dominios SQLite autoritativos separados en lugar de una única base de datos de memoria compartida. La ejecución lee y escribe V2 solo después de que el manifiesto alcanza V2_ACTIVE; V2_BUILDING y V2_READY nunca recurren silenciosamente ni escriben en doble vía. La evidencia permanece trazable sin ser tratada como memoria automáticamente confiable.

Privacidad y seguridad

  • MemoryGuard se ejecuta como un servidor MCP stdio local.
  • Todos los datos gobernados permanecen locales a menos que autorices explícitamente un modelo remoto o una operación de incrustación. La telemetría de uso opcional es solo local: sus eventos de tokens de host medidos y eventos de conversión deterministas se almacenan bajo .memoryguard/usage_telemetry.sqlite; no sube datos. Los ahorros de tokens son estimaciones basadas en unidades deterministas de MemoryGuard, no una declaración de facturación del proveedor. Los hosts sin reporte de tokens permanecen no compatibles en las columnas medidas.
  • La base de datos de la Biblioteca de Conocimiento usa MEMORYGUARD_HOME o el directorio de datos de usuario de la plataforma, por lo que una carpeta de fuente seleccionada no recibe su propia base de datos de conocimiento.
  • El estado autoritativo del espacio de trabajo V2 se separa bajo .memoryguard/ en dominios explícitos de Memoria, Reglas, Evidencia, Contenido, Ejecución, Proyección, Assets, CodeGraph, Skills y Sistema; el control de Historial, Fuente, Enlace y Grupo son superficies nativas de V2. Los artefactos heredados de V1 se preservan como evidencia local de reversión/auditoría después de la transición y ya no son la ruta de escritura activa de ejecución V2; solo memoryguard.migration puede leerlos.
  • El escaneo de fuentes es de solo lectura por defecto.
  • Las rutas de gobernanza mutantes usan validación, alcance explícito, procedencia y estado reversible.
  • Los registros en cuarentena permanecen fuera de la memoria compartida activa.
  • El historial crudo de conversación nunca se inyecta en el arranque automáticamente.
  • El acceso al historial de grupos compartidos sigue la membresía activa actual y no otorga derechos de eliminación sobre la fuente de otro Agente.

CLI

El comando instalado memoryguard expone estas operaciones de nivel superior:

ComandoPropósito
audit [path]Ejecutar una auditoría de solo lectura y generar un informe
open [path]Abrir el informe interactivo más reciente
explain <finding_id>Explicar evidencia y riesgo para un hallazgo
source <action>Listar, agregar, eliminar o previsualizar fuentes autorizadas
scanEscanear fuentes autorizadas y construir el libro de cobertura
doctorDiagnosticar el manifiesto V2, disponibilidad de dominios y cobertura nativa
mcp-statusInspeccionar la salud de MCP/backend V2; los recuentos de inquilinos requieren un alcance de Agente vinculado
hooks <action>Instalar, inspeccionar, pausar, reparar o eliminar Hooks de host
provider <action>Inspeccionar o reparar integraciones globales de proveedores
`storage auditreport`
`storage sweepcompact`
groups <action>Inspeccionar el estado del grupo gobernado
gui [path]Lanzar la consola de gobernanza interactiva
desktopLanzar el ejecutor de escritorio confiable

Los flujos de trabajo antiguos de V1 plan, apply, verify, undo, import y gc pueden permanecer analizables como superficies de compatibilidad retiradas explícitas, pero no son una ruta de ejecución V1. Bajo V2_ACTIVE devuelven un resultado retirado estable en lugar de escribir a través de un almacén heredado. La entrada de datos heredados se acepta solo mediante el flujo de actualización explícito memoryguard.migration.

Ejecuta memoryguard --help o memoryguard <command> --help para la referencia de comandos en vivo.

API MCP

El servidor MCP expone herramientas para:

  • lectura, búsqueda, escritura, actualización, eliminación y estado de memoria gobernada;
  • arranque de contexto acotado con aislamiento de reglas obligatorias;
  • creación de reglas, retroalimentación, gobernanza de fusión, deshacer y estadísticas de alcance;
  • vinculación de Agentes e inspección de grupos compartidos;
  • escaneo de fuentes, proyección de grafos, vistas previas de importación y planificación de construcción;
  • descubrimiento e importación de MCP externos;
  • vistas previas de extracción de documentos y aceptación de candidatos;
  • búsqueda en el historial de conversación, línea de tiempo, lectura explícita, exportación, eliminación y vista previa de extracción;
  • instalación de proveedores y enriquecimiento de agente host.

Usa MCP tools/list como fuente de verdad para el conjunto exacto de herramientas compatibles con la versión instalada.

Enlaces del proyecto

Hoja de ruta

  • Línea de lanzamiento actual: v0.7.8 consolida la gobernanza canónica, la gobernanza GUI legible para múltiples agentes, la telemetría de uso solo local y la alineación del ciclo de vida/ejecución de Codex. v0.7.7 hace segura la reparación de proveedores desnudos en un hogar de control verificado y vinculado de forma única y alinea las reparaciones instaladas de Codex MCP/Hook con el intérprete actual preservando la identidad del Agente y del grupo compartido. v0.7.6 hace consistente la selección de ejecución de Codex Hook/MCP a través de una única instantánea inmutable, acorta las ventanas de bloqueo de estado de Hook y mantiene honesto el estado de éxito/ fallo del arranque con manejo explícito de desbordamiento obligatorio con fallo cerrado. Los registros de lanzamiento anteriores conservan los cambios detallados de revisión de conflictos v0.7.5, gobernanza canónica v0.7.4, historial compartido v0.7.3 y escritura/lectura y ciclo de vida de Codex v0.7.2. El trabajo de migración solo V2 v0.7.1 y el ciclo de vida de escritorio permanecen documentados como contexto histórico de lanzamiento.
  • Límite de aceptación: la evidencia de Graphify es el resultado enfocado 3 / 3 más la exportación/proyección real del repositorio completo descrita anteriormente. No afirma que la suite de pruebas del repositorio completo de Graphify upstream haya pasado.
  • Siguiente después del lanzamiento: ingestión más amplia de CodeGraph/ Skills, informes de mantenimiento más amigables para el operador y observabilidad adicional de migración. Los registros a largo plazo no se retiran solo por ser antiguos.
  • Más tarde: capacidades de equipo y empresa solo después de demanda validada.

Contribución

Las issues y las solicitudes de extracción son bienvenidas. Lee CONTRIBUTING.md antes de enviar un cambio. Las solicitudes de extracción requieren acuerdo con el CLA.

Licencia

MIT