Uso da Linha de Comando gac
June 22, 2026 · View on GitHub
English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | Tiếng Việt | Français | Русский | Español | Português | Norsk | Svenska | Deutsch | Nederlands | Italiano
Este documento descreve todas as flags e opções disponíveis para a ferramenta CLI uvx gac.
Índice
- Uso da Linha de Comando gac
Uso Básico
uvx gac init
# Depois siga os prompts para configurar seu provider, modelo e chaves de API interativamente
uvx gac
Gera uma mensagem de commit alimentada por LLM para alterações em stage e solicita confirmação. O prompt de confirmação aceita:
youyes- Prosseguir com o commitnouno- Cancelar o commitroureroll- Regenerar a mensagem de commit com o mesmo contextoeouedit- Editar a mensagem de commit. Por padrão, abre uma TUI in-place com keybindings vi/emacs. DefinaGAC_EDITORpara abrir o seu editor preferido (ex.,GAC_EDITOR=code gacpara VS Code,GAC_EDITOR=vim gacpara vim)- Qualquer outro texto - Regenerar com esse texto como feedback (ex:
make it shorter,focus on performance) - Entrada vazia (apenas Enter) - Mostrar o prompt novamente
Flags Principais do Fluxo de Trabalho
| Flag / Opção | Short | Descrição |
|---|---|---|
--add-all | -a | Fazer stage de todas as alterações antes do commit |
--stage | -S | Selecionar interativamente ficheiros para stage com TUI baseada em árvore |
--group | -g | Agrupar alterações em stage em múltiplos commits lógicos |
--push | -p | Push das alterações para o remoto após o commit |
--yes | -y | Confirmar commit automaticamente sem prompting |
--dry-run | Mostrar o que aconteceria sem fazer nenhuma alteração | |
--message-only | Exibir apenas a mensagem de commit gerada sem realizar o commit | |
--no-verify | Ignorar hooks pre-commit e lefthook ao fazer commit | |
--skip-secret-scan | Ignorar varredura de segurança para segredos nas alterações em stage | |
--no-verify-ssl | Ignorar verificação de certificado SSL (útil para proxies corporativos) | |
--signoff | Adicionar linha Signed-off-by à mensagem de commit (conformidade DCO) | |
--interactive | -i | Fazer perguntas sobre as alterações para melhores commits |
Nota: --stage e --add-all são mutuamente excludentes. Use --stage para selecionar interativamente quais ficheiros fazer stage, e --add-all para fazer stage de todas as alterações de uma vez.
Nota: Combine -a e -g (ou seja, -ag) para fazer stage de TODAS as alterações primeiro, depois agrupá-las em commits.
Nota: Ao usar --group, o limite máximo de tokens de saída é escalado automaticamente com base no número de arquivos sendo commitados (2x para 1-9 arquivos, 3x para 10-19 arquivos, 4x para 20-29 arquivos, 5x para 30+ arquivos). Isso garante que o LLM tenha tokens suficientes para gerar todos os commits agrupados sem truncamento, mesmo para grandes conjuntos de alterações.
Nota: --message-only e --group são mutuamente excludentes. Use --message-only quando quiser obter a mensagem de commit para processamento externo, e --group quando quiser organizar múltiplos commits dentro do fluxo de trabalho git atual.
Nota: A flag --interactive fornece contexto adicional ao LLM ao fazer perguntas sobre suas alterações, resultando em mensagens de commit mais precisas e detalhadas. Isso é especialmente útil para alterações complexas ou quando você quer garantir que a mensagem de commit capture o contexto completo do seu trabalho.
Personalização de Mensagens
| Flag / Opção | Short | Descrição |
|---|---|---|
--one-liner | -o | Gerar uma mensagem de commit de única linha |
--verbose | -v | Gerar mensagens de commit detalhadas com motivação, arquitetura e impacto |
--hint <text> | -h | Adicionar uma dica para guiar o LLM |
--model <model> | -m | Especificar o modelo para usar para este commit |
--language <lang> | -l | Sobrescrever o idioma (nome ou código: 'Spanish', 'es', 'zh-CN', 'ja') |
--scope | -s | Inferir um escopo apropriado para o commit |
--50-72 | Aplicar a regra 50/72 para formatação de mensagens de commit |
Nota: O flag --50-72 aplica a regra 50/72 onde:
- Linha de assunto: máximo 50 caracteres
- Linhas do corpo: máximo 72 caracteres por linha
- Isso mantém as mensagens de commit legíveis em
git log --onelinee na UI do GitHub
Você também pode definir GAC_USE_50_72_RULE=true no seu arquivo .gac.env para sempre aplicar esta regra.
Nota: Você pode fornecer feedback interativamente simplesmente digitando-o no prompt de confirmação - não há necessidade de prefixar com 'r'. Digite r para um reroll simples, e para editar a mensagem (TUI in-place por padrão, ou o seu $GAC_EDITOR se definido), ou digite seu feedback diretamente como torne mais curto.
Saída e Verbosity
| Flag / Opção | Short | Descrição |
|---|---|---|
--quiet | -q | Suprimir toda saída exceto erros |
--log-level <level> | Definir nível de log (debug, info, warning, error) | |
--show-prompt | Imprimir o prompt do LLM usado para geração de mensagem de commit |
Ajuda e Versão
| Flag / Opção | Short | Descrição |
|---|---|---|
--version | Mostrar versão do gac e sair | |
--help | Mostrar mensagem de ajuda e sair |
Exemplos de Fluxos de Trabalho
-
Fazer stage de todas as alterações e commit:
uvx gac -a -
Commit e push em um passo:
uvx gac -ap -
Gerar uma mensagem de commit de única linha:
uvx gac -o -
Gerar uma mensagem de commit detalhada com seções estruturadas:
uvx gac -v -
Adicionar uma dica para o LLM:
uvx gac -h "Refactor authentication logic" -
Inferir escopo para o commit:
uvx gac -s -
Agrupar alterações em stage em commits lógicos:
uvx gac -g # Agrupa apenas os arquivos que você já fez stage -
Agrupar todas as alterações (em stage + não em stage) e auto-confirmar:
uvx gac -agy # Faz stage de tudo, agrupa e auto-confirma -
Usar um modelo específico apenas para este commit:
uvx gac -m anthropic:claude-haiku-4-5 -
Gerar mensagem de commit em um idioma específico:
# Usando códigos de idioma (mais curto) uvx gac -l zh-CN uvx gac -l ja uvx gac -l es # Usando nomes completos uvx gac -l "Simplified Chinese" uvx gac -l Japanese uvx gac -l Spanish -
Dry run (ver o que aconteceria):
uvx gac --dry-run -
Obter apenas a mensagem de commit (para integração com scripts):
uvx gac --message-only # Saída: feat: add user authentication system -
Obter a mensagem de commit em formato de linha única:
uvx gac --message-only --one-liner # Saída: feat: add user authentication system -
Usar modo interativo para fornecer contexto:
uvx gac -i # Qual é o propósito principal dessas alterações? # Qual problema você está resolvendo? # Há detalhes de implementação para mencionar? -
Modo interativo com saída detalhada:
uvx gac -i -v # Fazer perguntas e gerar mensagens de commit detalhadas
Avançado
- Combine flags para fluxos de trabalho mais poderosos (ex:
uvx gac -ayppara fazer stage, auto-confirmar e push) - Use
--show-promptpara debugar ou revisar o prompt enviado ao LLM - Ajuste a verbosity com
--log-levelou--quiet - Use
--message-onlypara integração com scripts e workflows automatizados
Integração com scripts e processamento externo
A flag --message-only foi projetada para integração com scripts e workflows de ferramentas externas. Ela exibe apenas a mensagem de commit bruta, sem formatação adicional, spinners ou elementos extras de UI.
Casos de uso:
- Integração com agentes: Permitir que agentes de IA obtenham mensagens de commit e gerenciem os commits por conta própria
- VCS alternativos: Usar mensagens geradas com outros sistemas de controle de versão (Mercurial, Jujutsu, etc.)
- Workflows de commit personalizados: Processar ou modificar a mensagem antes de fazer o commit
- Pipelines de CI/CD: Extrair mensagens de commit para processos automatizados
Exemplo de uso em script:
#!/bin/bash
# Obter a mensagem de commit e usá-la com uma função de commit personalizada
MESSAGE=20 20 12 61 79 80 81 98 701 33 100 204 250 395 398 399 400uvx gac --message-only --add-all --yes)
git commit -m "$MESSAGE"
# Exemplo de integração em Python
import subprocess
def get_commit_message() -> str:
result = subprocess.run(
["gac", "--message-only", "--yes"],
capture_output=True,
text=True,
check=False,
)
return result.stdout.strip()
message = get_commit_message()
print(f"Generated message: {message}")
Principais características para uso em scripts:
- Saída limpa, sem formatação Rich ou spinners
- Ignora automaticamente os prompts de confirmação
- Nenhum commit real é feito no git
- Funciona com
--one-linerpara saída simplificada - Pode ser combinada com outras flags como
--hint,--model, etc.
Ignorando Hooks Pre-commit e Lefthook
A flag --no-verify permite ignorar quaisquer hooks pre-commit ou lefthook configurados no seu projeto:
uvx gac --no-verify # Ignorar todos os hooks pre-commit e lefthook
Use --no-verify quando:
- Hooks pre-commit ou lefthook estiverem falhando temporariamente
- Trabalhando com hooks demorados
- Fazendo commit de código em andamento que ainda não passa em todas as verificações
Nota: Use com cautela, pois esses hooks mantêm padrões de qualidade de código.
Varredura de Segurança
uvx gac inclui varredura de segurança integrada que detecta automaticamente segredos potenciais e chaves de API nas suas alterações em stage antes de qualquer chamada à API de IA. Se um segredo for detectado, o fluxo de trabalho é interrompido imediatamente — nenhuma chamada à API é feita. Isso garante que seus dados sensíveis nunca sejam enviados a nenhum modelo de IA. O varredor usa correspondência de padrões baseada em regex, não LLMs, portanto a varredura é rápida e executada inteiramente localmente.
Ignorando varreduras de segurança:
uvx gac --skip-secret-scan # Ignorar varredura de segurança para este commit
Para desativar permanentemente: Defina GAC_SKIP_SECRET_SCAN=true no seu arquivo .gac.env.
Quando ignorar:
- Fazer commit de código de exemplo com chaves placeholder
- Trabalhando com fixtures de teste que contêm credenciais falsas
- Quando você verificou que as alterações são seguras
Nota: O varredor usa correspondência de padrões baseada em regex (não LLMs) para detectar formatos comuns de segredos. Ele é executado antes de qualquer chamada à API de IA — se um segredo for encontrado, nenhuma chamada à API é feita. Sempre revise suas alterações em stage antes do commit.
Binary File Detection
uvx gac includes automatic detection of binary files in staged changes, preventing accidental commits of compiled files, images, and other binary assets that typically should not be in version control. The detector uses multiple strategies:
- Extension-based detection - Fast recognition of 60+ binary file types
- Null byte detection - Reliable indicator of binary content
- UTF-8 validity checking - Text files should be valid UTF-8 or ASCII
- Magic byte identification - Detects file types from file signatures
Supported binary types:
- Executables: .exe, .dll, .so, .dylib, .bin, .o, .obj, .lib, .a
- Archives: .zip, .tar, .gz, .bz2, .7z, .rar, .xz, .zst
- Images: .png, .jpg, .jpeg, .gif, .bmp, .ico, .svg, .tiff, .webp
- Media: .mp3, .wav, .ogg, .flac, .m4a, .aac, .mp4, .avi, .mkv, .mov, .wmv
- Fonts: .ttf, .otf, .woff, .woff2, .eot
- Documents: .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx
- Databases: .db, .sqlite, .sqlite3, .mdb, .accdb
- Compiled code: .class, .jar, .war, .ear, .pyc, .pyd, .pyo, .beam, .hi
When binary files are detected:
uvx gac
# Output:
# BINARY FILE WARNING: Binary files detected!
#
# • image.png
# Type: Image file
# Size: 2.3 MB
#
# Binary files should typically be excluded from version control.
# Use .gitignore to prevent accidental commits of binary files.
#
# Options:
# [a] Abort commit (recommended)
# [c] Continue anyway (you know what you are doing)
# [r] Unstage binary file(s) and continue
#
# Choose an option [a]:
Best practices:
-
Add binary patterns to .gitignore:
# Compiled files *.exe *.dll *.so *.dylib *.o *.a # Images *.png *.jpg *.jpeg *.gif # Archives *.zip *.tar.gz # Python *.pyc __pycache__/ -
Use Git LFS for large binary files that must be tracked:
git lfs track "*.psd" git lfs track "*.zip" -
Commit binary files only when necessary:
- Icons and assets that are part of the codebase
- Test fixtures that need to be versioned
- Documentation images
Note: Binary detection runs automatically during the commit workflow (similar to secret scanning). There is no flag to disable it, as binary files generally should not be committed unless there is a specific reason. If you need to commit a binary file, choose the "Continue anyway" option or ensure it is properly documented in your project guidelines.
Verificação de Certificado SSL
O flag --no-verify-ssl permite ignorar a verificação de certificado SSL para chamadas de API:
uvx gac --no-verify-ssl # Ignorar verificação SSL para este commit
Para configurar permanentemente: Defina GAC_NO_VERIFY_SSL=true no seu arquivo .gac.env.
Use --no-verify-ssl quando:
- Proxies corporativos interceptam tráfego SSL (proxies MITM)
- Ambientes de desenvolvimento usam certificados auto-assinados
- Você encontra erros de certificado SSL devido a configurações de segurança de rede
Nota: Use esta opção apenas em ambientes de rede confiáveis. Desativar a verificação SSL reduz a segurança e pode tornar suas solicitações de API vulneráveis a ataques man-in-the-middle.
Linha Signed-off-by (Conformidade DCO)
uvx gac suporta adicionar uma linha Signed-off-by às mensagens de commit, que é necessária para conformidade com o Developer Certificate of Origin (DCO) em muitos projetos de código aberto.
Adicionar signoff :
uvx gac --signoff # Adicionar linha Signed-off-by à mensagem de commit (conformidade DCO)
Para habilitar permanentemente : Defina GAC_SIGNOFF=true no seu arquivo .gac.env, ou adicione signoff=true à sua configuração.
O que faz :
- Adiciona
Signed-off-by: Seu Nome <seu.email@example.com>à mensagem de commit - Usa sua configuração git (
user.nameeuser.email) para a linha - Requerido para projetos como Cherry Studio, kernel Linux e outros que usam DCO
Configurar identidade git :
Certifique-se de que sua configuração git tenha o nome e email corretos :
git config --global user.name "Your Full Name"
git config --global user.email "your.email@example.com"
Nota : A linha Signed-off-by é adicionada pelo git durante o commit, não pela IA durante a geração da mensagem. Você não a verá na pré-visualização, mas estará no commit final (verifique com git log -1).
Notas de Configuração
- A maneira recomendada de configurar o gac é executar
uvx gac inite seguir os prompts interativos. - Já configurou o idioma e só precisa mudar de provider ou modelo? Execute
uvx gac modelpara repetir a configuração sem perguntas de idioma. - Usando Claude Code? Consulte o guia de configuração do Claude Code para instruções de autenticação OAuth.
- Usando ChatGPT OAuth? Consulte o guia de configuração do ChatGPT OAuth para instruções de autenticação baseada em navegador.
- Usando GitHub Copilot? Consulte o guia de configuração do GitHub Copilot para instruções de autenticação Device Flow.
- gac carrega configuração na seguinte ordem de precedência:
- Flags da CLI
- Nível de projeto
.gac.env - Nível de usuário
~/.gac.env - Variáveis de ambiente
Opções Avançadas de Configuração
Você pode personalizar o comportamento do gac com estas variáveis de ambiente opcionais:
GAC_EDITOR=code --wait- Substitui o editor usado quando você pressionaeno prompt de confirmação. Por padrão,eabre uma TUI in-place; definirGAC_EDITORalterna para um editor externo. Suporta qualquer comando de editor com argumentos. Flags de espera (--wait/-w) são inseridas automaticamente para editores GUI conhecidos (VS Code, Cursor, Zed, Sublime Text) para que o processo bloqueie até você fechar o arquivoGAC_ALWAYS_INCLUDE_SCOPE=true- Inferir e incluir automaticamente escopo nas mensagens de commit (ex:feat(auth):vs `feat:)GAC_ALWAYS_GROUPED=true- Usar sempre o modo de commits agrupados (equivalente a sempre passar o sinalizador-gou--group)GAC_VERBOSE=true- Gerar mensagens de commit detalhadas com seções de motivação, arquitetura e impactoGAC_USE_50_72_RULE=true- Sempre aplicar a regra 50/72 para mensagens de commit (assunto ≤50 caracteres, linhas do corpo ≤72 caracteres)GAC_SIGNOFF=true- Sempre adicionar linha Signed-off-by aos commits (para conformidade DCO)GAC_TEMPERATURE=0.7- Controlar criatividade do LLM (0.0-1.0, menor = mais focado)GAC_REASONING_EFFORT=medium- Controlar a profundidade de raciocínio/pensamento para modelos que suportam pensamento estendido (low, medium, high, max). Deixar não definido para usar o padrão de cada modelo. Enviado apenas para provedores compatíveis (estilo OpenAI; não Anthropic).GAC_MAX_OUTPUT_TOKENS=4096- Máximo de tokens para mensagens geradas (automaticamente escalado 2-5x ao usar--groupcom base no número de arquivos; substitua para ir mais alto ou mais baixo)GAC_WARNING_LIMIT_TOKENS=4096- Avisar quando prompts excederem esta contagem de tokensGAC_SYSTEM_PROMPT_PATH=/path/to/custom_prompt.txt- Usar um prompt de sistema personalizado para geração de mensagem de commitGAC_LANGUAGE=Spanish- Gerar mensagens de commit em um idioma específico (ex: Spanish, French, Japanese, German). Suporta nomes completos ou códigos ISO (es, fr, ja, de, zh-CN). Useuvx gac languagepara seleção interativaGAC_TRANSLATE_PREFIXES=true- Traduzir prefixos de commit convencionais (feat, fix, etc.) para o idioma alvo (padrão: false, mantém prefixos em inglês)GAC_SKIP_SECRET_SCAN=true- Desativar varredura de segurança automática para segredos nas alterações em stage (use com cautela)GAC_NO_VERIFY_SSL=true- Ignorar verificação de certificado SSL para chamadas de API (útil para proxies corporativos que interceptam tráfego SSL)GAC_DISABLE_STATS=true- Desativar o rastreamento de estatísticas de uso (nenhuma leitura ou gravação de arquivo de estatísticas; dados existentes são preservados). Apenas valores truthy desativam as estatísticas; definir comofalse/0/no/offmantém as estatísticas ativadas, o mesmo que deixar a variável indefinida
Veja .gac.env.example para um modelo de configuração completo.
Para orientação detalhada sobre criação de prompts de sistema personalizados, veja docs/CUSTOM_SYSTEM_PROMPTS.md.
Subcomandos de Configuração
Os seguintes subcomandos estão disponíveis:
uvx gac init— Assistente de configuração interativo para provedor, modelo e idiomauvx gac model— Configuração de provedor/modelo/chave API sem prompts de idioma (ideal para mudanças rápidas)uvx gac auth— Mostrar status de autenticação OAuth para todos os provedoresuvx gac auth claude-code login— Login no Claude Code usando OAuth (abre navegador)uvx gac auth claude-code logout— Logout do Claude Code e remover token armazenadouvx gac auth claude-code status— Verificar status de autenticação do Claude Codeuvx gac auth chatgpt login— Login no ChatGPT usando OAuth (abre navegador)uvx gac auth chatgpt logout— Logout do ChatGPT e remover token armazenadouvx gac auth chatgpt status— Verificar status de autenticação do ChatGPTuvx gac auth copilot login— Login no GitHub Copilot usando Device Flowuvx gac auth copilot login --host ghe.mycompany.com— Login no Copilot em uma instância do GitHub Enterpriseuvx gac auth copilot logout— Logout do Copilot e remover tokens armazenadosuvx gac auth copilot status— Verificar status de autenticação do Copilotuvx gac config show— Mostrar configuração atualuvx gac config set KEY VALUE— Definir chave de configuração em$HOME/.gac.envuvx gac config get KEY— Obter valor de configuraçãouvx gac config unset KEY— Remover chave de configuração de$HOME/.gac.envuvx gac language(ouuvx gac lang) — Seletor de idioma interativo para mensagens de commit (define GAC_LANGUAGE)uvx gac editor(ouuvx gac edit) — Seletor interativo de editor para a teclaeno prompt de confirmação (configura GAC_EDITOR)uvx gac diff— Mostrar git diff filtrado com opções para mudanças preparadas/não preparadas, cor e truncamentouvx gac serve— Iniciar o GAC como servidor MCP para integração com agentes de IA (transporte stdio)uvx gac stats show— Ver suas estatísticas de uso do gac (totais, sequências, atividade diária e semanal, uso de tokens, projetos principais com arquivos médios, modelos principais com velocidade e latência)uvx gac stats models— Estatísticas detalhadas para todos os modelos com detalhamento de tokens, velocidade, latência e gráficos latência por commituvx gac stats projects— Estatísticas para todos os projetos com detalhamento de tokens e arquivos médios por gacuvx gac stats recent— Últimos 10 gacs com tokens, velocidade, latência e arquivos por gac (-n 20para mais)uvx gac stats reset— Redefinir todas as estatísticas para zero (solicita confirmação)uvx gac stats reset model <model-id>— Redefinir estatísticas de um modelo específico (insensível a maiúsculas/minúsculas)
Modo Interativo
A flag --interactive (-i) melhora a geração de mensagens de commit do gac ao fazer perguntas direcionadas sobre suas alterações. Este contexto adicional ajuda o LLM a criar mensagens de commit mais precisas, detalhadas e contextualmente apropriadas.
Como Funciona
Quando você usa --interactive, o gac fará perguntas como:
- Qual é o propósito principal dessas alterações? - Ajuda a entender o objetivo de alto nível
- Qual problema você está resolvendo? - Fornece contexto sobre a motivação
- Há detalhes de implementação para mencionar? - Captura especificações técnicas
- Há breaking changes? - Identifica potenciais problemas de impacto
- Isso está relacionado a alguma issue ou ticket? - Conecta ao gerenciamento de projetos
Quando Usar o Modo Interativo
O modo interativo é especialmente útil para:
- Alterações complexas onde o contexto não é claro apenas pelo diff
- Trabalho de refactoring que se estende por múltiplos arquivos e conceitos
- Novas funcionalidades que exigem explicação do propósito geral
- Correções de bugs onde a causa raiz não é imediatamente visível
- Otimização de performance onde a lógica não é óbvia
- Preparação para code review - as perguntas ajudam você a pensar sobre suas alterações
Exemplos de Uso
Modo interativo básico:
uvx gac -i
Isso fará:
- Mostrar um resumo das alterações em stage
- Fazer perguntas sobre as alterações
- Gerar uma mensagem de commit com suas respostas
- Pedir confirmação (ou confirmar automaticamente quando combinado com
-y)
Modo interativo com alterações em stage:
uvx gac -ai
# Fazer stage de todas as alterações, depois fazer perguntas para melhor contexto
Modo interativo com hints específicos:
uvx gac -i -h "Migração de banco de dados para perfis de usuário"
# Fazer perguntas enquanto fornece um hint específico para focar o LLM
Modo interativo com saída detalhada:
uvx gac -i -v
# Fazer perguntas e gerar uma mensagem de commit detalhada e estruturada
Modo interativo com confirmação automática:
uvx gac -i -y
# Fazer perguntas mas confirmar o commit resultante automaticamente
Fluxo de Perguntas e Respostas
O workflow interativo segue este padrão:
- Revisão das alterações - gac mostra um resumo do que você está cometendo
- Responder perguntas - responda a cada prompt com detalhes relevantes
- Melhoria do contexto - suas respostas são adicionadas ao prompt do LLM
- Geração da mensagem - o LLM cria uma mensagem de commit com contexto completo
- Confirmação - revise e confirme o commit (ou automaticamente com
-y)
Dicas para respostas úteis:
- Conciso mas completo - forneça detalhes importantes sem ser excessivamente verboso
- Foque no "porquê" - explique o raciocínio por trás de suas alterações
- Mencione limitações - note limitações ou considerações especiais
- Conecte ao contexto externo - referencie issues, documentação ou documentos de design
- Respostas vazias são ok - se uma pergunta não se aplica, apenas pressione Enter
Combinação com Outras Flags
O modo interativo funciona bem com a maioria das outras flags:
# Fazer stage de todas as alterações e fazer perguntas
uvx gac -ai
# Fazer perguntas com saída detalhada
uvx gac -i -v
Melhores Práticas
- Use para PRs complexos - especialmente útil para pull requests que precisam de explicações detalhadas
- Colaboração em equipe - as perguntas ajudam você a pensar sobre alterações que outros revisarão
- Preparação de documentação - suas respostas podem ajudar a formar a base para release notes
- Ferramenta de aprendizado - as perguntas reforçam boas práticas de mensagens de commit
- Pule para alterações simples - para correções triviais, o modo básico pode ser mais rápido
Estatísticas de Uso
uvx gac rastreia estatísticas de uso leves para que você possa ver sua atividade de commits, sequências, uso de tokens, e projetos e modelos mais ativos. As estatísticas são armazenadas localmente em ~/.gac_stats.json e nunca são enviadas para nenhum lugar — não há telemetria.
O que é rastreado: execuções totais do gac, commits totais, tokens totais de prompt, output e raciocínio, datas de primeiro/último uso, contagens diárias e semanais (gacs, commits, tokens), sequência atual e mais longa, atividade por projeto (gacs, commits, tokens) e atividade por modelo (gacs, tokens).
O que NÃO é rastreado: mensagens de commit, conteúdo de código, caminhos de arquivos, informações pessoais ou qualquer coisa além de contagens, datas, nomes de projetos (derivados do remoto ou diretório git) e nomes de modelos.
Opt-in ou Opt-out
uvx gac init pergunta se você deseja ativar as estatísticas e explica exatamente o que é armazenado. Você pode mudar de ideia a qualquer momento:
- Ativar estatísticas: remova
GAC_DISABLE_STATSou defina comofalse/0/no/off/vazio. - Desativar estatísticas: defina
GAC_DISABLE_STATScomo um valor truthy (true,1,yes,on).
Quando você recusa as estatísticas durante uvx gac init e um ~/.gac_stats.json existente é detectado, será oferecida a opção de excluí-lo.
Subcomandos de Estatísticas
| Comando | Descrição |
|---|---|
uvx gac stats | Mostrar suas estatísticas (o mesmo que uvx gac stats show) |
uvx gac stats show | Exibir estatísticas completas: totais, sequências, atividade diária e semanal, uso de tokens, projetos principais, modelos principais |
uvx gac stats models | Estatísticas detalhadas para todos os modelos com detalhamento de tokens, velocidade, latência e gráficos latência por commit |
uvx gac stats projects | Estatísticas para todos os projetos com detalhamento de tokens e arquivos médios por gac |
uvx gac stats recent | Últimos 10 gacs (-n 20 para mais), com tokens, velocidade, latência e arquivos por gac |
uvx gac stats reset | Redefinir todas as estatísticas para zero (solicita confirmação) |
uvx gac stats reset model <model-id> | Redefinir estatísticas de um modelo específico (insensível a maiúsculas/minúsculas) |
Exemplos
# Veja suas estatísticas gerais
uvx gac stats
# Detalhamento de todos os modelos usados
uvx gac stats models
# Estatísticas de todos os projetos
uvx gac stats projects
# Histórico recente de gacs
uvx gac stats recent -n 20
# Redefinir todas as estatísticas (com confirmação)
uvx gac stats reset
# Redefinir estatísticas de um modelo específico
uvx gac stats reset model wafer:deepseek-v4-pro
O que você verá
Executar uvx gac stats exibe:
- Gacs e commits totais — quantas vezes você usou gac e quantos commits ele criou
- Sequência atual e mais longa — dias consecutivos com atividade gac (🔥 aos 5+ dias)
- Resumo de atividade — gacs, commits e tokens de hoje e desta semana vs seu pico diário e semanal
- Projetos principais — seus 5 repositórios mais ativos por contagem de gac + commits, com arquivos médios por gac e uso de tokens
- Modelos principais — seus 5 modelos mais usados com velocidade histórica, latência e uso de tokens
Executar uvx gac stats projects mostra todos os projetos (não apenas os 5 principais) com:
- Tabela de todos os projetos — cada projeto ordenado por atividade, com contagem de gac, contagem de commits, ratio de commits por gac, arquivos médios por gac, tokens de prompt, tokens de output, tokens de raciocínio, tokens totais e parcela do total de gacs
- Gráfico de barras de atividade — barras horizontais mostrando a contagem relativa de gacs por projeto
- Gráfico de barras de uso de tokens — barras horizontais mostrando o consumo relativo de tokens por projeto
Executar uvx gac stats models mostra todos os modelos (não apenas os 5 principais) com:
- Tabela de todos os modelos — cada modelo usado ordenado por atividade, com contagem de gac, contagem de commits, velocidade histórica (tokens/seg), latência histórica, tokens de prompt, tokens de output, tokens de raciocínio e tokens totais
- Gráfico de comparação de velocidade (30d) — um gráfico de barras horizontais de velocidades recentes (últimos 30 dias) dos modelos, ordenados do mais rápido ao mais lento, coloridos por percentil de velocidade (🟡 ultrarrápido, 🟢 rápido, 🔵 moderado, 🔘 lento)
- Gráfico de comparação de latência (30d) — um gráfico de barras horizontais de latência recente por chamada, ordenada da mais curta à mais longa
- Gráfico de latência por commit (30d) — um gráfico de barras horizontais de latência recente dividida por contagem de commits, mostrando tempo real de espera por commit (um modelo que faz 5 commits em um gac de 10s custa 2s/commit vs um que faz 1 commit em um gac de 25s a 25s/commit)
- Celebrações de recordes — 🏆 troféus quando você estabelece novos recordes diários, semanais, de tokens ou de sequência; 🥈 por empatá-los
- Mensagens de encorajamento — sugestões contextuais baseadas na sua atividade
Executar uvx gac stats recent mostra seus últimos 10 gacs (configurável com -n):
- Tabela de gacs recentes — cada gac com tempo relativo, projeto, modelo, contagem de commits, arquivos, velocidade, latência e detalhamento de tokens por gac
Desativar estatísticas
Defina a variável de ambiente GAC_DISABLE_STATS com um valor truthy:
# Desativar rastreamento de estatísticas
export GAC_DISABLE_STATS=true
# Ou em .gac.env
GAC_DISABLE_STATS=true
Valores falsy (false, 0, no, off, vazio) mantêm as estatísticas ativadas — o mesmo que deixar a variável indefinida.
Quando desativado, gac ignora todo registro de estatísticas — nenhuma leitura ou gravação de arquivo ocorre. Os dados existentes são preservados mas não serão atualizados até que você os reative.
Notificações de Webhook do Discord
gac pode notificar um canal do Discord toda vez que você fizer um commit, usando uma URL de webhook nas configurações de integração do seu canal. A integração é opt-in: não faz nada até que você configure explicitamente uma URL de webhook.
Configuração
Use o grupo de subcomandos discord dedicado:
uvx gac discord setup # configurar interativamente uma URL de webhook
uvx gac discord show # mostrar se um webhook está configurado (URL mascarada)
uvx gac discord test # enviar uma notificação de teste para o webhook configurado
uvx gac discord remove # remover a URL do webhook configurado
Alternativamente, defina a variável diretamente em $HOME/.gac.env(ou./.gac.env):
GAC_DISCORD_WEBHOOK_URL='https://discord.com/api/webhooks/XXXX/YYYY'
Comportamento
- Dispara após cada commit bem-sucedido (fluxos de trabalho individuais e agrupados). Ignorado em
--dry-rune--message-only. - Posta um embed estilo GitHub com uma faixa verde, repo + branch como linha de autor, o assunto do commit como título, o corpo do commit como descrição e o SHA curto no rodapé.
- Usa o avatar do gac e o nome de usuário
gac. - Falhas de webhook são registradas em WARNING e nunca bloqueiam seu commit.
- Deixe
GAC_DISCORD_WEBHOOK_URLnão definido (ou vazio) para desabilitar.gac initnão é afetado — a configuração do Discord vive apenas sobgac discord.
Obtendo Ajuda
- Para configuração do servidor MCP (integração com agentes de IA), veja docs/MCP.md
- Para prompts de sistema personalizados, veja docs/CUSTOM_SYSTEM_PROMPTS.md
- Para configuração OAuth do Claude Code, veja CLAUDE_CODE.md
- Para configuração OAuth do ChatGPT, veja CHATGPT_OAUTH.md
- Para configuração do GitHub Copilot, veja GITHUB_COPILOT.md
- Para solução de problemas e dicas avançadas, veja docs/TROUBLESHOOTING.md
- Para instalação e configuração, veja README.md#installation-and-configuration
- Para contribuir, veja docs/CONTRIBUTING.md
- Informações de licença: LICENSE