ML Engine Updates: - Updated BTCUSD with Polygon API data (2024-2025): 215,699 new records - Re-trained all ML models: Attention (R²: 0.223), Base, Metamodel (87.3% confidence) - Backtest results: +176.71R profit with aggressive_filter strategy Documentation Consolidation: - Created docs/99-analisis/_MAP.md index with 13 new analysis documents - Consolidated inventories: removed duplicates from orchestration/inventarios/ - Updated ML_INVENTORY.yml with BTCUSD metrics and training results - Added execution reports: FASE11-BTCUSD, correction issues, alignment validation Architecture & Integration: - Updated all module documentation with NEXUS v3.4 frontmatter - Fixed _MAP.md indexes across all folders - Updated orchestration plans and traces Files: 229 changed, 5064 insertions(+), 1872 deletions(-) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
298 lines
11 KiB
Markdown
298 lines
11 KiB
Markdown
---
|
|
id: "RF-LLM-006"
|
|
title: "Gestión de Contexto y Memoria"
|
|
type: "Requirement"
|
|
status: "Done"
|
|
priority: "Alta"
|
|
epic: "OQI-007"
|
|
project: "trading-platform"
|
|
version: "1.0.0"
|
|
created_date: "2025-12-05"
|
|
updated_date: "2026-01-04"
|
|
---
|
|
|
|
# RF-LLM-006: Gestión de Contexto y Memoria
|
|
|
|
**Épica:** OQI-007 - LLM Strategy Agent
|
|
**Versión:** 1.0
|
|
**Fecha:** 2025-12-05
|
|
**Estado:** Planificado
|
|
**Prioridad:** P0 - Crítico
|
|
|
|
---
|
|
|
|
## Descripción
|
|
|
|
El agente LLM debe mantener contexto coherente durante las conversaciones, recordar información relevante del usuario entre sesiones, y enriquecer automáticamente cada interacción con datos de mercado y perfil del usuario.
|
|
|
|
---
|
|
|
|
## Requisitos Funcionales
|
|
|
|
### RF-LLM-006.1: Contexto de Conversación
|
|
- El sistema debe mantener historial de mensajes de la conversación actual
|
|
- El sistema debe limitar contexto a N mensajes para optimizar tokens
|
|
- El sistema debe resumir conversaciones largas automáticamente
|
|
- El sistema debe preservar información crítica al resumir
|
|
- El sistema debe detectar cambio de tema y ajustar contexto
|
|
|
|
### RF-LLM-006.2: Memoria de Usuario
|
|
- El sistema debe recordar preferencias del usuario
|
|
- El sistema debe recordar símbolos de interés frecuente
|
|
- El sistema debe recordar estilo de comunicación preferido
|
|
- El sistema debe recordar preguntas y respuestas relevantes pasadas
|
|
- El sistema debe actualizar memoria basado en interacciones
|
|
|
|
### RF-LLM-006.3: Enriquecimiento Automático
|
|
- El sistema debe inyectar datos de mercado relevantes
|
|
- El sistema debe incluir posiciones actuales del usuario
|
|
- El sistema debe incluir alertas activas relacionadas
|
|
- El sistema debe incluir progreso educativo si es relevante
|
|
- El sistema debe incluir señales ML si el usuario tiene acceso
|
|
|
|
### RF-LLM-006.4: Contexto de Sistema
|
|
- El agente debe conocer fecha y hora actual
|
|
- El agente debe conocer estado del mercado (abierto/cerrado)
|
|
- El agente debe conocer eventos económicos próximos
|
|
- El agente debe conocer configuración regional del usuario
|
|
|
|
### RF-LLM-006.5: Gestión de Tokens
|
|
- El sistema debe monitorear uso de tokens por conversación
|
|
- El sistema debe comprimir contexto cuando se acerca al límite
|
|
- El sistema debe priorizar información más reciente/relevante
|
|
- El sistema debe estimar tokens antes de llamar al LLM
|
|
|
|
---
|
|
|
|
## Criterios de Aceptación
|
|
|
|
```gherkin
|
|
Feature: Gestión de Contexto
|
|
|
|
Scenario: Mantener contexto en conversación
|
|
Given inicié conversación preguntando sobre AAPL
|
|
And el agente analizó AAPL
|
|
When pregunto "¿Y qué opinas del volumen?"
|
|
Then el agente entiende que me refiero a AAPL
|
|
And no necesito repetir el símbolo
|
|
|
|
Scenario: Recordar preferencias entre sesiones
|
|
Given ayer configuré preferencia "siempre mostrar disclaimer"
|
|
And cerré la aplicación
|
|
When inicio nueva conversación hoy
|
|
Then el agente recuerda mi preferencia
|
|
And incluye disclaimers automáticamente
|
|
|
|
Scenario: Enriquecimiento automático de contexto
|
|
Given tengo posición abierta en TSLA
|
|
And hay alerta activa para TSLA a $240
|
|
When pregunto "¿Cómo va mi inversión?"
|
|
Then el agente automáticamente incluye info de TSLA
|
|
And menciona la alerta activa
|
|
And muestra P&L actual
|
|
|
|
Scenario: Resumen de conversación larga
|
|
Given tenemos 30 mensajes en la conversación
|
|
And se acerca el límite de tokens
|
|
When envío nuevo mensaje
|
|
Then el sistema resume mensajes antiguos
|
|
And preserva puntos clave de la conversación
|
|
And el agente responde coherentemente
|
|
|
|
Scenario: Contexto de mercado automático
|
|
Given el mercado US está cerrado (es sábado)
|
|
When pregunto "¿Debería comprar AAPL ahora?"
|
|
Then el agente indica que el mercado está cerrado
|
|
And sugiere usar paper trading o esperar apertura
|
|
```
|
|
|
|
---
|
|
|
|
## Reglas de Negocio
|
|
|
|
| Regla | Descripción |
|
|
|-------|-------------|
|
|
| RN-001 | Máximo 20 mensajes en contexto inmediato |
|
|
| RN-002 | Resumir automáticamente después de 15 mensajes |
|
|
| RN-003 | Memoria de usuario persiste máximo 90 días |
|
|
| RN-004 | No recordar información financiera sensible |
|
|
| RN-005 | Límite de tokens por request: 8000 input, 2000 output |
|
|
| RN-006 | Contexto de mercado actualizado cada 60 segundos |
|
|
|
|
---
|
|
|
|
## Estructura de Contexto
|
|
|
|
```yaml
|
|
context:
|
|
# Información del usuario
|
|
user:
|
|
id: "user-123"
|
|
name: "Carlos"
|
|
plan: "premium"
|
|
risk_profile: "moderate"
|
|
experience: "intermediate"
|
|
language: "es"
|
|
timezone: "America/Mexico_City"
|
|
|
|
# Preferencias recordadas
|
|
preferences:
|
|
show_disclaimers: true
|
|
preferred_timeframe: "4h"
|
|
favorite_indicators: ["RSI", "MACD"]
|
|
notification_style: "detailed"
|
|
|
|
# Contexto de mercado (auto-inyectado)
|
|
market:
|
|
status: "open"
|
|
current_time: "2025-12-05T10:30:00-06:00"
|
|
next_close: "2025-12-05T15:00:00-05:00"
|
|
upcoming_events:
|
|
- event: "Fed Minutes"
|
|
date: "2025-12-06"
|
|
impact: "high"
|
|
|
|
# Portfolio del usuario (si es relevante)
|
|
portfolio:
|
|
positions:
|
|
- symbol: "AAPL"
|
|
quantity: 50
|
|
avg_price: 175.00
|
|
current_pnl: 525.00
|
|
- symbol: "TSLA"
|
|
quantity: 20
|
|
avg_price: 250.00
|
|
current_pnl: -100.00
|
|
alerts:
|
|
- symbol: "TSLA"
|
|
condition: "<="
|
|
price: 240
|
|
|
|
# Historial de conversación
|
|
conversation:
|
|
id: "conv-456"
|
|
started_at: "2025-12-05T10:00:00"
|
|
messages_count: 8
|
|
summary: null # Se genera cuando supera 15 mensajes
|
|
recent_topics: ["AAPL analysis", "RSI interpretation"]
|
|
|
|
# Señales ML (si tiene acceso)
|
|
ml_signals:
|
|
AAPL:
|
|
prediction: "bullish"
|
|
confidence: 0.72
|
|
updated_at: "2025-12-05T10:25:00"
|
|
```
|
|
|
|
---
|
|
|
|
## Proceso de Gestión de Contexto
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ 1. RECIBIR MENSAJE DEL USUARIO │
|
|
│ "¿Cómo va mi posición de Tesla?" │
|
|
└──────────────────────────┬──────────────────────────────────┘
|
|
↓
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ 2. CONSTRUIR CONTEXTO │
|
|
│ a) Cargar perfil de usuario │
|
|
│ b) Cargar preferencias de memoria │
|
|
│ c) Cargar historial de conversación │
|
|
│ d) Identificar símbolos mencionados (TSLA) │
|
|
│ e) Cargar datos de mercado relevantes │
|
|
│ f) Cargar posiciones del portfolio │
|
|
│ g) Cargar alertas activas │
|
|
│ h) Cargar señales ML (si tiene acceso) │
|
|
└──────────────────────────┬──────────────────────────────────┘
|
|
↓
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ 3. VERIFICAR TOKENS │
|
|
│ - Estimar tokens del contexto actual │
|
|
│ - Si > 6000 tokens → comprimir/resumir │
|
|
│ - Priorizar: mensaje actual > historial reciente > datos │
|
|
└──────────────────────────┬──────────────────────────────────┘
|
|
↓
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ 4. GENERAR SYSTEM PROMPT │
|
|
│ - Incluir rol del agente │
|
|
│ - Incluir contexto comprimido │
|
|
│ - Incluir instrucciones específicas │
|
|
└──────────────────────────┬──────────────────────────────────┘
|
|
↓
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ 5. LLAMAR AL LLM │
|
|
│ - Enviar system prompt + messages │
|
|
│ - Procesar respuesta │
|
|
└──────────────────────────┬──────────────────────────────────┘
|
|
↓
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ 6. ACTUALIZAR MEMORIA │
|
|
│ - Guardar mensaje en historial │
|
|
│ - Actualizar temas recientes │
|
|
│ - Detectar preferencias nuevas │
|
|
│ - Actualizar símbolos de interés │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Algoritmo de Compresión de Contexto
|
|
|
|
```markdown
|
|
## Prioridad de Información (de mayor a menor)
|
|
|
|
1. **Crítico** (nunca comprimir)
|
|
- Mensaje actual del usuario
|
|
- Últimos 3 mensajes de contexto
|
|
- Posiciones abiertas mencionadas
|
|
|
|
2. **Alto** (comprimir si es necesario)
|
|
- Historial de conversación (resumir)
|
|
- Datos de mercado (reducir a esenciales)
|
|
- Preferencias de usuario
|
|
|
|
3. **Medio** (comprimir agresivamente)
|
|
- Alertas no relacionadas al tema
|
|
- Progreso educativo
|
|
- Eventos económicos lejanos
|
|
|
|
4. **Bajo** (eliminar si falta espacio)
|
|
- Memoria de conversaciones antiguas
|
|
- Símbolos no mencionados
|
|
- Detalles de portfolio no relevantes
|
|
```
|
|
|
|
---
|
|
|
|
## Dependencias
|
|
|
|
### Épicas Requeridas
|
|
- **OQI-001:** Perfil de usuario y preferencias
|
|
- **OQI-003:** Datos de mercado y portfolio
|
|
- **OQI-006:** Señales ML
|
|
|
|
### Servicios de Base de Datos
|
|
- Conversations table (historial)
|
|
- User_Preferences table (memoria)
|
|
- User_Memory table (información recordada)
|
|
|
|
---
|
|
|
|
## Especificaciones Técnicas Relacionadas
|
|
|
|
- [ET-LLM-001: Arquitectura del Chat](../especificaciones/ET-LLM-001-arquitectura-chat.md)
|
|
- [ET-LLM-006: Gestión de Memoria](../especificaciones/ET-LLM-006-gestion-memoria.md)
|
|
|
|
---
|
|
|
|
## Historias de Usuario Relacionadas
|
|
|
|
- US-LLM-001: Enviar mensaje al copilot (contexto básico)
|
|
- US-LLM-002: Conversación continua con memoria
|
|
|
|
---
|
|
|
|
*Documento de requerimientos - Sistema NEXUS*
|
|
*Trading Platform*
|