Konshus
Read in English
Share

Especificación pilar · Borrador v0.1

El Estándar de Portabilidad de Memoria de IA

Un esquema JSON neutral respecto a proveedores para la memoria portátil de IA. Átomos, artefactos, procedencia e invariantes de privacidad: para que la versión de ti que la IA conoce viaje contigo para siempre.

The Konshus TeamPublicado el 13 de julio de 2026Lectura de 18 min
Tres orbes brillantes de proveedores de IA conectados mediante cables dorados a un único vault portátil: una metáfora visual de la portabilidad de memoria entre proveedores.

Por qué

Por qué necesitamos un estándar

Todos los principales proveedores de IA ofrecen hoy alguna forma de memoria. Ninguno de ellos la exporta en un formato que otro proveedor pueda importar. Un usuario que ha pasado dieciocho meses enseñándole a ChatGPT a escribir con su voz no puede transferir esa voz a Claude, ni recuperarla en ChatGPT después de que un cambio de modelo borre la mitad. Esto no es una limitación técnica. Es comercial, y no se solucionará sola.

Un estándar de portabilidad de memoria convierte la memoria propiedad del proveedor en memoria propiedad del usuario. Ofrece a los vaults complementarios de terceros (Konshus es uno; cualquiera puede crear otro) un destino estable donde escribir y leer. Permite a los auditores independientes verificar qué almacenó realmente un proveedor. Y, lo más importante, le da a cada usuario un único archivo portátil que puede mover, versionar, cifrar, eliminar o llevarse a la tumba.

Principios

Principios de diseño

Cinco restricciones moldearon cada campo de este borrador. Cada una tiene un corolario de "esto no va aquí": un caso que el estándar rechaza deliberadamente.

  1. Prioridad a la legibilidad humana. El texto de cada átomo debe ser una oración corta en lenguaje natural que un ser humano pueda revisar en cinco segundos. Si es un vector embedding o un token opaco, no va en este archivo.
  2. Enlazado a la fuente. Cada átomo apunta hacia los artefactos de los que fue extraído. Nada de hechos basados en un "créeme".
  3. Con consciencia temporal. Cada átomo incluye valid_from y, de forma opcional, valid_to. Los hechos antiguos no se reemplazan en silencio: caducan.
  4. Etiquetado por sensibilidad. Cada átomo está etiquetado como public, private, o una de tres categorías reguladas. Quienes importan datos pueden respetar la etiqueta; los usuarios pueden filtrar por ella antes de compartir.
  5. Fácil de bifurcar. Los proveedores pueden añadir campos bajo el espacio de nombres x-provider sin romper el validador principal.

Modelo

El modelo de datos

Tres objetos: Subject, Atoms, Artifacts. Un Subject posee Atoms. Los Atoms tienen una procedencia que apunta a Artifacts. Los Artifacts son el material de origen en bruto (un chat, un documento, una entrada de diario, una nota de voz). Todo lo demás es complementario.

┌─ Subject ────────────────┐
│ subject_id, display │
└──────────┬───────────────┘
│ posee
┌──────────▼───────────────┐
│ Atoms (hechos, prefs, │
│ relaciones, metas) │
│ ─ text │
│ ─ confidence │
│ ─ sensitivity │
│ ─ provenance ──────────┐│
└──────────────────────────┘│
│
┌───────────────────────────▼┐
│ Artifacts (origen bruto) │
│ ─ chat, documento, diario │
│ ─ voz, mensaje, email │
└────────────────────────────┘
Figura. El modelo de tres objetos. Subject → Atoms → Artifacts, conectados por un registro de Provenance.

Esquema

El esquema JSON completo

Borrador v0.1. Compatible con JSON Schema 2020-12. Cópialo con total libertad.

