O problema de sempre: commits que não contam a história
Você já passou horas revisando um commit que diz apenas 'fix bug' ou 'update stuff'? É frustrante. A maioria das ferramentas que prometem commits automáticos com LLM faz o trivial: pega o diff, joga no modelo e pede uma mensagem. O resultado é genérico, sem contexto real. O git-courer chega para mudar isso: ele entende o código antes de escrever a mensagem. Não é só um wrapper de LLM – é uma camada Git que extrai significado estrutural.
O que é o git-courer
Git-courer é uma ferramenta open-source que funciona como um servidor MCP (Model Context Protocol) para Git. Ele retorna tudo em JSON – commits, diffs, status, branches. Mas o diferencial é o pipeline: antes de chamar o LLM, ele parseia a AST (Abstract Syntax Tree) do código com go-tree-sitter, constrói um grafo de dependências e classifica o tipo de mudança de forma determinística. Tudo em Go, sem depender do modelo para decisões estruturais. O LLM só escreve a mensagem final, com contexto enriquecido: o que mudou e por que, não apenas o que está no diff.
Como funciona na visão do operador
A arquitetura é dividida em três camadas. A primeira, em Go, usa go-enry para detectar linguagens e go-tree-sitter para parsear a AST. Ela gera um grafo de dependências dos arquivos staged, identificando funções novas, assinaturas modificadas, símbolos removidos. A segunda camada usa um LLM local (como Llama ou Ollama) para escrever a mensagem de commit a partir de um diff anotado. A terceira, opcional, pode usar um LLM na nuvem para tarefas mais pesadas, mas recebe um contexto comprimido em JSON – menos tokens, menos alucinações. Cada commit é atômico: uma área de stage gera um commit, com backup automático antes de qualquer operação destrutiva. Para reverter, um comando basta.
O custo? Se você já tem um LLM local rodando, o custo adicional é zero. O processamento em Go é leve – parsing de AST para um projeto médio leva milissegundos. A latência fica por conta do modelo local, mas a pipeline assíncrona minimiza espera. A ferramenta também cobre todo o ciclo: branch, merge, rebase, cherry-pick, PR review, release. Tudo retorna JSON, sem paginação, sem parsing de texto.
O que isso muda na prática
Quem usa git-courer ganha commits semanticamente ricos sem esforço manual. Para equipes que revisam PRs, a mensagem já vem com contexto de impacto: 'feat(auth): add OAuth2 token refresh' é mais útil que 'update auth'. A ferramenta também executa testes antes do commit, detecta conflitos de merge com anotações AST e gera changelogs automaticamente. Quem perde? Ferramentas tradicionais de commit automático baseadas só em diff – elas entregam pouco valor comparado ao parsing estrutural.
Ação prática: se você usa LLMs no fluxo de Git, teste o git-courer. Instale com um curl, configure o MCP para seu cliente (Cline, Continue, etc.) e veja a diferença nos commits. A instalação é simples: curl -fsSL https://raw.githubusercontent.com/blak0p/git-courer/main/scripts/install.sh | sh. Depois, configure com git-courer mcp setup.
Tensão: escala ou só muda o gargalo?
O git-courer resolve o problema de mensagens ruins, mas será que o parsing de AST escala para projetos gigantes? Em teoria, sim – go-tree-sitter é eficiente. Mas o grafo de dependências em repositórios monolíticos pode ficar complexo. Outro ponto: a ferramenta depende de um LLM local para escrever a mensagem. Se o modelo local for fraco, a mensagem pode ficar genérica. O valor real está na decisão determinística do tipo de mudança, não na redação. E se o LLM local não for suficiente, a opção de nuvem aumenta custo e latência. No fim, o git-courer move o gargalo do 'o que escrever' para 'como interpretar o contexto' – uma troca que vale a pena para quem prioriza precisão semântica.
Conclusão
Git-courer não é só mais um wrapper de LLM para commits. É uma camada que entende código do jeito certo: com AST e dependências. Se você já se frustrou com mensagens de commit que não dizem nada, essa ferramenta merece uma chance. O teste é rápido – e a melhora na qualidade dos commits é imediata. Vale o setup?
Nenhum comentário ainda. Seja o primeiro a comentar!
Deixe seu comentário