Skip to content

Latest commit

 

History

History
604 lines (458 loc) · 29.1 KB

File metadata and controls

604 lines (458 loc) · 29.1 KB
RepoBrain

RepoBrain

Motor de conocimiento de repositorios, portable entre IDEs, para Q&A de codebases con evidencia.

Anteriormente conocido como Antigravity Workspace Template — el mismo proyecto, nuevo nombre.

rb-refresh construye la capa de conocimiento portable; rb-ask enruta preguntas al contexto de módulo correcto y responde con evidencia de código. Plugins, CLI y MCP son canales de entrega alrededor de ese flujo.

Idioma: English | 中文 | Español

License Python CI DeepWiki NLPM


Cursor Claude Code Windsurf Gemini CLI VS Code Codex Cline Aider



Demo de rb-ask — respuestas fundamentadas con rutas de archivo y números de línea

Before vs After RepoBrain

¿Por qué RepoBrain?

El techo de capacidad de un AI Agent = la calidad del contexto que puede leer.

El motor es el núcleo: rb-refresh despliega un clúster multi-agente que lee tu código autónomamente — cada módulo obtiene su propio Agent que genera documentación de conocimiento. rb-ask enruta preguntas al Agent correcto, con respuestas basadas en código real con rutas de archivo y números de línea.

En vez de darle a Claude Code / Codex un grep del repositorio para que busque por su cuenta, dale un ChatGPT para tu repositorio.

Resultados principales en cuatro repositorios: 95.83% de precisión semántica ponderada y consultas puntuadas 4.04× más rápidas que CodeGraph + Trae. Ver resultados.

Enfoque tradicional:                    Enfoque RepoBrain:
  CLAUDE.md = 5000 líneas de docs         Claude Code llama ask_project("¿cómo funciona auth?")
  El agente lee todo, olvida la mitad     Router → ModuleAgent lee código real, devuelve respuesta exacta
  La tasa de alucinación sigue alta       Fundamentado en código real, rutas de archivo y git
Problema Sin RepoBrain Con RepoBrain
El agente olvida el estilo de código Repites las mismas correcciones Lee .repobrain/conventions.md — lo hace bien a la primera
Incorporar un codebase nuevo El agente adivina la arquitectura rb-refresh → ModuleAgents aprenden cada módulo
Cambiar entre IDEs Reglas diferentes en cada uno Una carpeta .repobrain/ — todos los IDEs la comparten
Preguntar "¿cómo funciona X?" El agente lee archivos al azar ask_project MCP → Router enruta al ModuleAgent responsable

La arquitectura son archivos + un motor Q&A en vivo, no plugins. Portable entre cualquier IDE, cualquier LLM, cero lock-in.


Comandos Slash

Los mismos cuatro comandos slash funcionan tanto en Claude Code como en Codex CLI. Claude los expone con el espacio de nombres /repobrain:<nombre>; Codex auto-descubre el directorio commands/ y los presenta sin prefijo, como /<nombre>. Mismo flujo en ambos hosts — sin reaprender.

Claude Code Codex CLI Propósito
/repobrain:rb-setup /rb-setup Configuración inicial — elige proveedor LLM, escribe .env
/repobrain:rb-refresh [quick] /rb-refresh [quick] Crea una base completa o actualiza manualmente solo los grupos Agent afectados
/repobrain:rb-ask <pregunta> /rb-ask <pregunta> Q&A enrutada sobre el código actual
/repobrain:rb-init <nombre> /rb-init <nombre> Crea un nuevo repo multi-agente desde esta plantilla

Sesión típica inicial: rb-setup → rb-refresh → rb-ask. Detalles abajo.

rb-setup — configuración inicial

Ejecútalo una vez por proyecto, justo después de instalar el plugin. Selector interactivo del proveedor LLM (OpenAI / DeepSeek / Groq / 阿里灵积 / NVIDIA NIM / Ollama local / cualquier endpoint OpenAI-compatible), luego escribe .env en la raíz del proyecto con OPENAI_BASE_URL, OPENAI_API_KEY, OPENAI_MODEL, RB_ASK_TIMEOUT_SECONDS. También asegura que .env esté en .gitignore. Sáltatelo si ya tienes un .env funcional.

# Claude Code
/repobrain:rb-setup

