Update Context Manager v8.1 - new log schema with TZZR components integration
This commit is contained in:
346
03_MODELO_DATOS/context_manager_v8.md
Normal file
346
03_MODELO_DATOS/context_manager_v8.md
Normal file
@@ -0,0 +1,346 @@
|
|||||||
|
# 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:**
|
||||||
|
```sql
|
||||||
|
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:**
|
||||||
|
```sql
|
||||||
|
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:**
|
||||||
|
```sql
|
||||||
|
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:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- 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:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"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:**
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
|
||||||
|
```sql
|
||||||
|
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
|
||||||
|
|
||||||
|
```sql
|
||||||
|
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
|
||||||
|
|
||||||
|
```sql
|
||||||
|
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
|
||||||
Reference in New Issue
Block a user