# Ramificación de conversaciones: explorar caminos sin perder el anterior

> La ramificación deja volver a un punto de un chat con IA y seguir por otro camino sin perder el original. Cómo se modela, cómo se muestra y cuándo conviene.

*Tags: ia, ux, interfaces, conversacion*

---


> [!info] Definición Rápida
> La **ramificación de conversaciones** es la capacidad de volver a un punto de un chat con IA y continuar por otro camino, creando una rama, sin borrar la versión original. La conversación deja de ser una lista y pasa a ser un árbol, donde solo una rama está activa a la vez.


## ¿Por qué una conversación es un árbol?

Una conversación parece una lista, pero cuando la persona corrige, reformula o explora, aparecen bifurcaciones. Quiere ver qué pasa si pregunta por otro lado, o si cambia una restricción a mitad del camino.

Un artículo del blog tianpan.co sobre el tema (abril de 2026) describe el problema así: en un hilo lineal, quien quiere probar un «¿y si…?» debe elegir entre sobrescribir el mensaje y perder la versión original, o empezar de nuevo y perder el contexto. Lo que hace la gente en la práctica es copiar y pegar la conversación vieja en un chat nuevo. El artículo propone tomar prestado el modelo del control de versiones: bifurcar es una operación normal que conserva el historial y permite explorar en paralelo.

Por eso la ramificación no es un lujo técnico. Es el modelo natural de una conversación que tiene decisiones.

Dos acciones ya la usan sin llamarla así. [[regenerar-respuesta|Regenerar una respuesta]] crea una rama hermana del mismo mensaje, y [[editar-el-prompt|editar un prompt enviado]] crea una rama desde ese punto. La diferencia es qué cambia: la respuesta en el primer caso, la pregunta en el segundo.

## ¿Cómo se modela?

Hay dos formas comunes de guardar una conversación ramificada:

- **Con punteros al padre.** Cada mensaje es un nodo con una referencia a su padre. Editar o regenerar crea un hermano, y el camino activo se arma recorriendo desde la raíz hasta la hoja elegida.
- **Con copias por rama.** Cada rama guarda su historial completo. Es más simple, pero duplica datos.

La documentación de Trigger.dev, para su patrón de chat ramificado, describe la conversación como un árbol de nodos con puntero al padre: los mensajes son inmutables, así que editar crea un hermano, y la rama activa se obtiene recorriendo desde una hoja hasta la raíz. Cambiar de rama es elegir otra hoja. (Esa página está marcada como parte de una versión candidata del SDK, así que su API puede cambiar.)

De ahí sale una consecuencia de diseño: guarda explícitamente cuál es la hoja activa de cada chat. Si la deduces como «el mensaje más reciente», la persona que vuelve a una rama anterior la pierde en cuanto escribe o recarga.

Un detalle de implementación que afecta a la experiencia: al ramificar, el sistema debe copiar o referenciar solo el prefijo hasta el punto elegido y crear la rama en una sola operación. Si la operación falla a mitad, la persona ve una conversación que no coincide con lo que el modelo recibe.

## ¿Cómo se muestra?

La forma más usada es un control pequeño junto al mensaje que tiene ramas: flechas y un contador ("2 de 3"). Solo aparece cuando hay más de una rama. Assistant-ui, en su guía de ramificación, ofrece ese componente: se puede configurar para que el selector se oculte cuando el mensaje tiene una sola rama (la opción `hideWhenSingleBranch`), y los botones de anterior y siguiente se deshabilitan en los extremos y mientras la respuesta está en curso, salvo que el runtime permita cambiar de rama durante la ejecución.

Para pocas ramas, esa vista funciona bien. Con muchas, un árbol en la barra lateral escala mejor, pero corre el riesgo de que nadie lo use. Una receta razonable es mostrar por defecto el indicador en línea, ofrecer una vista de árbol para quien tiene muchas ramas, y permitir convertir una rama en un chat nuevo, algo que ya ofrece ChatGPT con «Branch in new chat».

Esa última opción es importante: una rama que se volvió el trabajo principal debe poder separarse. Así el [[historial-de-conversaciones|historial de conversaciones]] no se llena de caminos que la persona ya no usa.

## ¿Cuándo NO conviene ramificar?

- **Cuando la conversación es lineal por naturaleza.** Una consulta de un dato o una traducción no necesitan ramas. Un control de ramas en ese caso solo añade ruido.
- **Cuando las ramas tienen efectos externos.** Si una rama ya envió un correo o creó un registro, ramificar no deshace nada. La interfaz debe avisar que la rama no revierte la acción.
- **Cuando la persona quiere combinar ramas.** Fusionar dos caminos es mucho más difícil que bifurcar, porque hay que decidir qué mensajes sobreviven y en qué orden. Una alternativa más simple es llevar un resumen o las partes citadas de una rama a la otra. Conviene empezar sin fusión y observar qué copian las personas entre ramas.

## Ejemplo

Ejemplo ilustrativo: un diseñador discute con un asistente la estructura de una página de precios. En el mensaje cuatro, decide probar un modelo de tres niveles en vez de dos. Sin ramas, tendría que escribir el cambio y perder la versión de dos niveles.

Con ramas, edita el mensaje cuatro y aparece "1 de 2". La rama original sigue ahí. Después de explorar la nueva durante veinte mensajes, decide quedarse con ella y usa "convertir en chat nuevo" para que la conversación de precios no se mezcle con otros temas. La rama descartada sigue disponible en el historial.

## Cómo probarla con personas reales

Antes de construir el árbol completo, comprueba si la gente lo necesita. Dales una tarea que exija comparar dos caminos, por ejemplo elegir entre dos borradores, y observa qué hacen. Si abren pestañas, copian y pegan o reescriben el prompt desde cero, la rama responde a una necesidad real. Si casi nadie nota el control de ramas, quizá baste con una opción sencilla de volver a la versión anterior.

## Errores comunes

- Mostrar cada rama como un chat separado en el historial.
- Inferir la rama activa a partir de la última creada.
- Ramificar sin avisar que las acciones externas no se revierten.
- Ofrecer un árbol complejo cuando la mayoría tiene una o dos ramas.
- No permitir separar una rama en su propio chat.

## Fuentes

- [Conversation branching is a first-class primitive (tianpan.co)](https://tianpan.co/blog/2026/04/23/conversation-branching-first-class-primitive)
- [Branching conversations (Trigger.dev)](https://trigger.dev/docs/ai-chat/patterns/branching-conversations)
- [Message Branching (assistant-ui)](https://www.assistant-ui.com/docs/guides/branching.md)


---

Source: https://www.fernandoux.com/es/wiki/ia/ramificacion-de-conversaciones/
