- Añadir tabla correcta: ARCHITECT=Desarrollo, DECK=Usuario, CORP=Corporativo - Eliminar ejemplos inventados (architect_persona) - Usar ejemplos genéricos (system_rules, dev_config)
6.5 KiB
6.5 KiB
CTO Schema v2.0 - Context Manager
Resumen
El schema cto gestiona el contexto de los agentes TZZR mediante tres tablas principales:
| Tabla | Propósito |
|---|---|
cto.blocks |
Bloques de contexto estático (personas, reglas, conocimiento) |
cto.memory |
Memoria a largo plazo con embeddings |
cto.algorithms |
Configuración de algoritmos de selección/scoring |
Tablas
cto.blocks (23 columnas)
Almacena bloques de contexto que pueden inyectarse en las conversaciones.
| Columna | Tipo | Descripción |
|---|---|---|
| id | BIGSERIAL | PK |
| hash | CHAR(64) | SHA-256 del contenido (UNIQUE) |
| code | VARCHAR(50) | Identificador legible único (ej: system_rules, dev_config) |
| name | VARCHAR(200) | Nombre descriptivo |
| session_hash | CHAR(64) | Hash de sesión (si aplica) |
| owner_id | CHAR(64) | Propietario del bloque |
| block_type | VARCHAR(50) | Tipo legacy |
| category | VARCHAR(50) | Categoría: persona, rules, capabilities, instructions, knowledge |
| content | TEXT | Contenido del bloque |
| embedding | vector(1536) | Vector para búsqueda semántica |
| priority | INT | Orden de inclusión (mayor = primero) |
| scope | VARCHAR(20) | Ámbito: global, server, agent, session |
| server_code | VARCHAR(20) | Si scope=server: ARCHITECT, DECK, CORP |
| agent_code | VARCHAR(50) | Si scope=agent: código del agente |
| token_count | INT | Tokens estimados |
| status | VARCHAR(20) | active, inactive, deprecated |
| created_at | TIMESTAMPTZ | Fecha creación |
| updated_at | TIMESTAMPTZ | Última modificación |
Scopes:
global: Aplica a todos los agentes en todos los servidoresserver: Aplica solo a agentes en un servidor específicoagent: Aplica solo a un agente específicosession: Aplica solo a una sesión
cto.memory (26 columnas)
Memoria a largo plazo con scoring basado en importancia, recencia y relevancia semántica.
| Columna | Tipo | Descripción |
|---|---|---|
| id | BIGSERIAL | PK |
| hash | CHAR(64) | SHA-256 único |
| session_hash | CHAR(64) | Sesión origen |
| block_hash | CHAR(64) | FK a blocks |
| owner_id | CHAR(64) | Propietario |
| type | VARCHAR(20) | preference, decision, fact, entity, temporal |
| content | TEXT | Contenido de la memoria |
| summary | VARCHAR(500) | Resumen corto |
| importance | FLOAT | 0-1 (mayor = más importante) |
| confidence | FLOAT | 0-1 (certeza) |
| embedding | vector(1536) | Vector para similitud |
| embedding_model | VARCHAR(50) | Modelo usado |
| access_count_v2 | INT | Veces accedida |
| last_access | TIMESTAMPTZ | Último acceso |
| source_hash | CHAR(64) | Memoria origen (si derivada) |
| expires_at | TIMESTAMPTZ | Expiración (para temporales) |
| status | VARCHAR(20) | active, superseded, expired, deleted |
| superseded_by | BIGINT | ID de memoria que la reemplaza |
| related_to | BIGINT[] | IDs de memorias relacionadas |
| metadata | JSONB | Metadatos adicionales |
| owner_type | VARCHAR(20) | user, agent, system |
| created_at | TIMESTAMPTZ | Fecha creación |
| updated_at | TIMESTAMPTZ | Última modificación |
Tipos de memoria:
| Tipo | Decay Rate | Descripción |
|---|---|---|
| preference | 0.01 | Preferencias del usuario (decae muy lento) |
| decision | 0.05 | Decisiones tomadas |
| fact | 0.10 | Hechos aprendidos |
| entity | 0.05 | Entidades mencionadas |
| temporal | 0.50 | Info temporal (decae rápido) |
cto.algorithms (14 columnas)
Configuración de algoritmos de scoring, selección y extracción.
| Columna | Tipo | Descripción |
|---|---|---|
| id | SERIAL | PK |
| code | VARCHAR(50) | Código único |
| name | VARCHAR(100) | Nombre |
| version | VARCHAR(20) | Versión |
| config | JSONB | Configuración completa |
| enabled | BOOLEAN | Legacy |
| status | VARCHAR(20) | draft, active, experiment, deprecated |
| parent_id | INT | FK a algoritmo padre (versionado) |
| metrics | JSONB | Métricas de rendimiento |
| activated_at | TIMESTAMPTZ | Fecha activación |
| deprecated_at | TIMESTAMPTZ | Fecha deprecación |
| created_at | TIMESTAMPTZ | Fecha creación |
| updated_at | TIMESTAMPTZ | Última modificación |
Configuración del Algoritmo v2
{
"version": "2.0.0",
"extraction": {
"enabled": true,
"async": true,
"batch_size": 10
},
"scoring": {
"weights": {
"recency": 0.20,
"importance": 0.40,
"relevance": 0.30,
"frequency": 0.10
},
"decay_rates": {
"preference": 0.01,
"decision": 0.05,
"fact": 0.10,
"entity": 0.05,
"temporal": 0.50
}
},
"selection": {
"strategy": "priority",
"token_budget": 8000,
"priority_order": ["system", "core", "working", "retrieved"]
},
"compression": {
"strategy": "progressive",
"keep_first": 3,
"keep_last": 10
},
"embedding": {
"provider": "openai",
"model": "text-embedding-3-small",
"dimension": 1536
}
}
Funciones
cto.calculate_memory_score(memory_id, query_embedding, current_time)
Calcula score combinado de una memoria:
score = 0.20 * recency + 0.40 * importance + 0.30 * relevance + 0.10 * frequency
Donde:
- recency: Decae exponencialmente según tipo y tiempo desde último acceso
- importance: Valor 0-1 asignado al crear la memoria
- relevance: Similitud coseno con query_embedding
- frequency: Basado en access_count (normalizado 0-1)
cto.search_memories(query_embedding, owner_id, limit, min_similarity)
Busca memorias por similitud semántica:
SELECT * FROM cto.search_memories(
'[0.1, 0.2, ...]'::vector(1536), -- embedding de la query
'owner_hash', -- propietario
20, -- límite
0.3 -- similitud mínima
);
cto.get_active_blocks(scope, server_code, agent_code)
Obtiene bloques activos filtrados por scope:
-- Bloques globales
SELECT * FROM cto.get_active_blocks('global');
-- Bloques para un servidor específico
SELECT * FROM cto.get_active_blocks('server', 'DECK');
-- Bloques para un agente específico
SELECT * FROM cto.get_active_blocks('agent', NULL, 'mi_agente');
Servidores TZZR
| Servidor | IP | Propósito |
|---|---|---|
| ARCHITECT | 69.62.126.110 | Desarrollo |
| DECK | 72.62.1.113 | Usuario |
| CORP | 92.112.181.188 | Corporativo |
Schema CTO v2.0 desplegado en los 3 servidores.
Verificar instalación
\d cto.blocks
\d cto.memory
\d cto.algorithms
SELECT code, version, status FROM cto.algorithms;