# Codex CLI
/rb-setup

rb-refresh — construir / refrescar la base de conocimiento

El primer refresh debe ser completo para crear una generación base. Después, quick compara solo commits, exige un worktree limpio y usa ImpactPlanner más un Verifier independiente para ejecutar únicamente los grupos Agent afectados. Nunca cambia automáticamente a refresh completo. failed-only reanuda los grupos fallidos o pendientes del mismo commit. rb-ask solo avisa de commits nuevos y nunca actualiza la base automáticamente.

# Claude Code
/repobrain:rb-refresh
/repobrain:rb-refresh quick

# Codex CLI
/rb-refresh
/rb-refresh quick

Tiempo: pocos minutos en repos pequeños, más en repos grandes. Requiere rb-setup ya completado.

rb-ask — Q&A enrutada sobre el código

La razón principal por la que existe este plugin. Enruta tu pregunta al ModuleAgent adecuado (y a GitAgent cuando aplica), y devuelve una respuesta fundamentada en el código real, con rutas de archivo y números de línea. Úsalo antes de hacer grep manual o leer archivos — es más rápido y más preciso. Buenas formas de pregunta: "¿dónde se define/maneja X?", "¿por qué se hizo Y de esta forma?", "¿cómo funciona el flujo de auth?", "¿qué depende del módulo Z?".

# Claude Code
/repobrain:rb-ask "¿Cómo funciona la autenticación?"

# Codex CLI
/rb-ask "¿Cómo funciona la autenticación?"

Requiere una base de conocimiento — si ves "sin índice" o respuestas vacías, ejecuta rb-refresh primero.

rb-init — andamiar un nuevo repo multi-agente

Crea un nuevo proyecto desde la plantilla RepoBrain. Dos modos: quick (andamio rápido, copia limpia) y full (añade runtime profile, .env, archivo de misión, config de sandbox, git init opcional). Es para empezar un repo nuevo — no lo necesitas antes de rb-refresh en un proyecto existente.

# Claude Code
/repobrain:rb-init my-agent
/repobrain:rb-init my-agent full

# Codex CLI
/rb-init my-agent
/rb-init my-agent full

El plugin también incluye el skill agent-repo-init (es el backend que rb-init invoca — Codex / Claude también lo emparejan por descripción) y el servidor MCP opcional rb-mcp (ask_project + refresh_project) para integración tipo herramienta.


Inicio Rápido

Opción A — Instalación de una línea como plugin de Claude Code / Codex CLI (recomendado)

# Claude Code (auto-instala juntos el CLI rb y el motor Python vía SessionStart)
/plugin marketplace add study8677/repobrain
/plugin install repobrain@repobrain
/repobrain:rb-setup            # interactivo: elige proveedor LLM, pega API key, escribe .env
/repobrain:rb-refresh          # el primer refresh crea .repobrain/ automáticamente
/repobrain:rb-ask "¿Cómo funciona este proyecto?"

# Codex CLI (instala el motor manualmente primero; los hooks de Codex aún no son soportados)
pipx install "git+https://github.com/study8677/repobrain.git#subdirectory=engine"
pipx inject --force --include-apps repobrain-engine "git+https://github.com/study8677/repobrain.git#subdirectory=cli"
codex plugin marketplace add study8677/repobrain
/rb-setup                        # mismos comandos en Codex, sin el prefijo repobrain:
/rb-refresh
/rb-ask "¿Cómo funciona este proyecto?"

Codex CLI auto-descubre los comandos slash desde el directorio commands/ del plugin, así que los mismos cuatro comandos están disponibles sin el prefijo repobrain: (/rb-setup, /rb-refresh, /rb-ask, /rb-init). También puedes seguir usando el CLI directo (rb-refresh --workspace ., rb-ask "..." --workspace .) y diagnosticar la instalación con rb doctor --workspace ..

Si la sesión actual de Claude Code dice que la herramienta MCP de RepoBrain no está conectada, reinicia Claude Code una vez y vuelve a ejecutar /repobrain:rb-refresh. Es un problema de carga de sesión, no de API key. Consulta troubleshooting.

Después de instalar y configurar dispondrás de los comandos slash rb-ask <pregunta>, rb-refresh, rb-init <nombre> en ambos hosts, y del servidor MCP repobrain (ask_project + refresh_project). Ver INSTALL.md para detalles de instalación y troubleshooting.

