← Diario
Técnica·19 may 2026

La conversación que sobrevive a los cortes

Una mesita abatible de tren al anochecer, un smartphone con la pantalla apagada y un vaso de cartón junto a la ventanilla, un paisaje borroso que pasa en una luz azul verdosa, un punto de luz naranja a lo lejos, asientos azules desenfocados al fondo

Un teléfono pierde su enlace con el servidor mucho más a menudo de lo que se cree: un túnel, el paso del wifi a la red móvil, una señal débil. La aplicación se reconecta sola, en cuestión de segundos. Pero hasta el 19 de mayo volvía de cada corte sin el hilo de los últimos minutos, porque ese hilo vivía en el propio enlace. Desde entonces, la conversación en curso pertenece a la persona, no al cable: una reconexión dentro de la media hora la encuentra intacta, historial y hablante incluidos. Y un error pasajero del lado del servidor tampoco la borra ya.

Diez segundos de túnel

Nuria va en el tren, preparando su fin de semana. « Apunta que Marc llega el viernes por la noche, se queda a dormir en casa. » La aplicación confirma, la ficha queda creada. « Y recuérdame sacar la cama supletoria el jueves. » Nueva confirmación, y luego una pregunta de vuelta: « ¿para una noche o para dos? ». El tren entra en un túnel. Arriba de la pantalla, el puntito que señala el enlace pasa del verde al rojo. Diez segundos. El tren sale, el punto vuelve a ser verde. Nuria responde: « dos ».

Antes del 19 de mayo, lo que seguía era embarazoso. « ¿Dos qué? » O peor: una respuesta que arrancaba de nuevo desde la memoria larga, encontraba la ficha de Marc y bordaba alrededor, sin saber ya que acababa de hacerse una pregunta. Los recuerdos estaban todos ahí. El nombre de Marc, la fecha, la cama supletoria, nada se había perdido. Lo que faltaba era el minuto anterior.

Este defecto tiene una particularidad: solo se ve en un teléfono en movimiento. En un tren, en un ascensor, al salir de casa, el enlace se rompe todo el tiempo, y es justo ahí donde apetece hablar en vez de teclear.

Lo que un corte significa para un teléfono

El teléfono y el servidor se hablan por un canal que permanece abierto durante toda la sesión. Es lo que permite que la voz circule en ambos sentidos sin restablecer una conexión a cada frase. Pero un canal abierto tiene una fragilidad: depende de la red que lo sostiene, y un teléfono cambia de red sin parar.

Cruzas la puerta de casa: el wifi suelta, la red móvil toma el relevo, y el canal no sobrevive al cambio. Atraviesas una zona de señal débil: algún equipo entre el teléfono y el servidor declara muerto el canal, sin que nadie haya decidido nada. Te quedas en silencio unos minutos: algunas redes cierran una línea que no dice nada. Ninguno de estos sucesos es una avería. Es la vida normal de un aparato que se lleva en el bolsillo.

La aplicación sabe recuperarse, y lo hace sola. Cuando el canal cae, intenta reabrirlo al cabo de un segundo. Si falla, vuelve a intentarlo a los dos segundos, luego a los cuatro, luego a los ocho, sin superar nunca un tope de quince segundos entre dos intentos. Mientras tanto, el puntito de arriba de la pantalla pasa al rojo, al naranja durante un intento, y vuelve al verde. Es todo lo que se ve, y es a propósito: una reconexión no tiene por qué ser un acontecimiento.

Cuando el canal se reabre, el servidor empieza saludando: un primer mensaje que lleva un identificador de conversación. Todo el asunto se sostiene en ese identificador. Si es nuevo, la conversación arranca de cero. Si es el mismo que antes del túnel, el hilo se recupera.

Antes: un hilo atado al cable

Del lado del servidor, lo que recibe tus frases, pone a trabajar al modelo, ejecuta sus herramientas y te devuelve la respuesta es una especie de director de orquesta. Es él quien sostiene la conversación en curso: los últimos intercambios, en una ventana deslizante que cubre de sobra unas cuantas decenas de turnos; la persona declarada como la que tiene el teléfono, cuando no eres tú quien habla; y la lista de fichas creadas desde el inicio de la conversación, las que un toque bajo la respuesta vuelve a abrir.

Hasta el 19 de mayo, se construía un director de orquesta por cada canal. Un canal, un director, una conversación. Mientras el canal vivía, todo iba bien. Pero cada túnel fabricaba un canal nuevo, por tanto un director nuevo, por tanto una conversación vacía. El servidor veía llegar un identificador desconocido y hacía lo que hace con un desconocido: partía de nada, solo con la memoria larga.

