Mapea el proyecto abierto en un grafo de conocimiento consultable, para que tú
(y los agentes de IA) entendáis el código sin grepear/leer ficheros sueltos —
ahorrando tokens. La extracción corre 100% en local; el grafo (nodos/edges +
fichero:línea, nunca el código fuente) se guarda fuera del repo del dev.
Envuelve graphify (MIT) reusando su extracción AST (tree-sitter) y su capa de consulta, sin reescribirla en Node.
Estado (Fase 1 — herramienta local funcional)
- ✅
Robin: Generar grafo del proyecto— extrae el grafo de losworkspaceFoldersabiertos. - ✅
Robin: Buscar en el grafo— pregunta en lenguaje natural → subgrafo recortado. - ✅
Robin: Ver último grafo generado— metadatos del último grafo. - ⏳ Pendiente: auth OAuth contra Robin, subida del grafo al backend, tools MCP, toggle en dashboard.
Requisitos
- uv en el PATH (runner por defecto
uvx, efímero — no instala nada permanente).- Alternativas en settings
robin.pythonRunner:uv-toolopython(graphify ya disponible).
- Alternativas en settings
- VSCode ≥ 1.90.
Probar en desarrollo
cd robin-extension
npm install
npm run build # compila a dist/
Luego pulsa F5 en VSCode (o "Run Extension") para abrir un Extension
Development Host. Abre una carpeta de proyecto y ejecuta desde la paleta
(Cmd+Shift+P): Robin: Generar grafo del proyecto, después Robin: Buscar en el grafo.
Dónde se guardan los datos
- Grafo:
globalStorage/<extension>/graphs/<projectKey>.json(fuera del repo). - Caché de graphify:
globalStorage/<extension>/cache/víaGRAPHIFY_OUT(nunca creagraphify-out/en el proyecto del dev). projectKey= hash demachineId + rutas raíz del workspace(soporta un proyecto con varias carpetas: VSCode + PyCharm).
Notas técnicas
- Secuencial a propósito: el
ProcessPoolparalelo de graphify peta bajospawnde macOS. Secuencial es fiable y rápido para el alcance normal de un proyecto. - Python 3.12 fijado en el runner
uvx(wheels de tree-sitter más estables). - TS/JS no cachean (decisión de graphify: la resolución de imports es cross-file). Python sí → re-runs incrementales en módulos Odoo.
- XML de Odoo aún no: graphify no extrae
.xmlpor AST. Pendiente para una fase posterior (extractor propio).
Estructura
robin-extension/
├── package.json # manifest + comandos + settings
├── src/extension.ts # shell TS: comandos, runner, spawn
├── python/
│ ├── robin_extract.py # extracción AST local → graph.json
│ └── robin_query.py # consulta → subgrafo recortado
└── dist/ # compilado (gitignored)