# Sesiones y Memoria ## Sesiones ### Como Funcionan las Sesiones Cada conversacion con un agente ocurre en una **sesion**. Las sesiones se identifican por claves que codifican el contexto -- que agente, que canal, que chat. Las sesiones mantienen una transcripcion completa (JSONL de solo adicion) de todos los mensajes, llamadas a herramientas y resultados. Esta transcripcion es lo que da a los agentes contexto sobre la conversacion en curso. ### Claves de Sesion Las sesiones se enrutan automaticamente basandose en el contexto: | Patron | Significado | |---------|---------| | `agent:main:main` | Conversacion directa principal | | `agent:::group:` | Chat de grupo en un canal especifico | | `agent:::channel:` | Conversacion de canal/sala | | `cron:` | Ejecucion de trabajo programado | | `hook:` | Ejecucion activada por webhook | ### Ciclo de Vida de la Sesion - **Reinicio diario** -- Las sesiones se reinician automaticamente a una hora configurable (por defecto 4 AM local). Esto crea un contexto de conversacion fresco cada dia mientras preserva el historial. - **Expiracion por inactividad** -- Las sesiones que no han estado activas por un periodo configurable pueden auto-reiniciarse. - **Reinicio manual** -- Comience de nuevo en cualquier momento con un comando `/new` o `/reset`. ### Seguimiento de Tokens Las sesiones rastrean el uso acumulativo de tokens (entrada, salida, lectura de cache, escritura de cache) para monitoreo de costos y gestion de la ventana de contexto. --- ## Compactacion ### Que Es la Compactacion? Cuando una conversacion se acerca al limite de la ventana de contexto del modelo, Neotask la **compacta** -- resumiendo mensajes mas antiguos en una descripcion condensada y comenzando una nueva sesion con ese resumen mas los mensajes recientes. ### Como Funciona 1. **Deteccion** -- Monitorear uso de contexto (disparador por defecto: 80% de la ventana de contexto) 2. **Resumen** -- Los mensajes mas antiguos se resumen en una entrada de compactacion 3. **Nueva sesion** -- Una sesion fresca comienza con el resumen inyectado en la parte superior 4. **Preservacion** -- Las transcripciones antiguas se preservan para historial pero ya no se cargan en el contexto ### Configuracion - **Habilitado/deshabilitado** -- Activar o desactivar auto-compactacion - **Umbral** -- Porcentaje de la ventana de contexto que activa la compactacion (por defecto 80%) - **Minimo de mensajes** -- No compactar si hay menos de N mensajes ### Compactacion Manual Puede activar la compactacion manualmente en cualquier momento con el comando `/compact`. Esto es util cuando quiere reiniciar el contexto sin perder informacion importante. --- ## Memoria ### Memoria del Agente Cada agente tiene un sistema de memoria para persistir informacion importante entre sesiones: - **MEMORY.md** -- Un archivo markdown en el espacio de trabajo del agente donde se almacenan hechos importantes, preferencias y contexto - **Directorio de memoria** -- Archivos adicionales en `memory/` para conocimiento estructurado ### Busqueda Vectorial Neotask soporta busqueda de similitud vectorial sobre la memoria del agente: 1. **Indexacion** -- Los archivos de memoria se indexan usando embeddings 2. **Busqueda** -- Los agentes consultan la memoria con lenguaje natural ("Que dijo el usuario sobre sus preferencias de API?") 3. **Recuperacion** -- Las memorias relevantes se retornan clasificadas por similitud ### Plugin de Memoria (LanceDB) El plugin de memoria LanceDB proporciona almacenamiento vectorial avanzado: - Base de datos vectorial persistente - Tamano de fragmento y superposicion configurables - Busqueda de similitud eficiente - Re-indexacion automatica cuando los archivos de memoria cambian ### Recuperacion Automatica Al inicio de sesion, las memorias relevantes pueden recuperarse e inyectarse automaticamente en el contexto del agente. Esto da a los agentes continuidad entre sesiones sin cargar historiales de conversacion completos. --- ## Persistencia de Sesiones Todos los datos de sesion se almacenan localmente: - **Metadatos de sesion** -- `sessions.json` rastrea sesiones activas, ultima actividad, conteos de tokens y configuracion - **Transcripciones** -- Transcripciones de sesiones individuales almacenadas como archivos `.jsonl` - **Recuperacion** -- Las sesiones sobreviven a reinicios del Gateway sin perdida de datos ### Limpieza - Las sesiones no accedidas por un periodo configurable (por defecto 30 dias) son elegibles para limpieza - La gestion manual de sesiones esta disponible a traves de la interfaz o API - Las transcripciones compactadas se archivan pero pueden revisarse