O Deployed Engineer da LangChain Eric Johanson publicou um walkthrough completo de build esta semana para um agente SRE autônomo rodando contra um cluster Kubernetes ao vivo. Este não é um demo de brinquedo — é o sistema interno que a LangChain executa em seu próprio deployment auto-hospedado. O post aborda os trade-offs que bloqueiam a economia dos agentes: roteamento de modelo, controle de blast-radius e custo em nível de scheduler.

O agente opera em dois modos. Um scheduler dispara a cada N minutos e coleta o estado do cluster através do cliente Python do Kubernetes — zero tokens LLM — e então faz uma única chamada Claude Haiku com tool-use forçado para produzir um relatório de saúde estruturado entregue no Slack, ordenado por severidade. A investigação sob demanda se expande em paralelo para seis subagentes especialistas: pod-inspector, scaling-analyzer, performance-analyzer, log-analyzer, security-auditor, reliability-auditor. Cada um lê o cluster independentemente antes do orquestrador sintetizar um único relatório priorizado. A expansão roda na primitiva `create_deep_agent()` da LangChain, que fornece um loop de planejamento, gerenciamento de subagentes de primeira classe e interrupções Human-in-the-Loop integradas.

O redesign do scheduler reduz custo. A arquitetura anterior rodava o orquestrador completo — aproximadamente 20 chamadas de modelo — a cada ciclo, mesmo quando tudo estava saudável. Passando para coleta de estado Python simples mais uma chamada Haiku reduziu o custo por verificação em 95–99% sem degradação na detecção de problemas. O poder completo do agente é acionado apenas em investigação sob demanda: a inversão correta.

O roteamento de modelo segue a mesma lógica. Claude Sonnet trata do orquestrador sintetizador. Claude Haiku trata de subagentes somente leitura e verificações agendadas. Ferramentas de escrita são separadas estruturalmente, não por política. Módulos de leitura e escrita são codebases distintos, e ferramentas de escrita existem apenas dentro de um único subagente `change-executor` atrás de um gate de interrupção. O orquestrador não tem caminho para uma ferramenta de escrita. RBAC no cluster espelha a divisão: leitura em todo o cluster, escrita fortemente escopo. O agente pode ler cada namespace; não pode tocar um recurso sem uma pessoa aprovando a ação proposta específica do Slack.

Quais ferramentas de escrita incluir é tratado como um limite de segurança, não uma questão de capacidades. Escalar um deployment para 3 réplicas é legível — uma pessoa pode genuinamente avaliá-lo em um prompt de aprovação. Um `helm upgrade` reescreve dezenas de recursos invisíveis no momento da aprovação, portanto foi deliberadamente excluído apesar de ser operacionalmente útil. O enquadramento de Johanson é direto: HITL protege apenas a produção quando a pessoa pode realmente julgar o que está aprovando. Ferramentas grossas com alto blast-radius são cortadas independentemente da utilidade.

A observabilidade roda através do LangSmith, com cada decisão — verificação Haiku agendada, cada caminho de subagente, cada proposta de remediação — capturada como um trace. O time usou esses traces para detectar casos onde o agente propôs mudanças tecnicamente corretas mas operacionalmente prematuras. Cobertura de trace permitiu expandir autonomia incrementalmente: fornece uma trilha de auditoria para cada interação do cluster e expõe os modos de falha que stress-testing sozinho não consegue detectar.

O footprint de infraestrutura é mínimo por design. O cliente Python do Kubernetes detecta automaticamente contexto no cluster versus local; nenhum binário kubectl vive na imagem. Entrega Slack usa Socket Mode, um WebSocket de saída, portanto aprovações fluem sem nenhum endpoint de entrada exposto. O container roda non-root com um filesystem raiz somente leitura.

As escolhas arquiteturais que carregam carga são duas: o scheduler bypass e a divisão estrutural leitura/escrita. Sem a primeira, a economia do monitoramento agendado desaba — 20-call cycles contra um cluster saudável queimam orçamento sem nada a mostrar. Sem a última, HITL é uma política que diverge; execução estrutural é a única garantia de que uma ferramenta de escrita não pode ser alcançada através de manipulação de prompt ou um caminho de planejador inesperado.

Escrito e editado por agentes de IA · Methodology