Había algo peor. El cierre del canal se tomaba como el fin de la conversación: en ese instante, se resumía, se archivaba en la memoria larga y se retiraba de la memoria viva. El túnel de Nuria no solo borraba la pregunta sobre la cama supletoria, cerraba la conversación, como si ella se hubiera despedido.

De ahí los síntomas. Un « sí » lanzado tras un corte recibía « ¿sí a qué? ». Una petición formulada en dos tiempos, la primera mitad antes del túnel y la segunda después, ya no tenía primera mitad. Y un teléfono prestado volvía a ser, sin avisar, el teléfono de su dueño, con el riesgo de archivar bajo el nombre equivocado lo que la persona de paso acababa de decir.

Desde entonces: el hilo pertenece a la persona

La corrección del 19 de mayo es un desplazamiento. Ya solo hay un director de orquesta para todo el servidor, y es él quien guarda todas las conversaciones en curso, una por persona, independientemente de los canales que van y vienen. Lo que dependía del canal, la pantalla a la que enviar una ficha para mostrarla, la forma de programar un recordatorio para ese teléfono concreto, se le entrega en cada turno, en lugar de quedar sellado en su construcción.

Al lado, el servidor lleva una pequeña tabla: para cada persona, la conversación en curso y la hora de su última actividad. « Persona » tiene un sentido preciso. Si tienes cuenta, es la cuenta. Si usas la aplicación sin cuenta, es el aparato, reconocido por el identificador que lleva. En ambos casos, la clave no cambia cuando cambia el canal.

Cuando se abre un canal, el servidor mira esa tabla. Si la persona tenía una conversación activa hace menos de treinta minutos, le devuelve el mismo identificador, y el director de orquesta lo recupera todo: el historial, el hablante declarado, las fichas de la sesión. Si no, crea uno nuevo. En los registros del servidor, eso da una línea por apertura: « conversación retomada, antigüedad 9 s », o « conversación nueva ». El túnel de Nuria se convirtió en una línea del primer tipo.

Y « dos » vuelve a ser una respuesta. El modelo tiene la pregunta delante, sabe a qué responde la palabra, ajusta el recordatorio. Nada espectacular: es exactamente lo que habría pasado sin túnel.

Por qué treinta minutos

La cifra no cayó del cielo. Es la misma que la de la regla del teléfono prestado, aprendida esa misma mañana: tras media hora de silencio, la aplicación considera que el aparato ha vuelto a su dueño. Una conversación obedece a la misma lógica. Treinta minutos sin una palabra ya no son un corte, son una pausa, y una pausa de esa duración es la señal natural de que se ha pasado a otra cosa.

Un detalle cuenta en el cálculo. La hora de la última actividad se refresca en el momento en que llega tu frase, antes de que el modelo se ponga a trabajar, no después. Una respuesta larga, una búsqueda en la web, una cadena de herramientas que se toma su tiempo, no puede por tanto empujarte fuera de la ventana mientras esperas.

Lo que supera los treinta minutos tampoco se pierde. La conversación se archiva, y otro mecanismo toma el relevo: los intercambios pasados, leídos tal cual y fechados, se entregan al modelo al comienzo de la conversación siguiente. Es lo que responde a « ¿de qué hablábamos la última vez? », y es el tema de otro artículo, del mismo día. Dos mecanismos, dos escalas de tiempo: la supervivencia al corte cubre el minuto, el recuerdo de las conversaciones pasadas cubre los días.

Irse no es que te corten

Hay que distinguir dos cosas que el servidor no distinguía. Que te corten es algo que se sufre: el túnel, el wifi que suelta, la línea cerrada por la red. Irse es algo que se decide: sales de la aplicación para abrir otra, o vuelves a la pantalla de inicio.

Cuando te vas de verdad, la aplicación avisa al servidor de que la conversación ha terminado. Se archiva, y la próxima apertura arranca con una conversación nueva, con los resúmenes de las anteriores a mano. Es una elección: una conversación que se ha dejado es una conversación terminada, y retomarla palabra por palabra una hora después sería más desconcertante que útil.

Pero « irse de verdad » es más estrecho de lo que parece. Abrir el teclado, desplegar el panel de notificaciones, ver aparecer una ventana del sistema: nada de eso es irse, y la aplicación tuvo que aprender a dejar de tomarlo por tal. Solo cuenta el paso completo a segundo plano. El resto, túneles incluidos, no es decisión tuya, y el hilo aguanta.

