Verboo Code: como ver o que o agente mudou com /diff antes do commit
Voltar para o Blog
Artigoverboo codetutorialdev toolshow toagente de programação

Verboo Code: como ver o que o agente mudou com /diff antes do commit

Mafra21 de outubro de 20265 min de leitura

O agente passou dez minutos editando o projeto e respondeu "pronto". Antes do commit, você quer saber exatamente o que mudou, e de preferência qual pedido seu causou cada mudança. O /diff da Verboo Code mostra as duas coisas sem sair da sessão: tudo o que está sem commit no repositório e, separado, o que cada turno da conversa editou.

O que o /diff faz na Verboo Code?

Abre um diálogo com as mudanças ainda não commitadas, calculadas com git diff HEAD, e uma aba para cada turno da conversa em que o agente editou arquivo. Você navega pela lista de arquivos e abre o diff de cada um com cores de adição e remoção, sem abrir outro terminal.

Como revisar as mudanças do agente, passo a passo?

Dentro da sessão, digite:

/diff

O diálogo abre com o título Uncommitted changes (git diff HEAD) e um resumo como 4 files changed +87 -12. Embaixo vem a lista de arquivos. Os atalhos são estes:

TeclaNa lista de arquivosDentro de um arquivo
↑ / ↓Seleciona o arquivo(sem efeito)
EnterAbre o diff do arquivo(sem efeito)
← / →Troca a origem: Current, T3, T2...← volta para a lista
EscFecha o diálogoVolta para a lista
Fluxograma do /diff na Verboo Code: /diff abre Uncommitted changes, a origem Current mostra git diff HEAD, setas e Enter abrem um arquivo; com setas laterais você troca para o diff por turno T3, T2, T1, um por mensagem sua, só com edições Edit/Write
O /diff abre em Current, que é tudo sem commit. As setas laterais trocam para o diff de cada turno da conversa.

Como ver só o que um pedido específico mudou?

Use as setas ← e → na lista. Quando algum turno da conversa editou arquivo, aparece um seletor no topo, por exemplo Current · T3 · T2 · T1, com o turno mais recente primeiro. Cada turno começa numa mensagem sua, e o título mostra o número e o começo do seu pedido, cortado em 30 caracteres, como Turn 3 "adiciona validação no formulá…".

Isso resolve o caso clássico: o agente mexeu em seis arquivos ao longo de três pedidos e um teste quebrou. Em vez de ler o diff inteiro, você abre T2 e vê só o que o segundo pedido alterou. Turno sem edição de arquivo não aparece no seletor.

Armadilha: o diff por turno só enxerga edição feita pelas ferramentas de arquivo. Ele monta cada turno a partir dos resultados das ferramentas de edição e escrita de arquivo (Edit e Write). Se o agente mudou arquivo por comando de terminal, como sed -i, npm run format, prettier --write ou um gerador de código, essa mudança não aparece no turno. Ela aparece em Current, porque ali quem calcula é o git. Na dúvida, compare os dois:

# o que o git vê, independente de como foi editado
git diff HEAD --stat

Se um arquivo está no --stat e em nenhum turno, foi alterado por comando, não pela ferramenta de edição.

Por que o /diff diz "Working tree is clean" se eu tenho mudanças?

Porque Current mostra essa mensagem sempre que o git não devolve diff, e não só quando o repositório está limpo. Confira os quatro casos abaixo antes de achar que o agente não salvou nada:

SituaçãoO que o /diff mostra em CurrentO que fazer
Merge, rebase, cherry-pick ou revert em andamentoWorking tree is clean, de propósito: as mudanças ali vêm de outro branch, não do agenteTermine ou aborte a operação (git rebase --continue, git merge --abort) e abra o /diff de novo
Repositório sem nenhum commitWorking tree is clean, porque git diff HEAD falha sem HEADFaça o primeiro commit; até lá use os turnos (←/→)
Pasta fora de um repositório gitWorking tree is cleangit init, ou revise pelos turnos
Repositório muito grande, git demora mais de 5 segundosPode vir vazio, porque cada chamada ao git tem limite de 5 segundosgit diff HEAD --stat direto no terminal

Quais são os limites do /diff?

O diálogo foi feito para revisão rápida, não para diff gigante. Os limites estão no código da CLI:

CasoComportamento
Mais de 50 arquivos alteradosA lista mostra só os 50 primeiros; o resumo do topo continua com o total real
Mais de 500 arquivos alteradosMostra só os totais e a mensagem Too many files to display details
Arquivo com mais de 400 linhas alteradasMarcado (truncated), com diff truncated (exceeded 400 line limit) no fim
Diff de um arquivo acima de 1 MBLarge file - diff exceeds 1 MB limit
Arquivo binárioBinary file - cannot display diff
Arquivo novo, ainda não rastreadoAparece como (untracked), sem conteúdo, com a dica Run `git add <arquivo>` to see line counts.

Arquivo novo ignorado pelo .gitignore não entra na lista. Para ver o conteúdo de um arquivo novo em Current, coloque ele no índice, porque o git diff HEAD compara o último commit com o que está no disco, staged ou não:

git add src/novo-modulo.ts

Feche e abra o /diff de novo: o diálogo calcula o diff quando abre, e o arquivo passa a aparecer com as linhas adicionadas. No diff por turno o arquivo novo já aparece completo, porque vem do próprio resultado da ferramenta de escrita.

Achei uma mudança errada no /diff. Como desfaço?

Depende de onde ela veio. Se foi o último pedido, o /rewind volta a conversa e o código para antes daquele turno. Se é um arquivo só, o git resolve sem mexer na conversa:

# descarta a mudança de um arquivo rastreado
git restore src/auth/login.ts

Se a ideia é testar outra abordagem sem perder a atual, /branch bifurca a conversa antes de você pedir a alternativa.

Revisar turno a turno funciona melhor com pedidos pequenos: um pedido, uma mudança, um T no seletor. Na Verboo Code os planos rodam com token ilimitado, então quebrar a tarefa em dez pedidos curtos custa o mesmo que mandar tudo num só.

Gostou deste artigo?
Compartilhe conhecimento com sua rede.
// Leia também

Artigos relacionados