Há um padrão que vemos em quase todo sistema com agentes IA que está em produção há mais de seis meses: uma pasta chamada evals/ com 40 cenários escritos com entusiasmo na semana dois, e um last_run.json de antes da última mudança de prompt.
Isto não é uma suíte de evals. É um screenshot de uma reunião de março.
O problema dos dois trabalhos
Quando uma suíte de evals vive fora do CI, acaba servindo dois trabalhos que puxam em direções opostas:
- Convencer você de que o sistema funciona (rodar uma vez, demo, arquivar)
- Pegar regressões antes dos usuários (rodar em cada mudança, bloquear releases)
O primeiro recompensa minúcia — escrever 200 casos cobrindo cada borda. O segundo recompensa velocidade — rodar em menos de cinco minutos ou ninguém vai esperar.
Fora do CI, a suíte tende a derivar para o primeiro trabalho, porque o segundo não tem nada que o force. O resultado é uma suíte impressionante de demonstrar e inútil na prática.
O que "no CI" realmente significa
Três coisas concretas, em ordem de custo:
- Um subconjunto roda em cada PR. Escolha 20–40 casos rápidos e de alta cobertura. Devem terminar em menos de 90 segundos e bloquear o merge se falharem.
- A suíte completa roda à noite contra a branch main. Falhas paginam alguém — não o on-call de plantão, o dono do prompt.
- Deltas de pontuação são rastreados ao longo do tempo. Não só pass/fail. Uma regressão de 4% em precisão de citação que não falha um gate hard ainda é uma regressão.
O do meio — falhas paginam um dono — é a parte que times pulam e depois se perguntam por que a derivação se acumula.
O que entregamos com cada sistema
Um target pnpm eval (ou equivalente) que roda o subconjunto rápido localmente em menos de dois minutos. Uma GitHub Action que roda a mesma coisa no PR. Um nightly que roda o conjunto completo contra os prompts de produção. E um dashboard com dois gráficos: taxa de aprovação por tag e taxa de aprovação ao longo do tempo.
Só isso. Nada nessa lista é novidade. A novidade é que está conectado desde o dia um e continua conectado depois que saímos.
Por que isto funciona
Engenheiros não escrevem evals para sistemas que não os exigem. A suíte de evals não é um artefato moral, é uma peça estrutural da pirâmide de testes. Coloque-a onde o resto dos testes vivem.