Um assistente automatizado de revisão de código baseado em LLM. Monitora alterações em PR/MR através de Webhooks do GitHub/GitLab, utiliza IA para analisar o código e posta comentários automáticos no PR/MR, com suporte a múltiplos canais de notificação.
Devido a limitações do GitHub, não é possível incorporar diretamente um player de vídeo.
Principais Funcionalidades
Suporte a múltiplas plataformas: Integração com Webhooks do GitHub e GitLab para monitorar eventos de Pull Request / Merge Request.
Modos de revisão inteligente:
Revisão detalhada (/github_webhook, /gitlab_webhook): A IA analisa cada arquivo modificado para identificar problemas específicos. Os comentários são estruturados (ex: localização da linha, classificação do problema, gravidade, análise e sugestão) e postados individualmente no PR/MR. O modelo de IA gera saída em formato JSON, que é convertido em múltiplos comentários.
Revisão geral (/github_webhook_general, /gitlab_webhook_general): A IA faz uma análise holística de cada arquivo modificado e gera um comentário resumido em Markdown por arquivo.
Fluxo automatizado:
Posta automaticamente os comentários da revisão (múltiplos no modo detalhado, um por arquivo no modo geral).
Após revisar todos os arquivos, posta um comentário resumido no PR/MR.
Mesmo quando não encontra problemas, posta uma mensagem amigável de confirmação.
Processamento assíncrono das tarefas de revisão para resposta rápida ao Webhook.
Utiliza Redis para evitar revisões duplicadas do mesmo Commit.
Configuração flexível:
Configuração básica via variáveis de ambiente.
Painel de administração web (/admin) e API (/config/*) para gerenciar:
Webhook Secrets e Access Tokens de repositórios/projetos no GitHub/GitLab.
Parâmetros do LLM (API Key, Base URL, Model).
URLs de Webhook para notificações (WeCom, Webhook customizado).
Histórico de revisões pela IA.
Armazenamento persistente das configurações e resultados no Redis.
Notificações e registro:
Envia resumos das revisões (com links do PR/MR, informações de branch e resultados) para WeCom e Webhooks customizados.
Armazena resultados no Redis (expiração padrão de 7 dias), com visualização pelo painel e limpeza automática após fechamento/merge do PR/MR.
Deploy: Suporte a Docker ou execução direta da aplicação Python.
ADMIN_API_KEY - Senha do painel administrativo (padrão: change_this_unified_secret_key)
OPENAI_API_KEY - Chave da API da IA
REDIS_HOST - Endereço do Redis
Configuração
1. Variáveis de Ambiente (principais)
ADMIN_API_KEY: Obrigatório. Chave para proteger as interfaces administrativas (padrão: change_this_unified_secret_key - altere obrigatoriamente).
OPENAI_API_KEY: Obrigatório. Chave da API da OpenAI.
OPENAI_MODEL: (padrão: gpt-4o) Modelo da OpenAI a ser utilizado.
OPENAI_API_BASE_URL: (opcional) URL base da API da OpenAI (formato: http(s)://xxxx/v1) (padrão: https://api.openai.com/v1)
WECOM_BOT_WEBHOOK_URL: (opcional) URL do Webhook do bot WeCom.
REDIS_HOST: Obrigatório. Endereço do servidor Redis. Sem isso, o serviço não inicia.
REDIS_PORT: (padrão: 6379) Porta do Redis.
REDIS_PASSWORD: (opcional) Senha do Redis.
REDIS_DB: (padrão: 0) Número do banco de dados Redis.
REDIS_SSL_ENABLED: (padrão: true) Habilita SSL para conexão Redis. Defina false para desativar.
(Outras variáveis como SERVER_HOST, SERVER_PORT, GITHUB_API_URL, GITLAB_INSTANCE_URL etc. - consulte logs ou código-fonte.)
2. Painel Administrativo e API
Painel Administrativo (/admin): Interface web para:
Configurar Webhook Secrets e Access Tokens de repositórios/projetos.
Gerenciar parâmetros globais do LLM (API Key, Base URL, Model).
Definir URLs de Webhook para notificações (WeCom, Webhook customizado).
Visualizar histórico de revisões pela IA.
Todas as ações requerem autenticação via ADMIN_API_KEY.
API de Configuração: API RESTful (/config/*) para gerenciamento programático das configurações, também requer cabeçalho X-Admin-API-Key.
Persistência de Configurações:
Redis (obrigatório): Armazena configurações de repositórios/projetos, SHAs de commits processados e resultados das revisões (expiração em 7 dias, limpeza após fechamento/merge). Serviço depende totalmente do Redis.
Variáveis de Ambiente: Carregam configurações globais (LLM Key/URL, conexão Redis, Admin API Key). Alterações via painel têm efeito imediato, mas reinicializações recarregam das variáveis. Recomenda-se usar variáveis para configurações globais persistentes.
Como Usar
Inicie o serviço: Via Docker ou Python, com variáveis obrigatórias configuradas (ADMIN_API_KEY, OPENAI_API_KEY, REDIS_HOST etc.).
Configure repositórios/projetos: No painel (/admin) ou via API, adicione configurações para os repositórios/projetos alvo (Webhook Secret e Access Token com permissão para comentar em PR/MR).
Configure Webhooks: Nas configurações do repositório/projeto no GitHub/GitLab:
Payload URL: Endereço do seu serviço com o endpoint apropriado (ver abaixo).