RepoBrain utiliza dos Swarms de Agentes especializados para impulsar su funcionalidad central:
- Refresh Swarm — Escanea el proyecto y genera artefactos de conocimiento
- Ask Swarm — Responde preguntas sobre el codebase usando la base de conocimiento generada
Estos swarms están definidos en engine/repobrain_engine/hub/agents.py e impulsados por refresh_pipeline.py y ask_pipeline.py.
Cuando ejecutas rb-refresh, el Refresh Swarm analiza tu codebase y genera un documento de convenciones del proyecto.
graph LR
Scan[Reporte de Escaneo] --> SA[ScanAnalyst]
SA --> AR[ArchitectureReviewer]
AR --> CW[ConventionWriter]
CW --> Doc[conventions.md]
Responsabilidad: Especialista en análisis de código enfocado en detección de lenguajes y frameworks
Analiza:
- Lenguajes de programación y su distribución (primarios vs secundarios)
- Frameworks y bibliotecas detectados (web, datos, ML, etc.)
- Observaciones de patrones y estilos de código (nomenclatura, estructura, idiomas)
- Enfoque de gestión de dependencias
Pasa el control a ArchitectureReviewer al completar.
Responsabilidad: Revisor de arquitectura de software
Analiza:
- Estructura de directorios del proyecto y patrones de organización
- Enfoque de pruebas, framework e indicadores de cobertura
- Configuración de pipeline CI/CD y automatización
- Configuración de Docker/contenedores
- Sistema de construcción y enfoque de empaquetado
- Patrones de gestión de configuración
Se basa en el análisis del agente anterior y añade hallazgos estructurales, luego pasa el control a ConventionWriter.
Responsabilidad: Especialista en redacción de documentación técnica
Produce: Usando TODO el análisis de los agentes anteriores, produce un documento de convenciones conciso (formato Markdown) que cubre:
- Lenguaje(s) y framework(s) principales
- Descripción general de la estructura del proyecto
- Observaciones de estilo de código
- Enfoque de pruebas
- Configuración CI/CD
Lo mantiene bajo 300 palabras, genera SOLO contenido Markdown.
- Código:
build_refresh_swarm()enengine/repobrain_engine/hub/agents.py - Pipeline:
engine/repobrain_engine/hub/refresh_pipeline.py - Almacenamiento: Conocimiento generado guardado en directorio
.repobrain/(en proyecto objetivo, no en este repo)
Cuando no hay API key configurada (RB_HOST_RUNNER establecido en codex o generic), Refresh usa un Agente de Convenciones de turno único sin herramientas (build_single_turn_convention_agent()) que colapsa la cadena de tres etapas en una sola generación.
Importante: El modo host-runner para refresh es de turno único solamente. No usa la cadena completa de handoff de tres agentes.
Cuando ejecutas rb-ask "pregunta", el Ask Swarm enruta tu pregunta al agente del módulo relevante y devuelve una respuesta con rutas de archivo y números de línea.
graph TD
User[Pregunta del Usuario] --> Router[Router Agent]
Router --> MA1[ModuleAgent: auth]
Router --> MA2[ModuleAgent: api]
Router --> MA3[ModuleAgent: database]
Router --> Git[GitAgent: historial git]
MA1 --> Router
MA2 --> Router
MA3 --> Router
Git --> Router
Router --> Answer[Respuesta Final + Citas]
Responsabilidad: Enrutamiento de preguntas y síntesis de respuestas
Flujo de Trabajo:
- Lee la pregunta del usuario
- Identifica módulo(s) relevante(s) basado en el mapa de estructura del proyecto
- Pasa el control al ModuleAgent apropiado
- Para preguntas relacionadas con git (cambios recientes, historial de commits), pasa el control a GitAgent
- Para preguntas entre módulos, pasa el control a un módulo primero; ese módulo puede pasar el control a otros según sea necesario
- Sintetiza los hallazgos de los agentes en una respuesta final
Requisitos de Respuesta:
- Comenzar con una respuesta directa a la pregunta
- Citar rutas de archivo específicas, números de línea y nombres de funciones
- Incluir historial de commits cuando explique el "por qué"
- Ser conciso (bajo 200 palabras a menos que la pregunta demande más)
Responsabilidad: Conocimiento profundo de un módulo específico
Cada módulo obtiene su propio agente con:
- Conocimiento del agente del módulo (
agents/*.md— resúmenes de módulos agrupados omodules/*.mdheredado) - Herramientas para explorar código (read_file, search_code, etc.)
- Capacidad de pasar el control a otros ModuleAgents para información entre módulos
Los ModuleAgents se crean dinámicamente en el camino de swarm heredado (un agente por módulo detectado). Cuando existen artefactos estructurados, el pipeline ask usa _ask_with_agent_md en su lugar, que enruta directamente vía map.md sin construir el swarm completo.
Responsabilidad: Historial de Git y análisis de cambios
Maneja preguntas sobre:
- Commits recientes y cambios
- Quién cambió qué
- Historial de cambios y justificación
- Información de blame
- Código: Lógica de construcción de Router y ModuleAgent en
engine/repobrain_engine/hub/agents.py - Pipeline:
engine/repobrain_engine/hub/ask_pipeline.py - Conocimiento: Lee del directorio de generación apuntado por
.repobrain/current.json
Cuando RB_HOST_RUNNER está configurado (codex o generic), Ask usa _ask_with_host_runner exclusivamente:
- Invocación CLI local única con contexto del proyecto y pregunta
- No construye Router/ModuleAgent/GitAgent ni realiza handoffs multi-agente
- Devuelve respuesta directa del CLI local (sin orquestación de swarm)
Los usuarios del modo sin API key deben entender que reciben una respuesta local de turno único, no la colaboración completa Router-Worker.
El pipeline de ask implementa un mecanismo de fallback sensible al contexto:
Cuando RB_HOST_RUNNER está configurado (codex o generic):
- Usa
_ask_with_host_runnerexclusivamente - No construye Router/ModuleAgent/GitAgent
- Invocación CLI local única sin enrutamiento multi-agente
Flujo ask estándar basado en API:
_ask_with_structured_facts(cuando.repobrain/map.mdyagents/*.mdexisten):- Primero intenta
_ask_with_agent_md— Enruta vía map.md al conocimiento de agent.md - Recurre a
_ask_with_legacy_factsdentro de la misma llamada — Usa*.facts.jsonheredado si está disponible
- Primero intenta
_ask_with_legacy_swarm— Fallback final cuando los artefactos estructurados no devuelven respuesta
Esto asegura que la funcionalidad ask permanezca disponible incluso si la base de conocimiento está parcialmente generada o usa formatos antiguos.
Para preguntas entre módulos en la ruta map.md / agents/*.md, los Reader
Agents trabajan en paralelo y un Synthesizer combina sus hallazgos. Si un lector
falla tras los reintentos o devuelve una salida vacía, se conservan los resultados
útiles y un aviso Partial answer identifica los módulos sin respuesta.
La respuesta explícita (not relevant) no cuenta como un fallo. Si la síntesis
falla o devuelve una salida vacía, se devuelven todas las respuestas útiles en
orden de enrutamiento y documento, con sus módulos y referencias originales,
indicando que los hallazgos no se han conciliado. Este fallback no realiza otra
llamada al modelo. Si ningún lector aporta resultados útiles, se mantiene la
cadena de fallback existente. Repite la pregunta para recuperar las respuestas
faltantes; esto es distinto de una base de conocimiento que necesita refrescarse.
-
Basado en API (estándar):
rb-setup # Elige OpenAI, DeepSeek, Groq, etc. -
Host-runner (sin API key):
# Preset Codex (configuración incorporada) export RB_HOST_RUNNER=codex # Generic runner (requiere plantilla RB_HOST_COMMAND) export RB_HOST_RUNNER=generic export RB_HOST_COMMAND='trae-cli exec --cd {workspace} --sandbox read-only --skip-git-repo-check --ephemeral -o {output_file}' export RB_HOST_OUTPUT_MODE=file # Usa IDE CLI con sesión iniciada, no se necesita API key
-
Endpoint personalizado compatible con OpenAI:
export OPENAI_BASE_URL=https://tu-endpoint.com/v1 export OPENAI_API_KEY=tu-key export OPENAI_MODEL=tu-modelo
Para árboles de trabajo limpios con cambios confirmados:
rb-refreshUsa el mismo comando para la primera construcción, nuevos commits y una tarea
interrumpida. RepoBrain construye, reanuda una tarea coincidente, actualiza los
grupos afectados o termina si la base ya está actualizada. rb-refresh --full
inicia una reconstrucción completa nueva. --workspace usa el directorio actual
por defecto; se requiere un árbol Git limpio.
En una actualización incremental:
- ImpactPlanner analiza git diff para determinar módulos afectados
- ImpactVerifier verifica el análisis de impacto
- Solo se actualizan los agent-groups afectados
- Acelera significativamente la iteración en codebases grandes
Implementación: engine/repobrain_engine/hub/incremental.py
# 1. Configurar backend
rb-setup
# 2. Escanear proyecto y construir base de conocimiento
rb-refresh
# 3. Verificar base de conocimiento
rb report # Muestra módulos detectados, lenguajes, etc.
# 4. Comenzar a hacer preguntas
rb-ask "¿Cómo funciona la autenticación?"# Hacer algunos cambios y confirmar
git add .
git commit -m "Actualizar lógica de auth"
# Actualización incremental rápida (solo módulos afectados)
rb-refresh
# Verificar actualizaciones
rb-ask "¿Qué cambió en el módulo auth?"# Preguntar con salida verbosa (progreso en streaming)
rb-ask "¿Dónde está la conexión de base de datos?"
# Verificar estado de actualización
rb report
# Forzar actualización completa (no incremental)
rb-refresh --full# Verificar si el SDK del Agente está instalado
pip show openai-agents
# Verificar configuración LLM
cat .env | grep OPENAI# Verificar estado de actualización
rb report
# Forzar actualización completa (no incremental)
rb-refresh --full
# Verificar logs de generación
ls -la .repobrain/
cat .repobrain/current.jsonPosibles causas:
- Base de conocimiento no generada o obsoleta → Ejecutar
rb-refresh - Módulo no detectado por el escáner → Verificar salida de
rb report - Pregunta enrutada al módulo incorrecto → Probar pregunta más específica
RepoBrain expone su funcionalidad central como herramientas MCP vía rb-mcp:
ask_project— Responder preguntas del codebaserefresh_project— Actualizar base de conocimiento
Implementación del servidor MCP: engine/repobrain_engine/hub/mcp_server.py
- Ejecutar
rb-refreshdespués de commits; selecciona actualización incremental automáticamente - Las exclusiones de escaneo están incorporadas (venv, node_modules, .git, etc. — ver
SKIP_DIRSenengine/repobrain_engine/hub/_constants.py) - Usar modelos más rápidos (ej., GPT-4o-mini o Claude 3.5 Haiku)
- Mantener base de conocimiento actualizada (ejecutar
rb-refreshregularmente) - Hacer preguntas específicas (mencionar nombres de archivos, características o módulos)
- Usar modelos de mayor capacidad para consultas complejas
engine/repobrain_engine/hub/agents.py— Definiciones de agentesengine/repobrain_engine/hub/refresh_pipeline.py— Flujo de actualizaciónengine/repobrain_engine/hub/ask_pipeline.py— Flujo de preguntasengine/repobrain_engine/hub/incremental.py— Actualización incrementalengine/repobrain_engine/hub/host_runner.py— Backend CLI localengine/repobrain_engine/hub/storage.py— Almacenamiento de conocimiento
- Filosofía del Proyecto — Límites del producto y alcance de soporte
- Características Zero-Config — Descubrimiento de herramientas y contexto
- Inicio Rápido — Instalación y primeros pasos
Siguiente: Características Zero-Config | Índice Completo