stamatios
← Voltar ao feed
Lupa pairando sobre fluxo de mudanças de código com pequenas tags de IA brilhantes fixadas ao lado de cada linha, representando o visualizador Hunk
Dev & Engenharia · Open Source

Hunk: visualizador de diffs interativo com anotações de IA

resumo de ~3 min

Um visualizador de diffs voltado a revisão

Hunk é um visualizador de diffs para terminal descrito como “review-first”, pensado para conjuntos de mudanças produzidos por agentes de codificação. O projeto é construído sobre OpenTUI e Pierre diffs e distribuído sob licença MIT, com patrocínio da Modem. A página do repositório registra 8,6 mil estrelas, 259 forks, 669 commits, 70 issues e 68 pull requests.

Entre os recursos listados estão revisão de múltiplos arquivos com barra lateral de navegação, anotações de IA e de agentes exibidas ao lado do código, layouts automáticos divididos, empilhados e responsivos, modo de observação para recarregar automaticamente revisões de arquivos e de repositórios Git, além de suporte a teclado, mouse, pager e difftool do Git.

Instalação e requisitos

A instalação pode ser feita via npm com o pacote hunkdiff, por script de instalação para macOS e Linux, por Homebrew, mise ou Nix. O texto ressalva que usuários que instalaram anteriormente via modem-dev/tap devem desinstalar essa versão antes. Em x86-64, é exigida CPU com SSE4.2, citando Intel Nehalem de 2008 ou posterior e AMD Bulldozer de 2011 ou posterior; em arm64 não há piso de recursos de CPU. Para instalação via npm, requer Node.js 18 ou superior; os demais canais fornecem binário autônomo. Há suporte para macOS, Linux e Windows, e o recurso hunk update instala a versão mais recente conforme o gerenciador usado.

Integração com sistemas de controle de versão

O Hunk espelha comandos de diff do Git, mas abre o conjunto de mudanças em uma interface de revisão em vez de texto simples. Também detecta automaticamente checkouts de Jujutsu e Sapling, permitindo usar revsets nativos nesses ambientes. A detecção de VCS pode ser sobrescrita por configuração. O modo de observação permanece contínuo; revisões diretas de arquivos e baseadas em Git normalmente usam observação do sistema de arquivos, com polling periódico como fallback. Revisões em Jujutsu e Sapling atualmente usam polling em vez de observação do sistema de arquivos.

Fluxo com agentes

Para uso com agentes, o README orienta abrir o Hunk em outro terminal, pedir ao agente para carregar o arquivo de skill retornado por hunk skill path e usar essa skill na sessão ativa. Corpos de anotação STML mais ricos são experimentais e exigem iniciar a revisão com --experimental; anotações simples permanecem padrão.

Comparação, configuração e extensões

Uma tabela compara o Hunk com lumen, difftastic, delta, diff-so-fancy e diff. O Hunk figura como único com anotações inline de agente/IA e layout automático responsivo; difftastic é o único com diff estrutural. A configuração pode ser persistida em TOML, incluindo tema, modo, VCS, observação, números de linha, tabulação, quebra de linhas, barra lateral e anotações de agentes. Todas as teclas de atalho são comandos nomeados e remapeáveis.

O projeto inclui integração como pager para Git, Jujutsu e Sapling, com ressalva de que arquivos não rastreados só são incluídos automaticamente no carregador próprio do hunk diff. Há uma API de extensões experimental, que pode mudar de forma incompatível entre lançamentos menores. Extensões TypeScript podem contribuir com temas, backends de VCS, transformação do changeset, substituição da barra lateral por componente React e eventos de ciclo de vida. O projeto também publica componentes OpenTUI para embutir o renderizador de diffs em outros aplicativos.