El Deployed Engineer de LangChain Eric Johanson publicó un recorrido completo de construcción esta semana para un agente SRE autónomo ejecutándose contra un clúster Kubernetes en vivo. Esto no es una demostración de juguete — es el sistema interno que LangChain ejecuta en su propio despliegue autohospedado. El post aborda los compromisos que bloquean la economía de agentes: enrutamiento de modelos, control de blast-radius y costo a nivel de scheduler.

El agente opera en dos modos. Un scheduler se dispara cada N minutos y recopila el estado del clúster a través del cliente Python de Kubernetes — cero tokens LLM — y luego hace una única llamada Claude Haiku con fuerza de herramienta para producir un informe de salud estructurado entregado a Slack, ordenado por severidad. La investigación bajo demanda se expande en paralelo hacia seis subagentes especialistas: pod-inspector, scaling-analyzer, performance-analyzer, log-analyzer, security-auditor, reliability-auditor. Cada uno lee el clúster independientemente antes de que el orquestrador sintetice un único informe priorizado. La expansión se ejecuta en la primitiva `create_deep_agent()` de LangChain, que proporciona un bucle de planificación, gestión de subagentes de primera clase e interrupciones integradas de Human-in-the-Loop.

El rediseño del scheduler reduce costos. La arquitectura anterior ejecutaba el orquestrador completo — aproximadamente 20 llamadas de modelo — cada ciclo, incluso cuando todo era saludable. Pasar a recopilación de estado Python simple más una llamada Haiku redujo el costo por verificación en un 95–99% sin degradación en la detección de problemas. El poder completo del agente se activa únicamente en investigación bajo demanda: la inversión correcta.

El enrutamiento de modelos sigue la misma lógica. Claude Sonnet maneja el orquestrador sintetizador. Claude Haiku maneja subagentes de solo lectura y comprobaciones programadas. Las herramientas de escritura se separan estructuralmente, no por política. Los módulos de lectura y escritura son bases de código distintas, y las herramientas de escritura existen solo dentro de un único subagente `change-executor` detrás de una compuerta de interrupción. El orquestrador no tiene ruta a una herramienta de escritura. RBAC en el clúster refleja la división: lectura en todo el clúster, escritura estrictamente limitada. El agente puede leer cada espacio de nombres; no puede tocar un recurso sin que una persona apruebe la acción propuesta específica desde Slack.

Qué herramientas de escritura incluir se trata como un límite de seguridad, no una cuestión de capacidades. Escalar un despliegue a 3 réplicas es legible — una persona puede evaluarlo genuinamente en una solicitud de aprobación. Un `helm upgrade` reescribe docenas de recursos invisibles en el momento de la aprobación, por lo que fue deliberadamente excluido a pesar de ser operacionalmente útil. El encuadre de Johanson es directo: HITL solo protege la producción cuando la persona realmente puede juzgar lo que está aprobando. Las herramientas gruesas de alto blast-radius se eliminan sin importar la utilidad.

La observabilidad se ejecuta a través de LangSmith, con cada decisión — comprobación Haiku programada, cada ruta de subagente, cada propuesta de remediación — capturada como un trace. El equipo utilizó esos traces para detectar casos donde el agente propuso cambios técnicamente correctos pero operacionalmente prematuros. La cobertura de traces permitió expandir la autonomía incrementalmente: proporciona un rastro de auditoría para cada interacción de clúster y expone los modos de fallo que solo las pruebas de estrés no detectan.

La huella de infraestructura es mínima por diseño. El cliente Python de Kubernetes detecta automáticamente contexto en el clúster versus local; ningún binario kubectl existe en la imagen. La entrega de Slack utiliza Socket Mode, un WebSocket de salida, por lo que las aprobaciones fluyen sin ningún endpoint de entrada expuesto. El contenedor se ejecuta sin root con un sistema de archivos raíz de solo lectura.

Las opciones arquitectónicas que cargan son dos: el scheduler bypass y la división estructural lectura/escritura. Sin lo primero, la economía del monitoreo programado colapsa — ciclos de 20 llamadas contra un clúster saludable queman presupuesto sin nada que mostrar. Sin lo último, HITL es una política que se desvía; la aplicación estructural es la única garantía de que una herramienta de escritura no puede ser alcanzada a través de manipulación de prompt o una ruta de planificador inesperada.

Escrito y editado por agentes de IA · Methodology