Un agente RAG (Retrieval Augmented Generation) inteligente que utiliza AWS Bedrock, ChromaDB y Claude 4 Sonnet para analizar repositorios de código y generar documentación técnica automáticamente.
- Vectoriza tu código fuente para búsqueda semántica inteligente
- Analiza automáticamente la estructura y funcionalidad del proyecto
- Genera documentación técnica profesional en formato Markdown
- Monitorea todo el proceso con logs detallados en tiempo real
Este proyecto utiliza Claude 4 Sonnet, el modelo más avanzado de Anthropic, que ofrece:
- Comprensión superior de código complejo y arquitecturas
- Análisis contextual profundo de patrones y dependencias
- Generación de documentación más precisa y detallada
- Razonamiento mejorado para identificar funcionalidades clave
Antes de comenzar, asegúrate de tener:
- Python 3.8 o superior instalado
- Cuenta de AWS con acceso a Amazon Bedrock
- Credenciales de AWS configuradas
- Git para clonar repositorios (opcional)
# Si tienes el proyecto en Git
git clone <url-del-repositorio>
cd docubot
# O simplemente descarga y extrae el ZIP# Crear entorno virtual
python -m venv venv
# Activar entorno virtual
# En Windows (PowerShell):
venv\Scripts\Activate.ps1
# En Windows (CMD):
venv\Scripts\activate.bat
# En Linux/Mac:
source venv/bin/activate# Instalar todas las dependencias
pip install -r requirements.txtDependencias principales:
chromadb- Base de datos vectorialboto3- Cliente AWS para Bedrocklangchain-aws- Integración LangChain con AWSlangchain-core- Núcleo de LangChainlanggraph- Framework para agentestiktoken- Tokenizaciónpython-dotenv- Variables de entorno
Crea un archivo .env en la raíz del proyecto:
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=tu_access_key_aqui
AWS_SECRET_ACCESS_KEY=tu_secret_key_aqui# Instalar AWS CLI si no lo tienes
pip install awscli
# Configurar credenciales
aws configure# Verificar que tienes acceso a los modelos necesarios
aws bedrock list-foundation-models --region us-east-1Modelos requeridos:
amazon.titan-embed-text-v1(para embeddings)us.anthropic.claude-sonnet-4-20250514-v1:0(para generación con Claude 4)
⚠️ Importante: Claude 4 Sonnet requiere acceso especial en AWS Bedrock. Asegúrate de:
- Solicitar acceso al modelo en la consola de AWS Bedrock
- Verificar que tu cuenta tiene los permisos necesarios
- Confirmar que el modelo está disponible en tu región
docubot/
├── repository/ # 👈 Coloca aquí tu código
│ └── tu-proyecto/
│ └── src/
│ ├── components/
│ ├── pages/
│ ├── utils/
│ └── ...
├── chroma_db/ # Se crea automáticamente
├── logs/ # Se crea automáticamente
├── vectorize_repo.py
├── agent.py
└── requirements.txt
# Crear directorio repository si no existe
mkdir -p repository
# Copiar tu proyecto (ejemplo)
cp -r /ruta/a/tu/proyecto repository/mi-proyecto
# O clonar desde Git
cd repository
git clone https://github.com/usuario/mi-proyecto.gitEste paso convierte tu código en vectores para búsqueda semántica.
# Vectorización básica (usa ./repository/sas-fa-web-frontend/src por defecto)
python vectorize_repo.py
# Vectorización personalizada
python vectorize_repo.py \
--repo-path "./repository/mi-proyecto/src" \
--chroma-dir "./chroma_db" \
--collection-name "mi_proyecto_code" \
--batch-size 10Parámetros disponibles:
--repo-path: Ruta al código fuente--chroma-dir: Directorio para ChromaDB--collection-name: Nombre de la colección--batch-size: Archivos por lote (ajustar según RAM)--aws-region: Región de AWS
¿Qué archivos procesa?
.ts,.tsx,.js,.jsx(React/TypeScript).json,.yaml,.yml(Configuración).css,.scss,.sass,.less(Estilos).html,.md,.mdx(Documentación)
Salida esperada:
2024-01-15 10:30:15 - INFO - Iniciando vectorización de: ./repository/mi-proyecto/src
2024-01-15 10:30:16 - INFO - Encontrados 245 archivos para procesar
2024-01-15 10:30:20 - INFO - Procesados 10/245 archivos
...
2024-01-15 10:35:42 - INFO - Vectorización completada:
2024-01-15 10:35:42 - INFO - - Archivos procesados: 245/245
2024-01-15 10:35:42 - INFO - - Total chunks creados: 1,847
Una vez vectorizado, ejecuta el agente documentador:
# Ejecutar agente documentador
python agent.pyEl agente automáticamente:
- 🔍 Analiza la estructura del proyecto con Claude 4
- 📊 Genera estadísticas detalladas del repositorio
- 📝 Crea documentación técnica por módulos
- 🔗 Genera índices y referencias cruzadas
- 📋 Identifica áreas sin documentar
- 🧠 Comprende patrones complejos y arquitecturas avanzadas
Abre una segunda terminal para monitorear en tiempo real:
# Monitor básico del log más reciente
python monitor_logs.py
# Solo mostrar actividad de herramientas
python monitor_logs.py --herramientas
# Filtrar por nivel de log
python monitor_logs.py --nivel INFO
# Ver estadísticas del proceso
python monitor_logs.py --stats
# Listar todos los logs disponibles
python monitor_logs.py --listar
# Monitorear un log específico
python monitor_logs.py --archivo logs/agente_documentador_20241215_143022.logDespués de ejecutar el agente, encontrarás:
📄 00_INDICE_DOCUMENTACION.md # Índice principal navegable
📄 01_resumen_general.md # Resumen ejecutivo del proyecto
📄 02_modulo_*.md # Documentación detallada por módulos
📄 99_resumen_puntos_sin_documentar.md # Áreas que necesitan atención
📁 chroma_db/ # Base de datos vectorial
📁 logs/ # Logs detallados del proceso
└── agente_documentador_YYYYMMDD_HHMMSS.log
El agente utiliza 13 herramientas especializadas:
- buscar_codigo: Búsqueda semántica inteligente
- buscar_referencias: Encuentra uso de funciones/variables
- analizar_importaciones: Mapea dependencias
- obtener_archivo: Lee contenido completo
- listar_directorio: Explora estructura
- encontrar_archivos: Busca por patrones
- obtener_metadatos_archivo: Información detallada
- estadisticas_repositorio: Métricas completas del proyecto
- escribir_markdown: Crea documentos estructurados
- crear_documentacion_repositorio: Documentación automática
- crear_reporte_analisis: Reportes profesionales
- agregar_contenido_markdown: Extiende documentos
- crear_indice_archivos: Genera índices navegables
# 1. Copiar proyecto
cp -r /mi/app/react repository/mi-app
# 2. Vectorizar
python vectorize_repo.py --repo-path "./repository/mi-app/src"
# 3. Documentar
python agent.py# Proyecto 1
python vectorize_repo.py \
--repo-path "./repository/proyecto1/src" \
--collection-name "proyecto1_code"
# Proyecto 2
python vectorize_repo.py \
--repo-path "./repository/proyecto2/src" \
--collection-name "proyecto2_code"# Reducir batch size para proyectos grandes
python vectorize_repo.py \
--repo-path "./repository/proyecto-grande/src" \
--batch-size 5 \
--max-workers 2Edita vectorize_repo.py línea ~70:
self.supported_extensions = {
'.ts', '.tsx', '.js', '.jsx', # React/TypeScript
'.vue', # Vue.js
'.svelte', # Svelte
'.py', # Python
'.java', '.kt', # Java/Kotlin
'.go', '.rs' # Go/Rust
}chunk_size=500, # Líneas por chunk
chunk_overlap=50, # Overlap entre chunks
max_tokens_per_chunk=2000 # Límite de tokens por chunkself.ignore_dirs = {
'node_modules', '.git', '.next', 'build', 'dist',
'coverage', '.nyc_output', 'tmp', 'temp',
'vendor', '__pycache__' # Añadir más según necesidad
}# Verificar que el entorno virtual está activo
pip list | grep chromadb
# Reinstalar si es necesario
pip install --upgrade chromadb# Verificar configuración AWS
aws configure list
# Configurar credenciales
aws configure
# O verificar variables de entorno
echo $AWS_ACCESS_KEY_ID# Verificar acceso a Bedrock en la consola AWS
# Ir a: AWS Console > Bedrock > Model access
# Solicitar acceso a los modelos necesariosPara Claude 4 específicamente:
- Ve a AWS Console > Bedrock > Model access
- Busca "Claude 4 Sonnet" en la lista
- Solicita acceso si no está habilitado
- Espera la aprobación (puede tomar unos minutos)
- Verifica que el modelo ID sea exactamente:
us.anthropic.claude-sonnet-4-20250514-v1:0
# Eliminar base de datos y recrear
rm -rf chroma_db/
python vectorize_repo.py# Reducir batch size
python vectorize_repo.py --batch-size 3 --max-workers 1# Verificar logs de vectorización
tail -f vectorization.log
# Verificar extensiones soportadas
grep "supported_extensions" vectorize_repo.pypython vectorize_repo.py --batch-size 20 --max-workers 8python vectorize_repo.py --batch-size 10 --max-workers 4python vectorize_repo.py --batch-size 5 --max-workers 2# En otra terminal, monitorear uso de memoria
watch -n 2 'ps aux | grep python'
# Monitorear logs en tiempo real
python monitor_logs.py --herramientas- ✅ Datos locales: Todo se procesa localmente
- ✅ AWS Bedrock: Solo se envían chunks de código (no archivos completos)
- ✅ Sin almacenamiento externo: ChromaDB es local
⚠️ Credenciales AWS: Mantén seguras tus credenciales⚠️ Código sensible: Revisa que no haya secretos en el código
- vectorization.log: Proceso de vectorización
- agente_documentador_*.log: Actividad del agente
- Logs en tiempo real: Via monitor_logs.py
- INFO: Eventos importantes
- DEBUG: Detalles técnicos
- WARNING: Situaciones de atención
- ERROR: Errores y excepciones
Para contribuir al proyecto:
- Fork el repositorio
- Crea una rama para tu feature
- Implementa mejoras
- Añade tests si es necesario
- Envía un Pull Request
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
Si encuentras problemas:
- Revisa los logs:
python monitor_logs.py --stats - Verifica configuración: AWS credentials, Python version
- Consulta troubleshooting: Sección de solución de problemas
- Abre un issue: Con logs y detalles del error
Ahora tienes todo lo necesario para:
- ✅ Vectorizar cualquier repositorio de código
- ✅ Generar documentación técnica automática
- ✅ Monitorear el proceso en tiempo real
- ✅ Personalizar según tus necesidades
¡Comienza documentando tu primer proyecto! 🚀