Las sesiones de larga duración por fin se ponen al día: la compactación ahora reconstruye siempre el system prompt


Tu “sesión eterna” lleva meses activa: un chat persistente en Bot Mode, un canal de trabajo en el gateway, cumpliendo con su labor cada día. Pero aquí está la cuestión que quizá no habías notado — el system prompt en su cabeza sigue siendo el del día en que nació. Las herramientas se refrescan desde el registro en vivo en cada compactación, pero el system prompt se restauraba byte a byte desde el snapshot de la sesión: las dietas de guía que publicaron los mantenedores, los nuevos bloques de prompt (como el reloj de dos líneas que muestra la hora actual), las descripciones de herramientas renombradas — no conoce ninguna de ellas. Un cambio integrado el 30 de agosto (PR #98426) lo arregla por fin: el commit de compactación ahora reconstruye siempre el system prompt con el builder en vivo. El cambio está en main, aún sin publicar en una release.

Por qué los prompts quedaban congelados al nacer

Hermes maneja los contextos demasiado largos compactando: condensa el historial en un resumen y libera espacio para continuar. Antes, las herramientas se reconstruían desde el registro en vivo, pero el system prompt se restauraba byte a byte desde el snapshot de la sesión — dos rutas de código distintas. Así, el contenido del prompt se quedaba obsoleto: guía de hace meses, ningún bloque de funciones nuevo, descripciones de herramientas con nombres antiguos. En palabras del mantenedor: “un chat eterno cargaría con su prompt de nacimiento durante meses mientras su array de herramientas avanzaba”.

La corrección: sin detector de actualizaciones — la reconstrucción ES el detector

Los mantenedores rechazaron explícitamente un “detector de actualizaciones”. El enfoque es más exhaustivo: cada commit de compactación ejecuta el builder en vivo y después compara bytes:

  • Salida byte-igual al prompt almacenado → se conserva el objeto string ORIGINAL (la identidad del objeto se preserva, de modo que los caches KV/de prefijo indexados por él siguen siendo válidos; el caso común cuesta una sola comparación de strings);
  • La salida difiere → gana el prompt reconstruido y un log de deriva lo registra (forma: Compaction rebuilt a drifted system prompt (session=..., N -> M chars)).

La reconstrucción es prácticamente gratis porque el cache de prefijo ya está muerto en un commit de compactación — que es exactamente la respuesta del mantenedor a “¿por qué no íbamos a actualizar el system prompt en la compactación?”. Las secciones de plugins siguen el mismo camino: la invalidación limpia el snapshot congelado y la reconstrucción re-renderiza por el mismo camino que el arranque de sesión; si el render de un plugin lanza una excepción, se cae de nuevo a su última sección buena (fail-open, no un congelamiento).

Qué cambia esto para ti

  • Las sesiones de larga duración convergen al prompt actual en su próxima compactación: la memoria guardada a mitad de vida por fin aparece en el prompt, la guía recortada sustituye al texto obsoleto, y los futuros renombrados dejan de presentar guía con el nombre antiguo junto a herramientas con el nombre nuevo.
  • El reloj de “Conversation started” se ha vuelto más listo: las sesiones compactadas o rotadas resuelven su hora de inicio a través de la RAÍZ del linaje de sesión — un chat eterno de Bot Mode sabe cuándo nació por primera vez.
  • Sin rupturas de cache a mitad de conversación: el único punto de reconstrucción es el límite de compactación ya sancionado, nunca un punto aleatorio a mitad de turno.

Para saber más sobre cómo funciona la compresión, consulta nuestra guía de la compresión lean-tail por defecto y la guía de anclaje del uso de contexto; consejos prácticos para gestionar sesiones largas están en la guía de reanudación de sesiones.

Cuándo puedes usarlo

El PR #98426 se integró el 30 de agosto y no está en v0.20.6 (etiquetada el 27 de agosto). Para verlo en acción: haz pull de la última main, mantén una sesión larga abierta y ejecuta /compress una vez — la sesión recogerá el prompt más reciente después. Para el panorama completo de configuración de la compactación (umbrales de disparo, estrategia de tail), consulta nuestra guía de optimización de tokens de contexto.

En resumen: las sesiones de larga duración por fin pueden mantenerse al día. En lugar de cargar con un prompt de nacimiento durante meses, cada compactación es ahora una auto-actualización silenciosa — a un coste de rendimiento prácticamente nulo.