ai-memory-portability.v0.1.json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://konshus.ai/schemas/ai-memory-portability/v0.1.json",
  "title": "AI Memory Portability Standard",
  "version": "0.1.0",
  "type": "object",
  "required": ["export_version", "exported_at", "subject", "atoms", "artifacts"],
  "properties": {
    "export_version": { "const": "0.1.0" },
    "exported_at":    { "type": "string", "format": "date-time" },
    "source_provider":{ "type": "string", "examples": ["openai", "anthropic", "google", "konshus"] },
    "subject": {
      "type": "object",
      "required": ["subject_id"],
      "properties": {
        "subject_id":    { "type": "string", "description": "Opaco, controlado por el usuario." },
        "display_name":  { "type": "string" },
        "locale":        { "type": "string", "examples": ["en-US"] }
      }
    },
    "atoms": {
      "type": "array",
      "items": { "$ref": "#/$defs/Atom" }
    },
    "artifacts": {
      "type": "array",
      "items": { "$ref": "#/$defs/Artifact" }
    }
  },
  "$defs": {
    "Atom": {
      "type": "object",
      "required": ["atom_id", "kind", "text", "created_at", "provenance"],
      "properties": {
        "atom_id":     { "type": "string" },
        "kind":        { "enum": ["fact", "preference", "relationship", "belief", "goal", "skill"] },
        "text":        { "type": "string", "maxLength": 500 },
        "confidence":  { "type": "number", "minimum": 0, "maximum": 1 },
        "sensitivity": { "enum": ["public", "private", "medical", "financial", "legal"] },
        "valid_from":  { "type": "string", "format": "date-time" },
        "valid_to":    { "type": ["string", "null"], "format": "date-time" },
        "created_at":  { "type": "string", "format": "date-time" },
        "provenance":  { "$ref": "#/$defs/Provenance" }
      }
    },
    "Artifact": {
      "type": "object",
      "required": ["artifact_id", "kind", "captured_at"],
      "properties": {
        "artifact_id": { "type": "string" },
        "kind":        { "enum": ["chat", "document", "journal", "voice", "message", "email", "calendar"] },
        "title":       { "type": "string" },
        "body":        { "type": "string" },
        "media_url":   { "type": "string", "format": "uri" },
        "captured_at": { "type": "string", "format": "date-time" },
        "source":      { "type": "string", "examples": ["chatgpt-export", "claude-projects", "manual"] },
        "atom_ids":    { "type": "array", "items": { "type": "string" } },
        "private":     { "type": "boolean", "default": false }
      }
    },
    "Provenance": {
      "type": "object",
      "required": ["derivation"],
      "properties": {
        "derivation":    { "enum": ["stated", "inferred", "observed"] },
        "artifact_ids":  { "type": "array", "items": { "type": "string" } },
        "extractor":     { "type": "string", "examples": ["gpt-5", "claude-opus-4", "human"] },
        "human_reviewed":{ "type": "boolean", "default": false }
      }
    }
  }
}

Ejemplo

Un ejemplo práctico

Una exportación mínima y válida para un usuario hipotético con dos átomos y un artefacto. Las exportaciones reales alcanzan miles de átomos; la estructura no cambia.

example.export.json
{
  "export_version": "0.1.0",
  "exported_at": "2026-07-13T14:22:00Z",
  "source_provider": "konshus",
  "subject": {
    "subject_id": "user_9f4e...",
    "display_name": "J. Miller",
    "locale": "en-US"
  },
  "atoms": [
    {
      "atom_id": "atom_001",
      "kind": "preference",
      "text": "Prefiere comentarios directos y sin rodeos por escrito; suaviza las cosas en persona.",
      "confidence": 0.87,
      "sensitivity": "public",
      "valid_from": "2025-11-04T00:00:00Z",
      "created_at": "2026-01-12T18:44:00Z",
      "provenance": {
        "derivation": "inferred",
        "artifact_ids": ["art_101", "art_144"],
        "extractor": "claude-opus-4",
        "human_reviewed": true
      }
    },
    {
      "atom_id": "atom_002",
      "kind": "relationship",
      "text": "Cofundador de una startup de salud tecnológica; su colaborador principal es R. Kim.",
      "confidence": 0.98,
      "sensitivity": "public",
      "created_at": "2025-09-01T12:00:00Z",
      "provenance": { "derivation": "stated" }
    }
  ],
  "artifacts": [
    {
      "artifact_id": "art_101",
      "kind": "chat",
      "title": "Preparación de la junta del Q4",
      "body": "…toda la transcripción de la conversación, sin cambios…",
      "captured_at": "2025-11-04T20:11:00Z",
      "source": "chatgpt-export",
      "atom_ids": ["atom_001"],
      "private": false
    }
  ]
}

