Volver a la wiki

Biblioteca Graphify — AST extractor

Biblioteca Graphify — AST extractor

User value

Antes de Graphify, la Biblioteca era un grafo de 919 nodos y 1577 edges construido a mano: documentos, endpoints y anotaciones explícitas. El código Python — activo principal — era opaco. Cualquier pregunta sobre qué llama a qué, qué hereda de qué o qué módulos están acoplados requería leer archivos fuente.

Con Graphify el grafo pasó a 3090 nodos y 4450 edges automáticamente y sin dependencias externas. Los agentes consultan call graphs, detectan god nodes, calculan impacto de un cambio y descubren comunidades de código, todo via MCP, sin abrir un archivo.

Cómo usarla

# Extraer todo y enviar al MCP workspace
python scripts/bib_ast.py --push

# Solo una app (activa replace_app: borra nodos obsoletos)
python scripts/bib_ast.py --push --apps racks

# Modo incremental (cache SHA256)
python scripts/bib_ast.py --push --incremental

# Solo estadísticas
python scripts/bib_ast.py --stats

Token MCP leído de BIB_MCP_TOKEN. En producción el script corre cada 10 min via /etc/cron.d/bib-reindex en Hetzner Staging (scripts/cron-bib-reindex.sh), app por app con --apps <single> para activar replace_app y eliminar nodos fantasma.

Datos disponibles vía MCP tools: bib_call_graph, bib_get_node, bib_impact_query, bib_compute_communities, bib_coupling_report, etc.

Implementación

Núcleo: CreaRackVisitor, subclase ast.NodeVisitor que recorre AST y emite nodes y edges.

Tipos de nodo: module, class, model (hereda de Model), function, method.

Tipos de edge: contains (módulo→clase, clase→método), imports (relativos y absolutos), inherits, calls.

Detalles:

Decisiones

Commits relacionados

Véase también

Subir