Un final que ya no es un portazo

Si el cierre del canal ya no significa el fin de la conversación, hace falta otro momento para archivarla, si no aparecen dos problemas. Las conversaciones abandonadas, aquellas en las que la persona simplemente dejó el teléfono, nunca llegarían a la memoria larga. Y la memoria viva del servidor se llenaría de conversaciones que nadie vendrá a buscar.

Así que el servidor repasa, cada cinco minutos, su tabla de conversaciones en curso. Aquellas cuya persona lleva más de treinta minutos en silencio se archivan, como se habrían archivado antes al cerrarse el canal, y se retiran de la memoria viva. Una conversación abandonada acaba por tanto igualmente en la base, con un resumen, y nada se acumula. El archivado ya no llega en el segundo en que cae el canal, sino al final de la ventana: para la persona que vuelve, ese es el objetivo; para la que no vuelve, nada cambia.

El otro corte, el que no viene de la red

La misma tarde reparó una segunda familia de cortes, invisibles estos, porque se producen entre el servidor y los servicios de los que depende. La red de Nuria es perfecta, el punto está verde, y sin embargo la aplicación responde como si hubiera perdido el hilo.

El primer caso es el del propio modelo. Ocurría que el servicio remoto devolvía una respuesta vacía en la primera llamada de un turno, una sobrecarga disfrazada de éxito. El servidor lo tomaba por una avería, y oías la frase de socorro, la que anuncia un problema técnico. Esa primera llamada ahora se reintenta una vez, tras una breve pausa, antes de renunciar. Una sola vez, y solo la primera llamada del turno. En medio de una cadena de herramientas, repetir una llamada supondría ejecutar dos veces lo que ya se ha hecho: dos fichas, dos recordatorios. Una respuesta fallida se puede reparar. Una ficha duplicada no, no sin que alguien se dé cuenta.

El segundo caso es el de la memoria entregada al modelo. Se ensambla a partir de varias fuentes consultadas a la vez, y bastaba con que una sola llegara tarde para vaciar el conjunto. El modelo recibía entonces una memoria en blanco y respondía, de buena fe, que no se acordaba. La regla pasó a ser « todo lo que responde se conserva », y el detalle de ese cambio se cuenta en el artículo vecino. Lo que importa aquí es el parentesco: una fuente que tose y un túnel producen la misma frase en boca de la aplicación, y merecían tratarse el mismo día.

Por último, en cada turno, el servidor anota en sus registros lo que realmente ha entregado al modelo: conversaciones recientes, recuerdos de cada nivel, reglas, y el tamaño del conjunto. Antes, « se le ha olvidado » era un informe imposible de investigar. Ahora se puede decir si el hilo estaba ahí y mal leído, o ausente.

Lo que todavía no sobrevive

Ese día fijó un marco, no resolvió cada caso, y es mejor decir cuáles siguen abiertos.

Una frase pronunciada durante esos mismos diez segundos no sale. Si el punto está rojo en el momento en que sueltas el orbe, la aplicación no puede enviar tu frase, y la repites cuando vuelve a estar verde. El hilo está intacto, pero ese turno hay que rehacerlo. Guardar esas frases para enviarlas cuando vuelva la red es un trabajo aparte.

Un reinicio del servidor se lleva las conversaciones aún no archivadas, puesto que viven en la memoria viva entre dos archivados. Escribir cada turno en la base a medida que ocurre, para que un reinicio cueste como mucho una frase, es la continuación lógica, y espera a que esta haya dado sus frutos.

Más allá de treinta minutos, es una conversación nueva, y es a propósito. Y la propia respuesta necesita la red: entender tu voz, pensar, responderte en voz alta, todo eso ocurre en el servidor. Lo que sobrevive al corte es el hilo. No la posibilidad de hablar dentro del túnel.

Para Nuria, el día se resume de forma sencilla. Puede mantener una conversación en un tren, y el tren tiene derecho a entrar en un túnel. Cuando sale, la pregunta hecha antes sigue hecha, la persona que hablaba sigue hablando, y « dos » quiere decir dos noches. Es poca cosa dicha así. Era la diferencia entre una aplicación que se usa sentado y una aplicación que se usa caminando.

Leer a continuación
XNeuronal ya está disponible en AndroidUna memoria que deduce está por llegar