Voltar as noticias
Reformulei a instalação da minha ferramenta 'git blame para IA' — seis etapas se tornaram uma
MCP ProtocolAltaEN

Reformulei a instalação da minha ferramenta 'git blame para IA' — seis etapas se tornaram uma

Dev.to - MCP·30 de abril de 2026

Uma semana atrás, eu lancei Selvedge, um servidor MCP que captura por que os agentes de IA mudam o código. O primeiro post no dev.to expôs o problema; este é o que aconteceu desde então.

Um contexto rápido se você perdeu o primeiro: os agentes de IA escrevem código com total intenção no momento, e então a sessão termina e a intenção se vai. O Selvedge captura essa intenção ao vivo, pelo agente, enquanto ainda está em contexto. Então, seis meses depois, você pode perguntar selvedge blame users.email e obter uma frase real sobre por que a coluna existe.

O lançamento original foi bem. Algumas centenas de instalações, um punhado de estrelas, um post em cada um dos dev.to e HN que converteu melhor do que eu esperava. Nada dramático. Mas a forma como as pessoas desistiram foi instrutiva, e é sobre isso que a versão v0.3.4 que lancei neste fim de semana trata principalmente.

A instalação era o gargalo e eu estava me enganando

Eu sabia que a instalação não era ótima. A primeira versão do README te guiava por seis coisas:

  1. pip install selvedge
  2. cd seu-projeto && selvedge init
  3. Abra ~/.claude/config.json e adicione um bloco mcpServers.selvedge. Espero que você tenha acertado o JSON.
  4. Abra o CLAUDE.md do seu projeto (ou crie um). Cole o prompt do sistema que diz ao agente para chamar log_change sempre que tocar em uma coluna, função, variável de ambiente ou dependência.
  5. selvedge install-hook para que o post-commit possa vincular eventos a commits.
  6. Reinicie o Claude Code, porque a configuração do MCP não faz hot-reload.

Quatro idas e vindas entre o README e seu editor. Um desses passos — o número três — é "editar um arquivo JSON à mão", o que mata a curiosidade em cerca de oito segundos. E o número cinco, o hook de post-commit, falhou silenciosamente no macOS quando você fez um commit através de um cliente GUI como Tower ou GitKraken, porque o git é iniciado com um PATH reduzido e selvedge não está nele. Eu escrevi selvedge doctor na v0.3.2 especificamente por causa desse bug. O bug existiu porque a instalação não revelou que o hook estava lá para falhar.

O que realmente aconteceu nas métricas de instalação é aproximadamente o que você esperaria. As pessoas pip install-aram. Algumas rodaram selvedge init. Uma fração muito menor chegou ao ponto em que tool_calls começaram a chegar ao servidor, que é a única coisa que realmente me importa. A edição do JSON e a edição do CLAUDE.md são onde está o abismo.

De qualquer forma. A v0.3.4 colapsa tudo isso em um comando:

pip install selvedge
cd seu-projeto
selvedge setup

O assistente lê ~/.claude/config.json, ~/.cursor/mcp.json, e procura por .github/copilot-instructions.md — qualquer um desses que você realmente tiver, ele configura. Ele escreve a entrada do MCP. Ele coloca o bloco do prompt do sistema no seu CLAUDE.md ou .cursorrules, entre colchetes sentinela, para que na próxima vez que eu atualizar o bloco recomendado você possa re-executar selvedge prompt --install e ele atualiza no lugar sem perturbar o resto do seu arquivo. Ele executa selvedge init. Ele instala o hook. Ele escreve um .bak ao lado de cada arquivo que toca antes que qualquer mudança chegue ao disco, para que se ele fizer uma chamada errada você possa reverter.

Executar novamente em um projeto já configurado é uma operação sem efeito. Para pessoas rodando em CI ou no postCreateCommand do devcontainer.json: selvedge setup --non-interactive --yes.

É isso. As partes "interessantes" do Selvedge — a captura de raciocínio ao vivo, o histórico em nível de entidade, os conjuntos de mudanças — são inúteis se ninguém passar pela instalação. Seis passos manuais estavam queimando todos que de outra forma teriam tentado. Um comando não está.

