Middleware
El harness te ahorra escribir el loop. El middleware te devuelve el control dentro de ese loop, sin tener que reescribirlo.
La documentación lo define como la forma de "controlar más de cerca lo que ocurre dentro del agente", mediante hooks que corren antes y después de cada uno de esos pasos.
Se pasa como una lista:
from langchain.agents import create_agent
from langchain.agents.middleware import SummarizationMiddleware, HumanInTheLoopMiddleware
agent = create_agent(
model="gpt-5.5",
tools=[...],
middleware=[
SummarizationMiddleware(...),
HumanInTheLoopMiddleware(...)
],
)
Los que vienen incluidos
Con nombre propio en la documentación: SummarizationMiddleware y HumanInTheLoopMiddleware.
Y además, referidos por capacidad: selector de herramientas por LLM, reintento de herramientas, fallback de modelo, límites de tasa y detección de PII.
Esa lista dice mucho sobre qué problemas aparecen de verdad al llevar un agente a producción. Ninguno es "el modelo no es lo bastante inteligente". Son: la conversación se hace muy larga, una herramienta falla, el proveedor se cae, te pasás de cuota, y se te escapan datos personales.
Cómo pensarlo
Un middleware no cambia lo que el agente puede hacer — eso son las herramientas. Cambia cómo lo hace: qué ve el modelo, qué se intercepta, qué requiere una persona antes de seguir.