Executando verificação de segurança...
7

Pitch: 🚀 Commia: Automatizando Mensagens de Commit com Inteligência Artificial

GitHub do Projeto | Commia no NPM

Oi, pessoal! Recentemente desenvolvi uma CLI chamada Commia. A ideia por trás dessa ferramenta é bem simples: automatizar a criação de mensagens de commit usando inteligência artificial. Se você, assim como eu, às vezes perde tempo tentando pensar na mensagem perfeita para um commit, a Commia pode ser uma grande ajuda!

De Onde Veio a Ideia?

Tudo começou quando eu vi uma ferramenta que fazia algo parecido, mas usava a API da OpenAI com o ChatGPT. Achei muito legal, mas percebi que, com o tempo, os custos podiam começar a pesar, especialmente com o dólar nas alturas.

Com tempo acabei conhecendo algumas ferramentas bem interessantes: o Ollama e a SDK da Vercel. Eles permitem rodar modelos de IA localmente, sem custos extras, o que me pareceu a solução perfeita.

Entendendo as Ferramentas

Ollama

O Ollama é uma ferramenta incrível que permite que você rode modelos de IA diretamente no seu computador. Isso significa que não preciso me preocupar com chamadas a APIs externas ou custos adicionais. O modelo que escolhi usar por padrão na Commia é o LLaMA 3.1, mas você pode trocar por outros modelos se quiser.

Por usar uma inteligência artificial localmente, o tempo para a criação do commit vai depender muito da máquina que está utilizando e do modelo que você escolher. Na minha máquina (com wsl), que tem um I5 de 9ª geração e uma placa de vídeo GTX 1650 com 4 GB de RAM, e usando o modelo LLaMA 3.1, o tempo chegou a 01:20s com muitas alterações.

SDK da Vercel

Já a SDK da Vercel facilitou muito a comunicação com as IAs. Como eu optei por fazer a CLI em JavaScript, a SDK da Vercel caiu como uma luva, já que é super fácil de integrar em projetos Node.js. Com ela, consegui fazer a integração com o Ollama de forma rápida e eficiente.

Interagindo com o Git

Para fazer a Commia realmente funcionar, precisei que ela interagisse com o Git, e foi aí que o simple-git entrou em cena. Essa biblioteca facilita bastante as operações com Git via Node.js, e foi essencial para que a Commia pudesse adicionar alterações ao stage e realizar os commits automaticamente.

Como Instalar e Usar a Commia

1. Pré-requisitos

Antes de instalar a Commia, você precisa configurar algumas ferramentas:

  • Ollama: Para usar a Commia, instale o Ollama na sua máquina. O Ollama é uma API que permite a comunicação com uma IA localmente. Siga as instruções no site oficial: Ollama - Official Site.

  • Modelos de IA: Após instalar o Ollama, faça o download do modelo de IA que deseja utilizar. Por padrão, a Commia usa o modelo LLaMA 3.1, que pode ser baixado com o comando:

    ollama pull llama3.1
    

    Se quiser usar um modelo diferente, certifique-se de fazer o download do modelo desejado usando o comando ollama pull <nome-do-modelo>.

2. Instalando a Commia

Depois de configurar o Ollama e o modelo de IA, instale a CLI Commia globalmente com npm:

npm install commia --global

Você também pode usar outros gerenciadores de pacotes como yarn ou pnpm.

3. Usando a Commia

  1. No diretório do seu projeto que já possui um repositório Git iniciado, adicione todas as alterações ao stage com o comando:

    git add .
    
  2. Agora, gere uma mensagem de commit e realize o commit automaticamente usando o comando:

    commia ia
    

A Commia irá gerar a mensagem de commit, realizar o commit automaticamente, e você poderá dar push para o repositório remoto.

4. Opções da Commia

  • --lang <lang>: Define o idioma da mensagem de commit (padrão: "en-US").
  • --model <model>: Define o modelo de IA a ser usado para gerar o texto. Por padrão, a Commia utiliza o modelo LLaMA 3.1. Lembre-se de fazer o pull do modelo escolhido usando o Ollama antes de utilizá-lo.
  • -h, --help: Exibe a ajuda para o comando.

5. Exemplo de Uso

Para gerar uma mensagem de commit utilizando o modelo LLaMA 3.1:

commia ia --lang pt-BR --model llama3.1

Ou, para utilizar um outro modelo suportado pelo Ollama:

  1. Primeiro, faça o download do modelo desejado:

    ollama pull <nome-do-modelo>
    
  2. Depois, utilize a Commia especificando o modelo:

    commia ia --model <nome-do-modelo>
    

Se a flag --model não for passada, o modelo LLaMA 3.1 será usado por padrão.

Melhoria Futuras

Embora a Commia já seja funcional e facilite bastante o processo de commit, pensei em algumas melhorias que podem ser adicionadas nas próximas versões:

  1. Editar a Mensagem de Commit Antes de Committar: Atualmente, a mensagem gerada é utilizada diretamente. Seria interessante permitir que o usuário edite a mensagem antes de confirmar o commit.

  2. Adicionar Arquivos ao Stage Automaticamente: Implementar uma flag que permita ao usuário adicionar todos os arquivos ao stage ou escolher quais arquivos adicionar antes de criar o commit.

  3. Commits Separados por Arquivo: Uma funcionalidade que poderia ser útil é a capacidade de criar um commit separado para cada arquivo modificado, criado ou apagado. Isso ajudaria a manter um histórico de commits mais granular e organizado.

  4. arquivo de configurações: um aquivo onde pode salvar as configurações da CLI.

Publicação no NPM

Depois de algumas horas de desenvolvimento, consegui terminar uma versão funcional da Commia e publiquei no NPM. O nome "Commia" é uma junção de "COMMIT" e "IA", refletindo bem o propósito da ferramenta.

Se você quiser conferir ou usar a Commia, é só acessar o NPM: Commia no NPM.

Conclusão

Desenvolver a Commia foi um desafio divertido e gratificante. Agora, com a ajuda da IA, não preciso mais quebrar a cabeça para pensar em boas mensagens de commit. E o melhor de tudo: tudo isso roda localmente, sem custos extras.

Se você também quer dar um upgrade no seu fluxo de trabalho com commits, te convido a experimentar a Commia. E, claro, se tiver alguma sugestão ou encontrar algum problema, fique à vontade para contribuir!

Abraços

Carregando publicação patrocinada...
1

desde que conheci o ollma, tenho prototipado algo assim para tfs online.
em breve (sei la quando :) ) deve dar a luz na internet algo assim.

e devo fazer algo pra rodar local também, na ideia de melhorar as mensagens dos commits para criar um release notes automatica a cada build empacotada do sistema.