Sobre não estar sozinho na categoria mais

A outra coisa que mudou desde o post de lançamento: o espaço de "git blame para IA" ficou rapidamente lotado. AgentDiff, Origin, Git AI, BlamePrompt — todas ferramentas reais, todas ativas, várias delas apoiadas por equipes conhecidas. Quando postei o primeiro artigo há uma semana, eu tinha basicamente um concorrente direto que eu sabia. Agora eu tenho quatro ou cinco.

Isso é realmente bom. Significa que o problema é real o suficiente para que mais de uma pessoa decidisse trabalhar nele. Mas isso significa que eu devo ser específico sobre o que é diferente, porque se você ler o README de cada ferramenta isoladamente, você concluiria razoavelmente que todas estão fazendo a mesma coisa.

A coisa que é realmente diferente é quando o raciocínio é capturado.

Fonte do raciocínio Granularidade Mecanismo
Selvedge Capturado ao vivo, pelo agente no mesmo contexto que produziu a mudança Entidade (coluna DB, tabela, variável de ambiente, dependência, rota de API, função) Servidor MCP — o agente o chama enquanto o trabalho acontece
AgentDiff Inferido post-hoc por Claude Haiku a partir do diff no final da sessão Linha Hook de pré/pós-commit do Git
Origin Capturado no momento do commit Linha Hook do Git
Git AI Metadados de atribuição Linha Hook do Git + aliança Agent Trace
BlamePrompt Apenas prompt Linha Hook do Git

A maioria dessas ferramentas espera até o momento do commit e então pede a um segundo LLM para olhar o diff e explicar o que mudou. Essa é uma abordagem razoável e a saída parece boa à primeira leitura. Mas não é o raciocínio real que o agente teve — o agente teve o prompt, o histórico da conversa, o pedido real do usuário e a interpretação de tudo isso por um modelo. O explicador post-hoc não tem nada disso. Ele tem o diff. Portanto, gera algo plausível.

Plausível nem sempre é certo. Se você migrou de INTEGER cents para DECIMAL(10,2) porque um usuário relatou erros de arredondamento em transações internacionais, essa é a razão real. Se um segundo LLM olhar para o diff meses depois, ele escreverá algo como "melhorou a precisão para valores monetários" — verdadeiro em um sentido genérico, inútil quando você está tentando descobrir quais moedas você deve testar em regressão na próxima vez.

O raciocínio do Selvedge é o que o agente que fez a mudança escreveu. Vem da mesma janela de contexto que produziu a mudança. Não há segundo modelo e nenhuma inferência. E porque é o que o agente tinha, um campo reasoning vazio é uma informação útil — significa que o agente não tinha intenção explícita para aquela mudança, que é honestamente o caso que você mais quer saber.

Atribuição de entidades, brevemente

A outra coisa que é um pouco diferente: a maioria das ferramentas atribui linhas. O Selvedge atribui coisas. Quando você investiga algo em seu código, você não procura "linhas 40 a 48 de users.py", você procura "users.email" ou "STRIPE_SECRET_KEY" ou "/api/v1/checkout". Então é isso que o Selvedge armazena:

users.email           Coluna DB
users                 Tabela DB
src/auth.py::login    Função em um arquivo
api/v1/users          Rota de API
deps/stripe           Dependência
env/STRIPE_SECRET_KEY Variável de ambiente

selvedge diff users retorna eventos para users, users.email, e qualquer outra coisa sob users.. O mesmo para qualquer prefixo.

Eu fui e voltei sobre se eu deveria continuar ou não.

Contexto Triplo Up

O Selvedge pode ajudar empresas brasileiras a entender melhor as mudanças de código feitas por agentes de IA, capturando a intenção em tempo real. Isso pode melhorar a manutenção de software e a colaboração entre equipes. A simplificação do processo de instalação pode aumentar a adoção de ferramentas de IA no desenvolvimento.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.