Files
system-docs/03_MODELO_DATOS/context_manager_v8.md

12 KiB

Context Manager v8 - Sistema de Gestión de Contexto para IA

Versión: 8.1 Fecha: 2026-01-01 Sistema: CAPTAIN CLAUDE - TZZR Generador: ARCHITECT


Visión General

El Context Manager v8 es un sistema completo para la gestión del contexto en sistemas de IA. Proporciona:

  1. Log inmutable con integridad criptográfica (blockchain-style)
  2. Integración con Sistema de Componentes TZZR (players, items, locations, hashtags, flags)
  3. Referencias relacionales a contexto, libros contables y registros de secretaría
  4. Contexto ambiental dinámico embebido en mensajes
  5. Soporte multiagente con owner, players y master_player

Arquitectura de Schemas

┌─────────────────────────────────────────────────────────────┐
│                    CONTEXT MANAGER v8.1                     │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  SCHEMA: log (Inmutable)                            │   │
│  │                                                     │   │
│  │  ├── log.messages      (mensajes)                   │   │
│  │  └── log.message_refs  (referencias a contexto)     │   │
│  │                                                     │   │
│  │  Características:                                   │   │
│  │  ├─ Solo INSERT (UPDATE/DELETE bloqueados)          │   │
│  │  ├─ Cadena SHA-256: prev_hash → hash                │   │
│  │  └─ Integración con Sistema Componentes TZZR        │   │
│  └─────────────────────────────────────────────────────┘   │
│                           │                                 │
│                           ▼                                 │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  SISTEMA DE COMPONENTES TZZR (Referencias externas) │   │
│  │                                                     │   │
│  │  ├── ply  (Players: usuarios, agentes, empresas)    │   │
│  │  ├── hst  (Hash Semantic Tagging: etiquetas)        │   │
│  │  ├── flg  (Flags: jurisdicciones, normativas)       │   │
│  │  ├── itm  (Items: productos, componentes)           │   │
│  │  └── loc  (Locations: ubicaciones físicas)          │   │
│  └─────────────────────────────────────────────────────┘   │
│                           │                                 │
│                           ▼                                 │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  FUENTES DE CONOCIMIENTO (via message_refs)         │   │
│  │                                                     │   │
│  │  ├── context    → log.messages (historial)          │   │
│  │  ├── accountant → libros contables                  │   │
│  │  └── secretary  → registros de secretaría           │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Schema LOG (2 tablas)

1. log.messages - Mensajes

Almacena todos los mensajes del sistema de forma inmutable.

Características:

  • Solo permite INSERT (triggers previenen UPDATE/DELETE)
  • Cadena de integridad: cada mensaje contiene hash del anterior
  • Integración completa con Sistema de Componentes TZZR
  • Soporte multiagente: owner (emisor), players (receptores), master_player (líder)

Schema:

CREATE TABLE log.messages (
    id              BIGSERIAL PRIMARY KEY,
    hash            CHAR(64) UNIQUE NOT NULL,     -- SHA-256 del mensaje
    session_hash    CHAR(64) NOT NULL,            -- Sesión
    thread_hash     CHAR(64),                     -- Hilo (nullable)
    owner_id        CHAR(64) NOT NULL,            -- Emisor (→ ply)
    players_id      CHAR(64)[] DEFAULT '{}',      -- Receptores (→ ply)
    master_player   CHAR(64),                     -- Líder/coordinador (→ ply)
    role            TEXT,                         -- Rol del emisor
    content         TEXT NOT NULL,                -- Contenido del mensaje
    attachments     JSONB DEFAULT '{}',           -- Adjuntos
    prev_hash       CHAR(64),                     -- Hash mensaje anterior
    hashtags        CHAR(64)[] DEFAULT '{}',      -- Etiquetas (→ hst)
    flag_id         CHAR(64),                     -- Jurisdicción (→ flg)
    master_item_id  CHAR(64),                     -- Item principal (→ itm)
    item_id         CHAR(64)[] DEFAULT '{}',      -- Items relacionados (→ itm)
    loc_id          CHAR(64),                     -- Ubicación (→ loc)
    ambient         JSONB,                        -- Contexto ambiental
    created_at      TIMESTAMPTZ DEFAULT NOW()
);

Índices:

  • session_hash - Mensajes de una sesión
  • thread_hash - Mensajes de un hilo
  • owner_id - Mensajes enviados por
  • master_player - Mensajes con líder
  • prev_hash - Cadena de integridad
  • created_at - Orden cronológico
  • hashtags (GIN) - Búsqueda por etiquetas
  • players_id (GIN) - Búsqueda por receptores
  • item_id (GIN) - Búsqueda por items
  • flag_id - Filtrar por jurisdicción
  • loc_id - Filtrar por ubicación

2. log.message_refs - Referencias

Relaciona cada mensaje con su contexto y fuentes de conocimiento.

Características:

  • Tabla relacional para evitar arrays largos de hashes
  • Tres tipos de referencias: context, accountant, secretary
  • Posición para ordenar el contexto
  • Inmutable como log.messages

Schema:

CREATE TABLE log.message_refs (
    id              BIGSERIAL PRIMARY KEY,
    message_hash    CHAR(64) NOT NULL,            -- Mensaje que se envía
    ref_hash        CHAR(64) NOT NULL,            -- Hash de la referencia
    ref_type        log.ref_type NOT NULL,        -- context|accountant|secretary
    position        INT NOT NULL,                 -- Orden de la referencia
    thread_hash     CHAR(64),                     -- Hilo (nullable)
    UNIQUE(message_hash, ref_hash)
);

