Construyendo DoDone · 31 de agosto de 2026
¿Recordar cada conversación es realmente un buen diseño?
Hay una pregunta en la que me detuve mucho más tiempo del que esperaba mientras construía DoDone: cómo trasladar el contexto de una conversación en la ventana de chat. Cuando creas un producto de agentes de IA, al principio es fácil pensar en esto de forma sencilla. ¿No podrías simplemente poner todos los mensajes previos en el contexto?
Las ventanas de contexto de los modelos siguen creciendo. Cientos de miles de tokens, y ahora modelos que soportan un millón. Así que parece que el mejor enfoque es alimentar al modelo con tanta conversación del usuario como sea posible. Pero la conclusión a la que llegué mientras construía DoDone fue un poco diferente.
La memoria de una IA no se trata tanto de cuánto puedes almacenar, sino de decidir qué necesita recordar ahora mismo.
La forma más intuitiva de manejar conversaciones largas
Agentes como Claude Code y Hermes usan una técnica llamada compactación para mantener tareas largas en marcha. Anthropic también describe la compactación como un método central para gestionar el contexto en agentes de larga duración. Cuando una conversación crece, en lugar de conservar cada mensaje antiguo, resumes lo que importa y construyes un contexto fresco junto a los turnos recientes. Claude Code de igual forma comprime mensajes y trabajo antiguos mientras conserva decisiones de diseño clave, problemas abiertos y detalles de implementación.
La implementación de Hermes es más concreta. No compacta según el número de mensajes sino según un presupuesto de tokens. Cuando los tokens reales del prompt usados en la llamada actual a la API alcanzan una fracción establecida de la ventana de contexto, la compactación se activa automáticamente. El umbral predeterminado es 50%, y para modelos con ventanas menores a 512K se eleva al menos al 75% para evitar compactar demasiado pronto. Algunos mensajes recientes se mantienen tal cual mientras la parte intermedia se resume.
Es una estructura muy razonable. Encaja especialmente bien cuando un solo objetivo se extiende por mucho tiempo — una tarea de programación, un hilo de investigación. Pero DoDone tenía un problema algo distinto.
Por qué DoDone no simplemente incluye toda la conversación
DoDone es una oficina virtual donde colegas de IA trabajan. No se trata solo de una IA y un tema discutido profundamente durante horas. Un usuario podría hablar con el colega de marketing, luego pasar trabajo al desarrollador, celebrar una reunión en un canal de proyecto y después devolver un seguimiento a un colega específico — y volver a buscar a ese colega un día después.
En otras palabras, el chat en DoDone no es solo una ventana de conversación. Es la interfaz donde ocurre el trabajo. Esa diferencia cambió el diseño del contexto. Si sigues pasando cada mensaje anterior al modelo a medida que la conversación crece, puedes recordar mucho — pero aparecen tres problemas al mismo tiempo.
La primera es el costo. Un LLM vuelve a leer el contexto en cada petición. Cuanto más larga sea la conversación, más vas a estar reenviando los mismos mensajes antiguos. Especialmente en modelos con ventanas muy grandes, si la compactación ocurre tarde, el costo de toda la sesión puede subir drásticamente. Incluso en Hermes se comenta que con un modelo de 1M y el umbral por defecto del 50%, la primera compactación podría no activarse hasta los 500K tokens.
La segunda es la velocidad. Más tokens de entrada significan más información que el modelo tiene que procesar. No hace falta hacerlo releer conversaciones de hace semanas que no tienen nada que ver con la pregunta actual.
Pero el que más pesó para mí fue el tercero: la contaminación del contexto.
Más contexto no siempre es mejor
Al explicar la ingeniería de contexto, Anthropic señala que la relevancia y la contaminación del contexto siguen siendo problemas incluso con contextos largos. Ese es un punto importante. Una ventana de un millón de tokens no significa que llenarla con un millón de tokens sea el mejor estado.
Imagina que un usuario tuvo esta serie de conversaciones con el colega de marketing. La semana pasada, branding para un nuevo servicio. Hace unos días, copy para un anuncio de Instagram. Ayer, la política de precios del producto. Y hoy, pide un comunicado de prensa. Técnicamente puedes pasarle todo al modelo. Pero si el trabajo de hoy es un comunicado de prensa, ¿realmente ayuda traer palabra por palabra el ida y vuelta de la edición del copy de Instagram de hace semanas? Solo crea espacio para que información no relacionada con la tarea actual influya en el juicio del modelo.
Desde el principio, a DoDone le importó menos "cuánta conversación incluir" y más "qué tan reciente debe conservarse una conversación en su totalidad".
El enfoque de DoDone — lo reciente en foco nítido, lo anterior comprimido
Hoy DoDone mantiene las 8 tareas más recientes como contexto detallado. Una conversación entre colegas usa un presupuesto de contexto detallado de aproximadamente 20K caracteres, y el canal maestro alrededor de 16K. Hasta las últimas 8 tareas, los detalles se conservan lo más intactos posible; todo lo anterior se comprime en un resumen continuo que lleva el contexto anterior hacia adelante.
Simplificado, la estructura es esta: las tareas pasadas 1–12 se convierten en un resumen continuo, las tareas recientes 13–20 se mantienen como contexto detallado, y lo que estás haciendo ahora es la misión actual.
La clave es que las conversaciones antiguas no se borran: su resolución se reduce. Los turnos recientes se recuerdan con alta resolución, los más antiguos con baja resolución. Creo que esto se parece bastante a cómo funciona la memoria humana. No recordamos una conversación de hace una semana frase por frase. Pero el contexto importante se mantiene: 'pusimos el precio en $29 en ese proyecto', 'elegimos a los emprendedores en solitario como cliente objetivo', 'la siguiente tarea era construir la landing page'. Juzgué que las conversaciones largas con IA se sienten más naturales con esa misma estructura.
Pero los resúmenes también tienen límites
Por supuesto, un resumen rodante no lo cura todo. Un resumen es compresión, y cuanto más comprimes, más detalle inevitablemente pierdes. Y una vez que 20, 30 o 50 tareas se acumulan en una única conversación, aparece otro problema: deja de estar claro si el usuario sigue haciendo lo mismo.
Puedes empezar discutiendo la estrategia de marketing, crear una página principal a la mitad, hablar de contrataciones después y luego volver a crear contenido. Técnicamente todo puede permanecer conectado en una sola sesión. Pero 'técnicamente posible' y 'buena UX' son cosas distintas. Por eso DoDone añadió recientemente un pequeño mecanismo divertido.
La IA es la primera en decir: 'Intenta empezar una nueva conversación'
Cuando las misiones en la sesión actual llegan a 20, DoDone avisa al usuario primero. Ese es el punto en que las 8 recientes detalladas más unas 12 aproximadamente incorporadas al resumen continuo se han acumulado. En ese momento, aparece este mensaje:
“💡 Esta conversación se ha alargado bastante. Si el tema ha cambiado, te sugeriría empezar una nueva sesión — las respuestas son más precisas y los costes de la IA bajan. Si sigues, el flujo anterior se mantiene como resumen.”
Lo importante es que nunca obliga a terminar la sesión. Si sigues con el mismo proyecto, continúa. Pero si el tema ya cambió, empezar una nueva sesión es mucho mejor; aun así, el flujo anterior que necesitas se conserva mediante el contexto resumido. Al final, la decisión queda en tus manos.
También importaba dónde mostrar ese aviso
No me conformé con activar el aviso de conversación larga solo por el conteo de mensajes. DoDone lo comprueba en dos lugares.
El primero es el momento en que llega una instrucción de tarea. Ya sea por un 1:1 con un colega, el canal maestro, el canal general (all-hands), un seguimiento de reunión o un proyecto, la longitud de la sesión se comprueba de forma asíncrona justo después de recibir la instrucción. Si se cumple la condición, el aviso aparece de forma natural debajo de la instrucción que acabas de enviar.
La segunda es el momento en que el usuario entra en un canal. Cuando haces clic en un colega en la oficina para abrir un chat, o entras en un canal de proyecto, se verifica el estado de la sesión actual. Si ya es lo suficientemente larga, puedes ver el aviso incluso antes de enviar un nuevo mensaje. Y dentro de la misma sesión, solo se te avisa una vez; empezar una nueva sesión vuelve a hacerla elegible. Es una pieza muy pequeña de UX, pero en un producto de agentes, este tipo de detalles importa bastante.
En un agente de IA, memoria y contexto no son lo mismo
Una cosa se vuelve cada vez más clara mientras construyo DoDone: la memoria y el contexto no deberían tratarse como lo mismo.
La memoria es lo que un colega necesita saber a largo plazo. Preferencias del usuario, información de la empresa, formas de trabajar, reglas recurrentes, hechos importantes decididos en proyectos pasados. Esta información puede necesitarse días o meses después. El contexto es distinto — es más parecido a la memoria de trabajo necesaria para hacer bien esta tarea ahora mismo. La petición inmediatamente anterior, el archivo en el que se trabaja, lo que se acaba de decidir, el problema a resolver ahora. Intentar resolver ambos metiéndolos a presión en el historial de chat y el sistema se vuelve pesado muy rápido.
Así que creo que un buen sistema de agentes acaba teniendo varias capas de memoria: la misión actual (lo que se está haciendo ahora), el contexto reciente (las últimas interacciones detalladas), un resumen continuo (el flujo comprimido del trabajo pasado) y la memoria a largo plazo (hechos y reglas que deben persistir independientemente de la sesión). La ventana de contexto del modelo es solo el espacio donde se ensamblan, en ese momento, las que necesitas.
Cuanto mayor sea la ventana de contexto, más importa la ingeniería del contexto.
Hay una ironía aquí. Cuando las ventanas de contexto eran pequeñas, los desarrolladores no tenían otra opción que reducir la información. A medida que las ventanas crecieron a 128K, 200K, 1M, ahora podemos meter mucho. Y eso creó un nuevo problema: hay que decidir qué no incluir.
Un buen agente de IA puede que no sea el que lo recuerda todo. Lo que se necesita ahora es una IA que recuerde agudamente el presente, comprima lo antiguo de forma adecuada, traslade lo importante a la memoria a largo plazo y cree un nuevo espacio de trabajo cuando el tema cambia. Al final, el trabajo que cada vez haces más al construir un agente no es ingeniería de prompts — es ingeniería de contexto.
La pregunta central también está cambiando. Antes era '¿qué deberíamos decirle al modelo?' Ahora es más bien 'en este momento, ¿cuánto debería saber realmente el modelo?'.
Esto es exactamente en lo que más tiempo he invertido al construir DoDone. No se trata de hacer que la IA recuerde más, sino de que recuerde las cosas correctas en el momento adecuado. Creo que ahí se decidirá la diferencia que marcará la calidad de los agentes de IA a partir de ahora.
— Seungwon Go, el emprendedor en solitario que construye DoDone