Manuel Conde — Blog
← Todos os artigos

· 5 min de leitura

O que me faz confiar num PR escrito por um agente?

Sobre a pergunta que fica de fora das verificações automáticas, quando integro uma alteração escrita por um agente: se ela entrega o que anuncia e não introduz problemas novos.

Capa genérica: Tecnologia

A verificação automática responde-me a quase tudo o que preciso de saber sobre uma alteração escrita por um agente. Fica de fora o que decide a integração: ela faz o que diz que faz?

Introduzi há algum tempo agentes de IA nos meus projetos de software. Atualmente raramente escrevo código: os agentes escrevem, e a decisão continua a ser minha. O número de alterações que chegam para eu aprovar cresceu, e durante algum tempo tratei isso como um problema de leitura: demasiado código para o tempo que tenho. Procurei resolver o que me parecia ser o sintoma. Mas percebi que estava a olhar para o lado errado. O problema não é a minha capacidade de ler código: é a minha capacidade de o rever com o nível de detalhe que me permite ter confiança de que a alteração entrega o que anuncia e não introduz problemas novos. Ler mais depressa talvez pudesse resolver, mas não me é humanamente possível, e ler tudo linha a linha também não.

Uma alteração chega em regra com uma descrição: o que vai mudar, porque é que muda, o que se espera do resultado. Isso por si já vale: uma descrição coerente diz-me qual era a intenção anunciada. Mas quem a escreve é quem fez o trabalho, e uma afirmação assim não prova que o trabalho lhe corresponde. Quando quem escreve é uma pessoa com quem trabalho, a descrição faz parte de uma conversa. Pergunto, discuto, ela hesita onde é preciso hesitar, e muitas vezes o que falta à descrição sai daí. Quando quem escreve é um agente, a descrição chega com a mesma segurança e sem ninguém do outro lado para duvidar dela. O texto é limpo, o raciocínio parece completo, e resta-me verificar se corresponde ao que foi feito.

É aqui que a verificação automática me deixa a meio caminho. O check verde que aparece no PR diz-me que os controlos que eu configurei aceitaram aquela execução. Fica aquém em dois pontos. O primeiro: se o que entrou corresponde ao que foi anunciado. O segundo: o que entrou sem ser anunciado, como a alteração que faz mais do que prometeu, a dependência que ninguém pediu, a superfície nova que passou a existir sem que o texto a mencionasse. Ambas as faltas vivem entre a descrição e o diff.

Uso o meu blog como exemplo, sem pretender que seja representativo: é um projeto pequeno, de uma pessoa, que serve para publicar texto. O que nele interessa são as decisões, e o circuito está montado de ponta a ponta, do rascunho à integração. O que tenho hoje é isto: uma verificação determinística da língua, que trava a integração; rascunhos e propostas de alteração escritos por agentes; dois revisores automáticos, com modelos de fornecedores diferentes entre si, que leem o diff em separado e cujos achados ficam registados no PR; e a decisão de integrar reservada a mim. Este conjunto resolveu-me uma parte considerável do problema, e vale a pena dizer o motivo: é a parte que se deixa decidir por regras. Ortografia, gramática, testes, build. Um controlo que dá sempre o mesmo resultado para o mesmo texto é aquilo em que me apoio sem pensar, e isso retira do meu juízo tudo o que não precisa de juízo.

O que falta exige julgar intenção, e isso não se resolve com mais regras. A minha própria configuração mostra onde fica o limite. Verifiquei-a antes de escrever estas linhas: para integrar, o repositório exige dois controlos, a build com os testes e a verificação da língua. Nenhum deles compara o diff com a descrição. Os dois revisores automáticos são o que mais se aproxima dessa comparação, mas não são condição para integrar, porque o repositório não exige revisões. E a própria verificação da língua, com as suas exceções, pode ser alterada na mesma proposta que beneficia dela. Traduzido: o check verde que vejo no PR prova-me que os controlos passaram, e não me diz se a alteração entrega o que anuncia.

Não é só um problema de quem usa agentes: é um problema de quem constrói sozinho ou numa equipa pequena. Numa equipa maior, é mais provável que haja um segundo par de olhos: alguém que conhece a parte do sistema que o autor não conhece, alguém a quem se pergunta «isto mexe no quê?» e que responde de memória. Quando se está sozinho, a revisão que responde pela decisão ou é minha ou não existe. Com agentes a escrever, a pergunta continua a poder ser feita, e a resposta chega depressa. O que não existe é quem responda por ela, porque ninguém tem nada a perder por estar errado. O que sobra é uma descrição que ninguém defende perante mim. Não é desconfiança das pessoas. É a ausência de uma pessoa.

O que faço, quando não tenho como responder com regras, é ler o diff à procura das premissas que ninguém escreveu: a distância entre o que foi anunciado e o que foi feito, e a distância entre o que foi feito e o que era necessário. Procuro as decisões que ninguém declarou, e que só se veem quando o trabalho já está feito, não as linhas que deixei de ler. É lento e não escala, e é por isso que o volume me incomoda.

Escrevo isto sem ter o processo resolvido, porque passei a desconfiar da ideia de que a verificação automática substitui a confiança. Ela responde ao que lhe pedi para verificar, e nada mais. O resto continua a ser meu: decidir o que exijo para aprovar, e escrevê-lo, porque quando se constrói sozinho não há mais ninguém para o fazer.

Temas