Opción B — Instalación manual: motor + CLI vía pip

# 1. Instalar motor + CLI
pip install "git+https://github.com/study8677/repobrain.git#subdirectory=cli"
pip install "git+https://github.com/study8677/repobrain.git#subdirectory=engine"

# 2. Configurar .env (cualquier API compatible con OpenAI)
cd mi-proyecto
cat > .env <<EOF
OPENAI_BASE_URL=https://tu-endpoint/v1
OPENAI_API_KEY=tu-key
OPENAI_MODEL=tu-modelo
RB_ASK_TIMEOUT_SECONDS=120
EOF

# 3. Construir base de conocimiento (ModuleAgents aprenden cada módulo)
rb-refresh --workspace .

# 4. Preguntar
rb-ask "¿Cómo funciona la autenticación en este proyecto?"

# 5. (Opcional) Registrar como servidor MCP para Claude Code
claude mcp add repobrain rb-mcp -- --workspace $(pwd)

Opción C — Solo archivos de contexto (cualquier IDE, sin LLM)

pip install git+https://github.com/study8677/repobrain.git#subdirectory=cli
rb init mi-proyecto && cd mi-proyecto
# Los archivos de entrada del IDE hacen bootstrap hacia AGENTS.md; el contexto dinámico vive en .repobrain/

Características de un Vistazo

  rb init             Inyectar archivos de contexto (--force para sobrescribir)
       │
       ▼
  .repobrain/       Base de conocimiento compartida — cada IDE lee de aquí
       │
       ├──► rb-refresh     Aprendizaje multi-agente dinámico → docs de conocimiento + mapa estructural
       ├──► rb-ask         Router → ModuleAgent Q&A con evidencia de código en vivo
       └──► rb-mcp         Servidor MCP → Claude Code llama directamente

