Los cuatro modos de morir
clasificarás cualquier fallo de contexto largo en uno de cuatro modos — poisoning, distraction, confusion o clash — aportando la línea de la traza que lo evidencia. Ese vocabulario es el lenguaje de diagnóstico de todo el curso: sin él, "responde mal" no se arregla.
2.1El problema
En L1 viste a Magallanes morir en un encargo largo. Hoy lo abrimos en canal.
Magallanes es tu agente de investigación. Recibe un encargo ("investiga X y escribe un informe de N secciones") y, en un loop, busca documentos, los lee y sintetiza. Tiene tres tools: buscar, leer y escribir_seccion. Las usarás todo el curso.
Lanzas tres encargos largos. Los tres "responden mal". Tu bug report diría lo mismo en los tres casos. Pero mira las trazas.
1RUN-A, turno 9: buscar("efectos secundarios vacuna X")
2RUN-A, turno 14: buscar("efectos secundarios vacuna X") ← misma query
3RUN-A, turno 19: buscar("efectos secundarios vacuna X") ← otra vez
4RUN-A, turno 23: buscar("efectos secundarios vacuna X") ← y otra1RUN-B, turno 11: [catálogo del run: 38 tools cargadas — variante de lab]
2 el modelo llama escribir_seccion(...)
3 cuando el plan pedía leer(doc) primeroEl RUN-B usa una variante de Magallanes con el catálogo de tools inflado a 38; esa sobrecarga la construyes tú en N3.
1RUN-C, turno 6: leer("doc_441") devuelve "el estudio fue retirado en 2019"
2RUN-C, turno 17: el informe afirma "el estudio sigue vigente"Tres síntomas idénticos en la superficie: "el informe es malo". Tres enfermedades distintas debajo. Y aquí está lo que importa: tres tratamientos distintos.
Si las tratas como "el mismo bug", aplicas el mismo parche tres veces y fallas dos. Necesitas un diagnóstico diferencial. Eso es esta lección.
2.2Qué vas a poder hacer
Al terminar podrás:
- Nombrar los cuatro modos de fallo de contexto largo y dar la definición de cada uno.
- Clasificar un fallo a partir de su traza, señalando la línea exacta que lo delata.
- Descartar el caso que NO es un fallo de contexto — el diagnóstico diferencial.
Necesitas saber antes:
- Por qué más tokens degradan el rendimiento aunque "quepan" en la ventana — lo viste en N0·L1 El mito de la ventana infinita.
- Magallanes y sus tres tools (
buscar,leer,escribir_seccion) — el agente que diagnosticas todo el nivel.
No arreglamos nada todavía. Esta lección te da el vocabulario de diagnóstico; las palancas que lo curan llegan en N1.
2.3Recupera
Antes de seguir, responde para ti. Si una pregunta te cuesta, es justo lo que esta lección viene a fijar.
- De L1: ¿por qué un contexto más largo degrada el rendimiento aunque la ventana anunciada sea enorme? Nombra el mecanismo.
- La ventana de Magallanes "cabe de sobra" en el run muerto. Entonces, ¿qué se rompió exactamente cuando creció el contexto?
Pista para la 2: en L1 lo llamaste attention budget — cada token nuevo consume presupuesto de atención. La arquitectura paga n² relaciones por n tokens (Anthropic, Effective context engineering for AI agents, 29 sep 2025). La degradación es estructural. Esta lección le pone nombre a cómo se manifiesta ese daño en una traza concreta.
2.4El concepto
Drew Breunig publicó una taxonomía de cómo fallan los contextos largos (How Long Contexts Fail, 22 jun 2025, corroborada por Simon Willison). Son cuatro modos. Cada uno tiene una definición precisa y una evidencia empírica distinta.
Son cuatro modos; cada uno, un par de minutos de lectura. Los dos pares que más se confunden —distraction/confusion y poisoning/clash— los separamos explícitamente al final del bloque.
Vamos uno a uno. Para cada modo verás tres cosas. La definición verbatim de Breunig (con su original en inglés). Su evidencia en el corpus. Y cómo se ve en una traza de Magallanes.
Context poisoning
Context poisoning (envenenamiento del contexto): cuando una alucinación u otro error entra en el contexto y se referencia repetidamente. En el original: "When a hallucination or other error makes it into the context, where it is repeatedly referenced."
Analogía: una cita falsa en una nota a pie que el resto del trabajo da por buena y reusa. El límite de la analogía: aquí el error no solo se reusa, se amplifica — cada referencia lo refuerza como si fuera dato establecido.
En Magallanes: leer("doc_441") devuelve "el estudio fue retirado en 2019". El modelo produce una síntesis que lo malinterpreta como "vigente", lo escribe con escribir_seccion, y a partir de ahí lo trata como hecho. El error contamina cada sección posterior.
Context distraction
Context distraction (distracción del contexto): cuando el contexto crece tanto que el modelo se sobre-enfoca en él y descuida lo que aprendió en su entrenamiento. En el original: "When a context grows so long that the model over-focuses on the context, neglecting what it learned during training."
Analogía: alguien que, con un cuaderno lleno de sus propios apuntes delante, prefiere copiar lo que ya escribió antes que pensar de nuevo. El límite: el modelo no "prefiere" nada; al crecer el historial propio, la distribución que produce favorece repetir acciones ya presentes.
La evidencia: el agente Gemini 2.5 jugando Pokémon. Al superar los ~100.000 tokens, "showed a tendency toward favoring repeating actions from its vast history rather than synthesizing novel plans". La fuente es el apéndice del Gemini 2.5 technical report, citado por Breunig.
En Magallanes: el RUN-A. El modelo repite buscar("efectos secundarios vacuna X") cuatro veces. La query ya está en su historial; al crecer el contexto, reproduce esa acción en vez de avanzar al siguiente subtema.
Context confusion
Context confusion (confusión del contexto): cuando contenido superfluo en el contexto es usado por el modelo para generar una respuesta de baja calidad. En el original: "When superfluous content in the context is used by the model to generate a low-quality response."
La evidencia más nítida es de tools. El paper Less is More (arXiv:2411.15399, DATE 2025) prueba a Llama 3.1 8b cuantizado (q4_K_M). Falla con 46 tools y acierta con 19 — aunque las 46 caben en su ventana de 16k. La conclusión del paper: "it fails to select the correct one" (Table II). El contenido extra no desbordó la ventana; degradó la selección.
Como heurística — no como dato cerrado — el paper RAG-MCP (arXiv:2505.03275) sugiere un umbral. Con más de 30 tools la selección se vuelve crítica, y con más de 100 el fallo es casi seguro. Trátalo como regla de pulgar, no como umbral medido para tu agente.
En Magallanes: si el catálogo de tools crece (lo provocas en N3), el modelo selecciona la tool equivocada — escribir_seccion cuando tocaba leer. El RUN-B, con sus 38 tools cargadas, es un anticipo de este modo.
Context clash
Context clash (choque del contexto): cuando acumulas información y tools nuevas en tu contexto que entran en conflicto con otra información del contexto. En el original: "When you accrue new information and tools in your context that conflicts with other information in the context."
La evidencia: LLMs Get Lost in Multi-Turn Conversation (Laban et al., arXiv:2505.06120, Microsoft Research + Salesforce Research). El paper entrega la instrucción por turnos en vez de de golpe — lo que llama sharded instructions. El rendimiento cae un 39% de media; o3 pasa de 98,1 a 64,1. La información que entra a destiempo choca con lo ya acumulado.
En Magallanes: el informe afirma en la sección 2 una cosa y en la sección 5 la contraria. Cada sección se escribió con un tramo distinto del contexto; lo nuevo contradijo lo viejo y nadie reconcilió.
El contraejemplo: un fallo que NO es de contexto
Aquí está la trampa, y el motivo de que el diagnóstico diferencial importe. No todo fallo es de contexto.
1RUN-D, turno 3: buscar("dosis recomendada")
2 → Error: tool 'buscar' devolvió [] (índice vacío)
3RUN-D, turno 3: buscar("dosis recomendada")
4 → Error: tool 'buscar' devolvió []
5RUN-D, turno 3: buscar("dosis recomendada")
6 → Error: tool 'buscar' devolvió []Esto se parece a distraction: el modelo repite la búsqueda. Pero la causa es otra. La tool buscar tiene un bug determinista: su índice está vacío y devuelve [] siempre. El modelo reintenta porque no recibe resultados, no porque su historial lo distraiga.
¿Cómo lo distingues? El contexto aquí es corto (turno 3, no turno 23). El error es determinista (mismo input, mismo [], siempre). Un fallo de contexto depende de la longitud; un bug de tool, no. Si reduces el contexto y el fallo persiste, no es de contexto.
Curarlo con compresión o validación de memoria sería tratar la enfermedad equivocada. El arreglo es el índice de la tool. Por eso clasificas antes de tratar.
Normaliza el error: distraction vs confusion
Es muy común confundir distraction con confusion. Los dos producen "el modelo eligió mal". La diferencia clave es el origen del problema:
- Distraction = el modelo se ahoga en su historial propio (acciones que él mismo generó y acumuló). Síntoma típico: repite lo que ya hizo.
- Confusion = el modelo se ahoga en contenido ajeno que está en el contexto (tools, documentos superfluos que tú metiste). Síntoma típico: elige la pieza equivocada de un menú demasiado grande.
Cuando dudes, pregúntate: ¿el ruido lo generó el modelo (distraction) o lo metí yo (confusion)?
2.5Míralo funcionar
Vamos a leer juntos cuatro trazas de Magallanes, una por modo. El lab las produjo en el sweep de N0. En cada una, el trabajo es el mismo: señalar la línea exacta que delata el modo.
Antes de la anotación, una estrategia: lee cada traza entera primero, formula tu hipótesis, y solo entonces lee mi razonamiento. Diagnosticar es una destreza; se entrena prediciendo, no leyendo soluciones.
1═══ TRAZA 1 ═══════════════════════════════════════════════
2turno 6 leer("doc_441") → "Nota: este estudio fue RETIRADO (2019)."
3turno 7 escribir_seccion("Hallazgos", "El estudio de 2018 confirma…")
4turno 12 escribir_seccion("Discusión", "Como confirma el estudio citado…")
5turno 20 escribir_seccion("Conclusión", "El estudio vigente demuestra…")Modo: poisoning. La línea que lo delata es el turno 7: el documento dice "retirado", la síntesis lo escribe como "confirma". Una vez en el contexto, el error se re-referencia en los turnos 12 y 20. La pregunta diagnóstica: ¿hay un dato en el contexto que contradice su fuente y se reusa? Sí → poisoning.
1═══ TRAZA 2 ═══════════════════════════════════════════════
2turno 8 buscar("interacciones medicamentosas")
3turno 13 buscar("interacciones medicamentosas")
4turno 18 buscar("interacciones medicamentosas")
5turno 24 buscar("interacciones medicamentosas")
6[contexto en el turno 24: ~71K tokens]Modo: distraction. La línea que lo delata es cualquiera de las repeticiones a partir del turno 13, leída junto al tamaño del contexto. La query ya está cuatro veces en el historial; al crecer el contexto, el modelo reproduce su propia acción en vez de sintetizar. La pregunta diagnóstica: ¿el modelo repite algo que ya está en SU historial, y pasa con contexto grande? Sí → distraction.
1═══ TRAZA 3 ═══════════════════════════════════════════════
2[catálogo de tools cargado: 41 tools, muchas de nombre similar]
3turno 5 plan: "leer el doc_88 para extraer la dosis"
4turno 5 el modelo invoca: escribir_seccion(...) ← no leer()Modo: confusion. La línea que lo delata es el turno 5: el plan pide leer, el modelo selecciona escribir_seccion. El contenido superfluo —41 tools, varias parecidas— degrada la selección. Es otra corrida del sweep con el catálogo inflado, hermana del RUN-B (38 tools). Eco directo de Less is More (46→19). La pregunta diagnóstica: ¿el error es elegir mal entre opciones que YO metí en el contexto? Sí → confusion.
1═══ TRAZA 4 ═══════════════════════════════════════════════
2turno 9 escribir_seccion("Sección 2", "La dosis máxima es 40 mg/día.")
3turno 22 escribir_seccion("Sección 5", "No debe superarse 20 mg/día.")Modo: clash. La línea que lo delata es el turno 22, leída contra el turno 9: dos secciones del mismo informe se contradicen (40 mg vs 20 mg). Información acumulada en tramos distintos del contexto que entra en conflicto y nadie reconcilia. Eco de las sharded instructions de Laban et al. La pregunta diagnóstica: ¿dos piezas del contexto se contradicen entre sí? Sí → clash.
Self-explanation. Antes de seguir, contesta: ¿qué pregunta le harías a la traza para distinguir poisoning de clash? Ambos producen un informe con un dato incorrecto. La diferencia: en poisoning el dato contradice su fuente (un documento dice X, el informe dice no-X). En clash el dato contradice otra parte del propio informe (la sección 2 contra la 5). Poisoning mira documento↔informe; clash mira informe↔informe.
2.6Hazlo tú
Cinco trazas nuevas. Clasifica cada una con su evidencia: el modo y la línea que lo delata. Una es trampa — no es un fallo de contexto. Detéctala.
Practica con andamiaje decreciente: la primera la razonamos juntos en la solución; las demás son tuyas.
1─── TRAZA α ───
2turno 4 leer("doc_12") → "Las cifras de 2020 NO son comparables con las de 2015."
3turno 9 escribir_seccion("Tendencia", "Comparando 2015 y 2020, vemos un alza clara.")
4turno 15 escribir_seccion("Resumen", "El alza 2015→2020 es el hallazgo central.")
5
6─── TRAZA β ───
7[catálogo: 38 tools cargadas]
8turno 3 plan: "buscar estudios sobre el tema Y"
9turno 3 el modelo invoca: escribir_seccion(...)
10
11─── TRAZA γ ───
12turno 2 leer("doc_5") → Error: doc_id 'doc_5' no existe en el corpus
13turno 2 leer("doc_5") → Error: doc_id 'doc_5' no existe en el corpus
14turno 2 leer("doc_5") → Error: doc_id 'doc_5' no existe en el corpus
15
16─── TRAZA δ ───
17turno 12 buscar("guías clínicas tema Z")
18turno 17 buscar("guías clínicas tema Z")
19turno 21 buscar("guías clínicas tema Z")
20[contexto en el turno 21: ~68K tokens]
21
22─── TRAZA ε ───
23turno 7 escribir_seccion("Metodología", "El estudio fue doble ciego.")
24turno 19 escribir_seccion("Limitaciones", "El estudio no fue cegado.")Solución y razonamiento
TRAZA α — poisoning. Razonemos en voz alta, paso a paso. ¿Qué veo en el turno 4? El documento dice "NO son comparables". ¿Qué hace el modelo en el turno 9? Escribe justo lo contrario: "comparando 2015 y 2020, vemos un alza clara". El informe ya contradice a su fuente. ¿Se reusa ese error? Sí: en el turno 15 el "alza 2015→2020" reaparece como hallazgo central. La señal definitiva: un dato del informe contradice su documento de origen y se re-referencia después. Por tanto: poisoning. La línea que lo delata es el turno 9; el turno 15 es la re-referencia que lo confirma.
TRAZA β — confusion. Línea: turno 3. Con 38 tools cargadas, el modelo elige escribir_seccion cuando el plan pedía buscar; ruido ajeno (tools que tú metiste) y contexto corto descartan distraction.
TRAZA γ — TRAMPA, no es fallo de contexto. Línea: turno 2. El leer devuelve un error determinista (doc_id inexistente) y el modelo reintenta; contexto corto y error idéntico siempre → bug de tool, no de longitud.
TRAZA δ — distraction. Línea: cualquier repetición desde el turno 17, con el contexto a ~68K. El modelo repite su propia búsqueda y la query funciona (a diferencia de γ) → saturación de historial.
TRAZA ε — clash. Línea: turno 19 contra turno 7. "Doble ciego" vs "no fue cegado": informe↔informe → clash, no poisoning.
Feedback: si confundiste β con δ, releé "distraction vs confusion" en 2.4 — la clave es historial-propio (δ) vs contenido-ajeno (β). Si clasificaste γ como distraction, miraste el síntoma (repetición) y no la causa (error determinista con contexto corto): el diagnóstico diferencial es exactamente esto.
2.7Comprueba
Mini-quiz sin pistas. Apunta a clasificar bien los 4 antes de pasar a L3.
Para cada fallo, da dos cosas: (a) el modo más la línea o señal de la traza que lo delata, y (b) qué evidencia del corpus lo respalda.
- Magallanes lee un documento que dice "datos preliminares, sin revisar" y a lo largo del informe lo cita como conclusión firme.
- Con 50 tools cargadas, el modelo invoca
buscarcuando el plan claramente pedíaescribir_seccion. El contexto está en el turno 4. - El modelo repite
leer("doc_88")cinco veces seguidas; el contexto está a 80K tokens y elleerdevuelve el documento correcto cada vez. - La sección 1 del informe dice "el fármaco es seguro en embarazo"; la sección 4 dice "contraindicado en embarazo".
Respuestas y feedback
- Poisoning. Señal: el documento dice "preliminares, sin revisar" y el informe lo cita como conclusión firme y lo reusa — el dato contradice su fuente y se re-referencia. Evidencia: definición de Breunig (la alucinación/error que entra y se referencia repetidamente).
- Confusion. Señal: tool equivocada (
buscarporescribir_seccion) con 50 tools cargadas y contexto en el turno 4; el catálogo grande más el contexto corto descartan distraction. Evidencia: Less is More (46→19 tools; "it fails to select the correct one"). - Distraction. Señal: repetición de
leer("doc_88")cinco veces con el contexto a 80K, y elleerdevuelve el documento correcto (descarta el bug de tool). Evidencia: Gemini 2.5 en Pokémon >100K, "repeating actions from its vast history" (apéndice del Gemini 2.5 report, vía Breunig). - Clash. Señal: sección 1 ("seguro en embarazo") contra sección 4 ("contraindicado en embarazo") — dos partes del mismo informe se contradicen. Evidencia: Laban et al. (arXiv:2505.06120), sharded instructions, caída media 39%, o3 98,1→64,1.
Si fallaste la 2 o la 3, el patrón es el de siempre: distraction (historial propio) vs confusion (contenido ajeno). Si en la 3 dijiste "bug de tool", ojo: aquí el leer funciona, devuelve el documento correcto — el modelo lo repite por saturación, no por error. La trampa de la lección era cuando la tool falla de forma determinista; aquí no falla.
2.8Conecta
Ya tienes el vocabulario que el resto del curso da por sabido. Cuatro nombres, cuatro evidencias, cuatro líneas de traza que los delatan.
Esto no es taxonomía por coleccionar. Cada modo apunta a una palanca distinta — y por eso clasificar bien es lo que decide qué arreglas. Adelanto del mapa síntoma→palanca que N1 formaliza:
1MODO SÍNTOMA EN LA TRAZA PALANCA (N1)
2─────────────────────────────────────────────────────────────
3poisoning error que entra y se re-cita validar / write
4distraction repite su propio historial compress
5confusion elige mal en menú grande select
6clash dos partes se contradicen isolateNo memorices el mapa todavía: en N1 verás por qué cada palanca ataca su modo. Por ahora te vale con entender la lógica — diagnóstico distinto, tratamiento distinto.
Y hay un motivo concreto para dominar esto ahora. La rúbrica del checkpoint C0, dimensión 3, te pide exactamente esto. Clasificar los fallos de Magallanes en los cuatro modos, cada uno justificado con su traza. Es el ensayo de tu entregable.
Volviendo a los tres runs del principio: ya no son "tres veces el mismo bug". Son poisoning (RUN-C), distraction (RUN-A) y un anticipo de confusion (RUN-B) — tres enfermedades, tres palancas. Hoy aprendiste a leer la traza; en N1 empiezas a curarla.
2.9Reflexiona
Cierra con tres preguntas. Escribir la respuesta consolida más que releer.
- Sin mirar la lección: nombra los cuatro modos y, para cada uno, la pregunta diagnóstica que le harías a una traza.
- ¿Cuál par te sigue costando distinguir — poisoning/clash o distraction/confusion? Nómbralo: eso dirige tu repaso.
- Piensa en un sistema LLM que hayas tocado (o visto fallar). ¿Reconoces alguno de estos cuatro modos en retrospectiva? ¿Cuál, y qué línea de su traza lo habría delatado?
Referencia rápida
1LOS CUATRO MODOS (Breunig, "How Long Contexts Fail", 22 jun 2025)
2
3poisoning un error entra al contexto y se re-referencia
4 → pregunta: ¿un dato contradice SU FUENTE y se reusa?
5 evidencia: definición de Breunig
6
7distraction el contexto crece tanto que el modelo repite su
8 historial en vez de sintetizar
9 → pregunta: ¿repite algo de SU historial, contexto grande?
10 evidencia: Gemini 2.5 en Pokémon >100K (Gemini 2.5
11 report, vía Breunig)
12
13confusion contenido superfluo degrada la respuesta / selección
14 → pregunta: ¿elige mal entre opciones que YO metí?
15 evidencia: Less is More, 46→19 tools (arXiv:2411.15399)
16
17clash información acumulada que entra en conflicto consigo misma
18 → pregunta: ¿dos piezas del contexto se contradicen?
19 evidencia: Laban et al. arXiv:2505.06120, sharded
20 instructions, −39% media, o3 98,1→64,1
21
22DIFERENCIAL distraction = ruido PROPIO (historial)
23 confusion = ruido AJENO (tools/docs que metiste)
24 NO es contexto = error determinista + contexto corto