Procedencia

Reglas de procedencia

La procedencia es la diferencia entre un estándar de memoria portátil y un estándar de rumores portátil. Cada átomo debe declarar cómo llegó a existir:

  • stated — el sujeto afirmó esto directamente. Máxima confianza. No requiere ningún artifact_ids (aunque se recomienda uno).
  • inferred — un modelo dedujo esto a partir de uno o más artefactos. artifact_ids y extractor son obligatorios.
  • observed — capturado de forma pasiva a partir del comportamiento (p. ej., patrones de calendario, cadencia de voz). Requiere artifact_ids; debe ser revocable.

Un importador que reciba un átomo con la derivación inferred y sin artifact_ids debería rechazar toda la exportación. Esto es deliberado: evita que los proveedores blanqueen conclusiones sin fuente en un formato portátil.

Privacidad

Invariantes de privacidad

Cuatro invariantes que el estándar aplica a nivel de esquema para que no se pierdan en el camino:

  1. La sensibilidad viaja. Un átomo marcado como medical en el origen debe permanecer como medical en cada copia derivada.
  2. Lo privado es privado. Los artefactos con private: true quedan excluidos de cualquier corpus de entrenamiento de IA, independientemente de la configuración predeterminada del importador.
  3. Eliminación en cascada. Eliminar un artefacto debe provocar la reevaluación de cada átomo cuya procedencia dependa de él. Los átomos que caigan por debajo del umbral mínimo de fuentes se eliminan o se vuelven a marcar como sin fuente.
  4. El sujeto controla el ID. subject_id es opaco y lo controla el usuario. Los proveedores no pueden vincular sus ID de usuario internos al formato portátil.

Adopción

Ruta de adopción

Tres formas en que este estándar existe en el mundo, ordenadas por impacto:

  1. Exportación nativa del proveedor. Un proveedor añade un botón de "Exportar memoria portátil" que entrega exactamente este formato. El mejor de los casos; el menos probable a corto plazo.
  2. Ingesta mediante sidecar. Un vault externo (Konshus es uno de ellos) acepta la exportación nativa de cada proveedor, la normaliza a este esquema y la vuelve a emitir. Ya funciona hoy.
  3. Adaptadores comunitarios. Parsers de código abierto que toman un ZIP sin procesar de ChatGPT o un volcado de Claude Projects y generan una exportación portátil válida. Cualquiera puede crear uno; iremos enlazando abajo a adaptadores bien mantenidos a medida que aparezcan.

Referencia

Implementación de referencia

Un validador en TypeScript de veinte líneas que usa ajv. Suficiente para rechazar exportaciones mal formadas y entregarte una carga útil tipada.

importPortableMemory.ts
// Un validador mínimo usando ajv (Node/TS/edge).
import Ajv from "ajv";
import addFormats from "ajv-formats";
import schema from "./ai-memory-portability.v0.1.json";

const ajv = new Ajv({ allErrors: true, strict: false });
addFormats(ajv);
const validate = ajv.compile(schema);

export function importPortableMemory(payload: unknown) {
  if (!validate(payload)) {
    throw new Error("Invalid export: " + ajv.errorsText(validate.errors));
  }
  // A partir de aquí eres dueño de los átomos + artefactos.
  return payload as PortableMemoryExport;
}

El propio vault de Konshus importa cada proveedor compatible a una estructura normalizada que se mapea 1:1 con este esquema. Si quieres ahorrarte construir tu propio flujo de ingesta, conecta tus fuentes y úsanos como sidecar de referencia.

FAQ

Preguntas frecuentes

Preguntas frecuentes

Lecturas recomendadas

El ritual del nombre

Ahora dale un nombre al tuyo.

Cada Konshus comienza con un nombre. Elige uno y mira cómo cobra vida la voz de tu IA, preservada a través de cada cambio de modelo, exportación y reinicio.

Ponle nombre a tu Konshus