Clúster Multi-Agente Dinámico — Durante rb-refresh, el motor usa agrupación funcional inteligente: archivos agrupados por relaciones de import, co-ubicación en directorios y prefijos de nombre. El código fuente se pre-carga directamente en el contexto del agente (sin tool calls), y los artefactos de build se filtran automáticamente. Cada sub-agente analiza ~30K tokens de código enfocado en 1 llamada LLM y produce un documento de conocimiento Markdown completo (agents/*.md). Módulos grandes generan múltiples agent docs en paralelo (uno por grupo, sin fusión ni pérdida de información). Un Map Agent lee todos los docs y genera map.md — un índice de enrutamiento. Durante rb-ask, Router lee map.md para seleccionar módulos relevantes, luego alimenta sus agent docs a los agentes de respuesta. Completamente agnóstico al lenguaje — detección de módulos por estructura de directorios pura, análisis de código realizado íntegramente por LLMs. Funciona con cualquier lenguaje de programación.

GitAgent — Un agente dedicado a analizar el historial git — entiende quién cambió qué y por qué.

Feedback de auditoría NLPM — Este repositorio se ha beneficiado de NLPM, un linter de programación en lenguaje natural para plugins de Claude Code, skills y definiciones de agentes creado por xiaolai. Su auditoría ayudó a encontrar mejoras útiles en frontmatter de skills e higiene de dependencias.


Comandos CLI

Comando Qué hace ¿Necesita LLM?
rb init <dir> Inyectar plantillas de arquitectura cognitiva No
rb init <dir> --force Re-inyectar, sobrescribiendo archivos existentes No
rb refresh --workspace <dir> Wrapper CLI conveniente para el pipeline de refresh del knowledge hub Sí
rb ask "pregunta" --workspace <dir> Wrapper CLI conveniente para el flujo Q&A enrutado del proyecto Sí
rb-refresh Aprendizaje multi-agente del codebase, genera docs de conocimiento + conventions.md + structure.md Sí
rb-ask "pregunta" Router → ModuleAgent/GitAgent Q&A enrutado Sí
rb-mcp --workspace <dir> Iniciar servidor MCP — expone ask_project + refresh_project a Claude Code Sí
rb report "mensaje" Registrar un hallazgo en .repobrain/memory/ No
rb log-decision "qué" "por qué" Registrar una decisión arquitectónica No

rb ask / rb refresh están disponibles cuando cli/ y engine/ están instalados. rb-ask / rb-refresh son los entrypoints disponibles con solo el engine.


Dos Paquetes, Un Flujo de Trabajo

repobrain/
├── cli/                     # rb CLI — ligero, instalable con pip
│   └── templates/           # .cursorrules, CLAUDE.md, .repobrain/, ...
└── engine/                  # Motor multi-agente + Knowledge Hub
    └── repobrain_engine/
        ├── _cli_entry.py    # rb-ask / rb-refresh puntos de entrada
        ├── config.py        # Configuración Pydantic
        ├── hub/             # ★ Núcleo: clúster multi-agente
        │   ├── agents.py    #   Refresh swarm (ScanAnalyst → ArchitectureReviewer → ConventionWriter) + Ask swarm (Router / ModuleAgent / GitAgent)
        │   ├── contracts.py #   Modelos Pydantic: claims, evidencia, estado de refresh
        │   ├── ask_pipeline.py    # facts estructurados + swarm legacy
        │   ├── refresh_pipeline.py # orquestación de refresh basado en evidencia
        │   ├── ask_tools.py #   Exploración de código
        │   ├── scanner.py   #   Escaneo multi-lenguaje de proyecto
        │   ├── module_grouping.py # agrupación funcional inteligente
        │   ├── incremental.py #   committed-diff / --quick agent-group refresh
        │   ├── host_runner.py #   local CLI backend, no API key
        │   ├── storage.py   #   generation dirs + current.json
        │   ├── mcp_server.py#   Servidor MCP (rb-mcp)
        │   └── language_adapters/ # adaptadores específicos de lenguaje
        ├── mcp_client.py    # Consumidor MCP (conecta herramientas externas)
        ├── memory.py        # Memoria de interacción persistente
        ├── tools/           # Herramientas MCP + extensiones
        ├── skills/          # Cargador de habilidades
        └── sandbox/         # Ejecución de código (local / microsandbox)

CLI (pip install .../cli) — Cero deps de LLM. Inyecta plantillas, registra reportes y decisiones offline.

Engine (pip install .../engine) — Runtime de conocimiento del repositorio. Alimenta rb-ask, rb-refresh, rb-mcp. Usa el endpoint OpenAI-compatible escrito por rb-setup (OpenAI, DeepSeek, Groq, DashScope, NVIDIA NIM, Ollama o personalizado).

Nuevas actualizaciones de empaquetado de skills:

  • engine/repobrain_engine/skills/graph-retrieval/ — herramientas de recuperación orientadas a grafo para razonamiento de estructura y rutas de llamadas.
  • engine/repobrain_engine/skills/knowledge-layer/ — herramientas de capa de conocimiento para consolidación de contexto semántico del proyecto.
# Instalar ambos para la experiencia completa
pip install "git+https://...#subdirectory=cli"
pip install "git+https://...#subdirectory=engine"

Cómo Funciona

1. rb init — Inyectar archivos de contexto

rb init mi-proyecto
# ¿Ya inicializado? Usa --force para sobrescribir:
rb init mi-proyecto --force

Crea AGENTS.md (reglas de comportamiento autoritativas), archivos bootstrap de IDE (.cursorrules, CLAUDE.md, .windsurfrules, .clinerules, .github/copilot-instructions.md) y archivos de contexto dinámico en .repobrain/.

2. rb-refresh — Aprendizaje multi-agente

rb-refresh --workspace mi-proyecto

Pipeline de 8 pasos:

  1. Escanear codebase (lenguajes, frameworks, estructura)
  2. Pipeline multi-agente genera conventions.md
  3. Generar structure.md — árbol de archivos agnóstico al lenguaje con conteos de líneas
  4. Construir grafo de conocimiento (knowledge_graph.json + mermaid)
  5. Escribir índices de documentos/datos/media
  6. Análisis completo por LLM — archivos agrupados por grafo de imports + directorio + prefijo, pre-cargados en contexto (~30K tokens por sub-agente), artefactos de build filtrados automáticamente. Cada sub-agente lee el código fuente completo y produce un documento de conocimiento Markdown completo (agents/*.md). Módulos grandes generan múltiples agent docs (uno por grupo, sin fusión). Control global de concurrencia API previene rate-limiting. Completamente agnóstico al lenguaje — funciona con cualquier lenguaje de programación.
  7. RefreshGitAgent analiza historial git, genera _git_insights.md
  8. Map Agent lee todos los agent docs → genera map.md (índice de enrutamiento de módulos con descripciones y temas clave)

3. rb-ask — Q&A basado en Router

rb-ask "¿Cómo funciona la autenticación en este proyecto?"

El pipeline de ask usa una vía semántica: Router lee map.md → selecciona módulos → lee agents/*.md → LLM responde con referencias al código. Múltiples agent docs se leen en paralelo, luego un Synthesizer combina las respuestas.

Si los agent docs aún no se han generado, recurre al swarm legacy Router → ModuleAgent/GitAgent.


Compatibilidad de IDEs

La arquitectura está codificada en archivos — cualquier agente que lea archivos del proyecto se beneficia:

IDE Archivo de configuración
Cursor .cursorrules
Claude Code CLAUDE.md
Windsurf .windsurfrules
VS Code + Copilot .github/copilot-instructions.md
Gemini CLI / Codex / DeepSeek Harness AGENTS.md
Cline .clinerules
Google Antigravity .repobrain/rules.md

Todo se genera con rb init: AGENTS.md es el único rulebook de comportamiento, los archivos específicos por IDE son bootstraps ligeros, y .repobrain/ guarda el contexto dinámico compartido del proyecto.


Funciones Avanzadas

Servidor MCP — Dale a Claude Code un ChatGPT para tu codebase

Claude Code no necesita leer cientos de archivos de documentación — puede llamar ask_project como herramienta en vivo, respaldada por un clúster multi-agente dinámico: Router enruta preguntas al ModuleAgent correcto, devuelve respuestas precisas con rutas de archivo y números de línea.

Configuración:

# Instalar motor
pip install "git+https://github.com/study8677/repobrain.git#subdirectory=engine"

# Refrescar base de conocimiento primero (ModuleAgents aprenden cada módulo)
rb-refresh --workspace /ruta/al/proyecto

# Registrar como servidor MCP en Claude Code
claude mcp add repobrain rb-mcp -- --workspace /ruta/al/proyecto

Herramientas expuestas a Claude Code:

Herramienta Qué hace
ask_project(pregunta) Router → ModuleAgent/GitAgent responde preguntas del codebase. Devuelve rutas + números de línea.
refresh_project(quick?) Reconstruir base de conocimiento. ModuleAgents re-aprenden el código.
Clúster Multi-Agente Dinámico — Aprendizaje por módulo + enrutamiento inteligente

El núcleo del motor es un clúster de Agents creado dinámicamente por módulo de código:

 rb-refresh:                                 rb-ask:

 Para cada módulo:                           Router (lee map.md)
 ┌ Agrupar archivos por grafo de imports       └── leer agents/*.md → respuesta LLM
 ├ Pre-cargar ~30K tokens por sub-agente
 ├ Filtrar artefactos de build
 ├ Sub-agentes → documentos Markdown agent
 ├ agents/{module}.md (o /group_N.md)
 └ Map Agent → map.md

Innovaciones clave:

  • LLM como analizador: Sin AST ni regex — el código fuente se alimenta directamente al LLM. Funciona con cualquier lenguaje de programación de forma inmediata.
  • Agrupación inteligente: Archivos agrupados por relaciones de import, co-ubicación en directorios y prefijos de nombre. Artefactos de build filtrados automáticamente. Límite duro de caracteres (800K) previene desbordamiento de contexto.
  • Sin pérdida de información: Módulos grandes producen múltiples agent.md (uno por grupo) — sin fusión ni compresión. Durante rb-ask, múltiples agent docs son leídos por LLMs en paralelo, luego un Synthesizer combina las respuestas.
  • Control global de concurrencia API: RB_API_CONCURRENCY limita las llamadas LLM simultáneas entre todos los módulos, previniendo rate-limiting.
  • Detección de módulos agnóstica al lenguaje: Estructura de directorios pura — sin __init__.py ni marcadores específicos de lenguaje.
# ModuleAgents aprenden tu codebase
rb-refresh

# Solo escanear archivos cambiados desde el último refresh
rb-refresh --quick

# Router enruta inteligentemente al ModuleAgent correcto
rb-ask "¿Qué patrones de testing usa este proyecto?"

# Registrar hallazgos y decisiones (sin LLM)
rb report "El módulo de auth necesita refactoring"
rb log-decision "Usar PostgreSQL" "El equipo tiene experiencia profunda"

Funciona con el endpoint OpenAI-compatible seleccionado por rb-setup. Basado en OpenAI Agent SDK + LiteLLM.

Integración MCP (Consumidor) — Permitir a los agentes llamar herramientas externas

MCPClientManager permite a tus agentes conectarse a servidores MCP externos (GitHub, bases de datos, etc.), descubriendo y registrando herramientas automáticamente.

// mcp_servers.json
{
  "servers": [
    {
      "name": "github",
      "transport": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "enabled": true
    }
  ]
}

Configura MCP_ENABLED=true para hacer visibles los servidores y RB_ALLOW_MCP=true solo cuando quieras que rb-ask conecte servidores externos automáticamente. Los servidores MCP por stdio heredan el entorno del proceso y los valores env configurados, así que trátalos como código con permisos locales.

Sandbox — Entorno de ejecución de código configurable
Variable Default Opciones
SANDBOX_TYPE local local · microsandbox
SANDBOX_TIMEOUT_SEC 30 segundos
RB_RETRIEVAL_MODE compact off · compact · full

El sandbox por defecto es para workspaces locales confiables, no para aislar código no confiable. El retrieval graph redacta secretos comunes antes de escribir a disco, pero full aún puede conservar fragmentos de código. Ver docs Sandbox.


RepoBrain vs CodeGraph + Trae (2026-09-09)

Flask, ripgrep, Vite y Prometheus · 20 preguntas × 3 repeticiones por producto · mismo acceso al código y ruta de modelo (Seed-2.1-Turbo → seed-code-pro).

Métrica principal RepoBrain CodeGraph + Trae
Precisión semántica ponderada 95.83% 84.17%
Consultas completadas 60/60 53/60
Tiempo de consultas puntuadas 5,106.67 s 20,621.14 s
Tokens de consulta 22,326,315 86,027,974
Tiempo de construcción en frío 7,420.63 s 9.58 s
Construcción en frío + consultas puntuadas 12,527.30 s 20,630.72 s

Los fallos cuentan como respuestas incorrectas. La construcción en frío compara generación completa de conocimiento con IA e indexación estática del grafo de código, no cargas equivalentes. Los resultados solo se aplican a este experimento con versiones fijadas.

Resultados completos y metodología


Documentación

🇬🇧 English docs/en/
🇨🇳 中文 docs/zh/
🇪🇸 Español docs/es/

Contribuyendo

¡Las ideas también son contribuciones! Abre un issue para reportar bugs, sugerir funcionalidades o proponer arquitectura.

Contribuidores


⭐ Lling0000

Contribuidor Principal · Sugerencias creativas · Administrador del proyecto · Ideación y feedback

Alexander Daza

Sandbox MVP · Workflows OpenSpec · Docs de análisis técnico · PHILOSOPHY

Chen Yi

Primer prototipo CLI · Refactor de 753 líneas · Extracción DummyClient · Docs quick-start

Subham Sangwan

Carga dinámica de herramientas (#4) · Protocolo swarm multi-agente (#3)

shuofengzhang

Fix ventana de contexto de memoria · Manejo graceful de cierre MCP (#28)

goodmorning10

Mejora de carga de contexto en rb ask — añadió CONTEXT.md, AGENTS.md y memory/*.md como fuentes de contexto (#29)

BBear0115

Empaquetado de skills y mejoras de recuperación KG · Sincronización README multilingüe (#30)

SunkenCost

Comando rb clean · Protección de entrada __main__ (#37)

Aravindh Balaji

Superficie de instrucciones unificada en torno a AGENTS.md (#41)

xiaolai

Feedback de auditoría NLPM · Fixes de frontmatter de skills · Revisión de higiene de dependencias (#51, #52, #53)

Star History

Star History Chart

Licencia

Licencia MIT. Ver LICENSE para detalles.


📚 Documentación completa →

Construido para la era del desarrollo AI-nativo

Enlace amigo: LINUX DO