Samuel Arendt

PAO corta o ruído dos testes PHP antes que ele ocupe o contexto

Uma suíte com mil testes pode gastar mais contexto descrevendo sucessos do que explicando uma falha. O PAO, biblioteca criada por Nuno Maduro, atua nesse ponto: detecta quando PHPUnit, Pest ou ParaTest está sendo executado dentro de um agente de código e substitui a apresentação feita para pessoas por uma resposta JSON compacta. No exemplo divulgado pelo projeto, 11.125 tokens de output caem para cerca de 20, redução de 99,8%.

O número é chamativo, mas o mecanismo é deliberadamente pequeno. A biblioteca entra pelo Composer, identifica ambientes como Claude Code, Cursor, Devin e Gemini CLI e altera o formato da saída. Não exige service provider nem configuração específica do Laravel. Também funciona em Symfony, Laminas e aplicações PHP sem framework, desde que a versão da ferramenta de testes seja compatível.

Essa simplicidade expõe um problema que ficou escondido quando o terminal era lido apenas por gente: boa parte do output de desenvolvimento comunica estado visual, não informação operacional.

O sucesso repetido também tem custo

Barras de progresso, pontos, cores, banners e uma linha por teste ajudam uma pessoa a perceber que o processo está vivo. Para um agente, milhares de confirmações carregam quase o mesmo significado: nada falhou. Ainda assim, cada caractere entra na janela de contexto, disputa atenção com o código e pode ser reenviado em interações seguintes.

O desperdício cresce de forma contraintuitiva. Uma suíte saudável, com muitos testes passando, pode gerar mais ruído que uma suíte pequena quebrada. Quanto mais a equipe investe em cobertura, maior fica a saída que o agente precisa atravessar até encontrar a informação acionável.

JSON compacto muda a unidade de leitura. Em vez de reproduzir a experiência do terminal, ele entrega estado, contagem e detalhes das falhas. Quando tudo passa, a resposta pode permanecer praticamente constante, independentemente do tamanho da suíte. Quando algo quebra, o payload cresce apenas onde existe diagnóstico.

Otimizar contexto começa antes do modelo

Times tentam economizar tokens escolhendo um modelo menor, resumindo prompts ou reduzindo documentação. Essas medidas atingem o raciocínio do agente. Filtrar output redundante age antes: remove informação que nunca deveria ter ocupado a conversa.

Essa distinção importa porque contexto não é apenas uma linha da fatura. Uma janela cheia pode empurrar para fora instruções, decisões anteriores e arquivos relevantes. O agente passa a repetir buscas ou perde uma restrição que estava clara no início. Um output mais curto melhora custo e preserva espaço para a tarefa.

O mesmo princípio vale fora dos testes. Linters com milhares de avisos repetidos, builds que imprimem cada arquivo copiado e comandos de infraestrutura que despejam respostas completas podem oferecer um modo para máquinas. A melhor interface nem sempre é um resumo em linguagem natural. Formato estruturado, estável e proporcional aos erros costuma ser mais útil.

Antes de instalar uma camada nova, vale verificar se a ferramenta já oferece --json, --quiet ou um reporter compacto. O PAO é interessante porque reúne essa adaptação para ferramentas PHP e ativa o comportamento conforme o consumidor, sem obrigar pessoas a abandonar a saída que conhecem.

Detecção automática exige uma saída de emergência

Mágica no autoloader reduz configuração, porém precisa ser observável. Um desenvolvedor investigando uma falha pode querer o output humano completo mesmo dentro de um ambiente reconhecido como agente. Uma integração de CI pode depender do formato anterior. A documentação e as versões suportadas precisam entrar na revisão antes de adoção ampla.

Também convém validar o conteúdo das falhas, não apenas o caso verde. Um reporter excelente quando tudo passa pode omitir stack trace, dataset ou comparação necessária quando um teste falha. O teste útil para a própria ferramenta é simples: provocar uma falha conhecida e conferir se o agente recebe arquivo, linha, expectativa, valor observado e código de saída correto.

A redução de tokens divulgada representa um cenário específico. O custo real varia por runner, plugins, quantidade de testes e tokenizador do modelo. A decisão não depende de reproduzir exatamente 99,8%. Se a saída cresce com sucessos repetidos, existe uma oportunidade mensurável.

Uma métrica melhor para ferramentas de agentes

Ferramentas de desenvolvimento costumam medir tempo de execução. Com agentes, duas outras medidas ganham valor: bytes produzidos e informação necessária para a próxima decisão. Um comando rápido que gera uma parede de texto pode atrasar o fluxo mais que alguns segundos adicionais de processamento.

Uma avaliação prática registra o output de uma suíte verde e de três falhas representativas antes e depois da mudança. Depois compara tokens, capacidade de diagnóstico e estabilidade do formato. Se o agente precisa rodar novamente com flags diferentes para entender cada erro, parte da economia desaparece.

O PAO propõe um padrão que outras ferramentas podem copiar sem conhecer nenhum modelo: saída humana como padrão, saída estruturada quando o consumidor é uma máquina e detalhes proporcionais à exceção. É uma intervenção estreita. Justamente por isso, consegue reduzir custo sem redesenhar a suíte, o prompt ou o processo de revisão.

Referências

#Agentes de IA, #Performance, #Qualidade de Software