Tipos de referencia:

Tipo Descripción
context Mensajes anteriores incluidos como contexto
accountant Registros de libros contables (conocimiento financiero)
secretary Registros de secretaría (conocimiento general)

Integración con Sistema de Componentes TZZR

El Context Manager referencia las tablas del Sistema de Componentes:

Campo log.messages Tabla TZZR Descripción
owner_id ply Emisor del mensaje (usuario o agente)
players_id[] ply Receptores del mensaje
master_player ply Coordinador en sistemas multiagente
hashtags[] hst Etiquetas semánticas del mensaje
flag_id flg Jurisdicción o normativa aplicable
master_item_id itm Item principal relacionado
item_id[] itm Items adicionales relacionados
loc_id loc Ubicación física del contexto

Tablas del Sistema de Componentes

PLY (Players)
├── ply  - Sistema (empresas, entidades oficiales)
├── plu  - Usuario (contactos personales)
└── plx  - Compartidos

HST (Hash Semantic Tagging)
├── hst  - Tags del sistema (658)
├── spe  - Especificaciones técnicas (145)
├── vsn  - Visiones/escenas (84)
├── vue  - Valores humanos (21)
└── hsu  - Tags de usuario

FLG (Flags/Jurisdicciones)
├── flg  - Sistema (65 países/normativas)
└── flu  - Usuario

ITM (Items)
├── itm  - Sistema
├── itu  - Usuario
└── itx  - Compartidos

LOC (Locations)
├── loc  - Sistema
├── lou  - Usuario
└── lox  - Compartidos

Cadena de Integridad

Cada mensaje incluye el hash del anterior, formando una cadena verificable:

msg1.hash = SHA256(msg1_data)
msg2.prev_hash = msg1.hash
msg2.hash = SHA256(msg2_data)
msg3.prev_hash = msg2.hash
...

Primer mensaje de sesión: prev_hash = NULL

Función de hash:

CREATE FUNCTION log.sha256(data TEXT) RETURNS CHAR(64) AS $$
BEGIN
    RETURN encode(digest(data, 'sha256'), 'hex');
END;
$$ LANGUAGE plpgsql IMMUTABLE;

Protección de Inmutabilidad

Triggers que previenen modificación:

-- Bloquear UPDATE
CREATE TRIGGER protect_messages_update
BEFORE UPDATE ON log.messages
FOR EACH ROW EXECUTE FUNCTION log.prevent_update();

-- Bloquear DELETE
CREATE TRIGGER protect_messages_delete
BEFORE DELETE ON log.messages
FOR EACH ROW EXECUTE FUNCTION log.prevent_delete();

-- Igual para message_refs

Contexto Ambiental (ambient)

Campo JSONB para capturar estado del sistema en el momento del mensaje:

{
    "timezone": "Europe/Madrid",
    "locale": "es-ES",
    "working_directory": "/home/architect/project",
    "git_branch": "main",
    "active_services": ["gitea", "postgresql"],
    "server": "ARCHITECT",
    "timestamp_utc": "2026-01-01T12:00:00Z"
}

Solo se incluye cuando es relevante (nullable en la mayoría de mensajes).


Despliegue

Servidores activos:

Servidor IP Base de Datos Estado
ARCHITECT 69.62.126.110 architect Activo
DECK 72.62.1.113 tzzr Activo
CORP 92.112.181.188 tzzr Activo

Extensiones requeridas:

  • pgcrypto - Para función SHA-256
  • pgvector - Para embeddings (opcional, instalado)

Comando de aplicación:

sudo -u postgres psql -d [database] -c "$(curl -s http://localhost:3000/admin/context-manager/raw/branch/main/schemas/04_log.sql)"

Flujo de Trabajo

1. Insertar mensaje

INSERT INTO log.messages (
    hash, session_hash, owner_id, players_id,
    content, prev_hash, hashtags, created_at
) VALUES (
    log.sha256(...), 'session_abc...', 'owner_hash...',
    ARRAY['player1_hash...', 'player2_hash...'],
    'Contenido del mensaje', 'prev_msg_hash...',
    ARRAY['tag1_hash...'], NOW()
);

2. Añadir referencias de contexto

INSERT INTO log.message_refs (
    message_hash, ref_hash, ref_type, position, thread_hash
) VALUES
    ('msg_hash...', 'context_msg_1...', 'context', 1, 'thread...'),
    ('msg_hash...', 'context_msg_2...', 'context', 2, 'thread...'),
    ('msg_hash...', 'accountant_record...', 'accountant', 3, 'thread...');

3. Consultar mensajes con contexto

SELECT
    m.content,
    m.owner_id,
    array_agg(r.ref_hash ORDER BY r.position) as context_refs
FROM log.messages m
LEFT JOIN log.message_refs r ON m.hash = r.message_hash
WHERE m.session_hash = 'session_abc...'
GROUP BY m.id, m.content, m.owner_id
ORDER BY m.created_at;

Ubicación de Documentación

Ubicación Ruta
Gitea http://localhost:3000/admin/context-manager
R2 s3://architect/system/context-manager/
Skynet v8 s3://architect/system/skynet v8/03_MODELO_DATOS/

Historial de Cambios

Versión Fecha Cambios
8.0 2025-12-30 Versión inicial con 9 tablas
8.1 2026-01-01 Simplificación a 2 tablas (log.messages, log.message_refs). Integración con Sistema de Componentes TZZR. Nuevos campos: owner_id, players_id, master_player, flag_id, master_item_id, item_id, loc_id

Documento generado por: ARCHITECT Timestamp: 2026-01-01 Versión: Context Manager v8.1