Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔍 Code Review Crew

Un sistema multi-agente basado en CrewAI que analiza repositorios de GitHub automáticamente y genera un informe PDF completo con hallazgos de seguridad, rendimiento y calidad de código.


¿Cómo funciona?

El sistema orquesta cinco agentes especializados que trabajan en secuencia y en paralelo:

Explorador ──► Analista de Seguridad ─┐
               Ingeniero de Rendimiento ├──► Documentador ──► PDF
               Inspector de Calidad   ─┘
Agente Rol
Explorador Clona el repo, mapea la estructura y asigna archivos a cada especialista
Analista de Seguridad Detecta vulnerabilidades OWASP, inyecciones, exposición de datos, etc.
Ingeniero de Rendimiento Identifica cuellos de botella, problemas N+1, fugas de memoria, etc.
Inspector de Calidad Revisa convenciones, principios SOLID, DRY, documentación, etc.
Documentador Consolida todos los hallazgos y genera el informe PDF

El informe final incluye puntuación global, resumen ejecutivo, hallazgos categorizados con fragmentos de código y correcciones sugeridas, plan de acción priorizado y puntos positivos del proyecto.


Requisitos previos

  • Python 3.10+
  • Git instalado en el sistema
  • Token de GitHub (recomendado para evitar límites de la API)
  • Acceso a un LLM compatible con LiteLLM (OpenAI, Anthropic, Azure, etc.)

Instalación

1. Clona este repositorio

git clone https://github.com/tu-usuario/code-review-crew.git
cd code-review-crew

2. Crea un entorno virtual

python -m venv .venv
source .venv/bin/activate        # Linux / macOS
.venv\Scripts\activate           # Windows

3. Instala las dependencias

pip install -r requirements.txt

4. Configura las variables de entorno

Crea un archivo .env en la raíz del proyecto:

# LLM
API_BASE=https://api.openai.com/v1       # o la URL de tu proveedor
API_KEY=sk-...                           # tu clave de API

# GitHub (opcional pero recomendado)
GITHUB_TOKEN=ghp_...

El API_BASE y API_KEY se pasan directamente a LiteLLM, por lo que son compatibles con cualquier proveedor soportado (OpenAI, Azure OpenAI, Anthropic, Ollama, etc.).

Si no configuras GITHUB_TOKEN, la herramienta de metadatos funcionará con límites de rate más bajos de la API pública de GitHub.


Uso

python main.py <url-del-repositorio>

Ejemplos

python main.py https://github.com/pallets/flask
python main.py https://github.com/psf/requests
python main.py https://github.com/tu-usuario/tu-repo

El informe PDF se guarda automáticamente en:

reports/review_<nombre-del-repo>.pdf

Estructura del proyecto

code-review-crew/
├── main.py                  # Punto de entrada
├── crew.py                  # Orquestación de agentes y tareas
├── agents.py                # Definición de los agentes
├── tasks.py                 # Definición de las tareas
├── requirements.txt
├── .env                     # Variables de entorno (no subir a git)
│
├── config/
│   ├── agents.yaml          # Roles, objetivos y backstories de los agentes
│   └── tasks.yaml           # Descripciones y outputs esperados de cada tarea
│
├── tools/
│   ├── gitHub_tools.py      # Herramientas de clonado y lectura de repos
│   └── pdf_tool.py          # Generador del informe PDF con ReportLab
│
└── reports/                 # PDFs generados (se crea automáticamente)

Importante: los archivos agents.yaml y tasks.yaml deben estar dentro de una carpeta config/. Asegúrate de que la estructura de directorios sea correcta antes de ejecutar.


Personalización

Cambiar el modelo LLM

En agents.py, modifica el bloque LLM:

self.llm = LLM(
    model="openai/gpt-4o",         # cualquier modelo soportado por LiteLLM
    base_url=os.getenv("API_BASE"),
    api_key=os.getenv("API_KEY"),
    temperature=0.2,
)

Ajustar los límites de archivos analizados

En config/tasks.yaml, cada tarea tiene una instrucción Máximo 15 archivos por especialista. Puedes aumentarlo o reducirlo según tu presupuesto de tokens.

Extensiones de código analizadas

En tools/gitHub_tools.py, la variable CODE_EXTENSIONS define qué tipos de archivo se incluyen en el árbol. Añade o elimina extensiones según el stack de tu proyecto.


Dependencias principales

Paquete Uso
crewai Framework multi-agente
litellm Capa de abstracción para LLMs
PyGithub API de GitHub (metadatos)
reportlab Generación del PDF
python-dotenv Carga de variables de entorno
pyyaml Lectura de configuración YAML

Limitaciones conocidas

  • El análisis depende de la calidad del LLM configurado. Modelos más potentes producen hallazgos más precisos.
  • Repositorios muy grandes (>500 archivos de código) pueden exceder los límites de contexto. El explorador prioriza los archivos más relevantes (máx. 15 por agente).
  • El clonado es superficial (--depth=1), por lo que el historial de commits no está disponible para análisis.
  • El GITHUB_TOKEN es necesario para repositorios privados.

Licencia

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages