Refactory
Herramienta de descomposición híbrida: la IA decide DÓNDE dividir tu monolito, el motor determinista COPIA el código. Minimiza tokens, maximiza la validez sintáctica.
Documentación
Refactory
Descomposición de código híbrida. La IA planifica los límites. Un motor determinista maneja las extracciones rutinarias. Minimiza tokens, maximiza la validez de sintaxis.
Refactory divide archivos fuente monolíticos en módulos limpios. Usa un LLM para una sola cosa: decidir qué funciones se agrupan. Todo lo demás es mecánico: detección de límites de funciones, resolución de importaciones, ensamblaje de módulos, validación de sintaxis, puntuación.
La extracción de JavaScript y Python es mayormente mecánica. El motor determinista maneja los movimientos sencillos: el 80% rutinario que es una pérdida de tiempo y tokens de IA. El LLM aún maneja casos límite complejos donde el juicio importa. Otros idiomas usan extracción con LLM y compresión adaptativa.
Funciona con Claude Code, Cursor, Windsurf, VS Code Copilot — cualquier cliente MCP. O usa la CLI directamente.
Resultados
Probado contra 15 monolitos de producción:
| Métrica | Valor |
|---|---|
| Líneas descompuestas | 32,736 |
| Funciones extraídas | 1,017 |
| Puntuación del pipeline | 0.89 |
| Proporción de extracción mecánica | ~80% |
| Costo de API (extracción) | Casi cero |
Inicio rápido
MCP (recomendado)
Añade a tu .mcp.json:
{
"mcpServers": {
"refactory": {
"command": "npx",
"args": ["@refactory/mcp"],
"env": {
"GROQ_API_KEY": "your-key-here"
}
}
}
}
Luego dile a tu herramienta de IA: "Analiza y descompón src/big-file.js en módulos"
Solo necesitas una clave de API gratuita (Groq o Gemini) para el paso PLAN. La extracción es mecánica — no se requiere clave para JS/Python.
CLI
git clone https://github.com/codedrop-codes/refactory.git
cd refactory && npm install
node src/cli.js decompose src/big-file.js
Otros comandos:
refactory analyze src/big-file.js # Health check + function map
refactory plan src/big-file.js # Generate module boundaries (needs LLM key)
refactory verify lib/modules/ # Check extracted modules
refactory languages # Show supported languages
refactory providers # Show configured LLM providers
refactory test submit broken.js # Submit a file that breaks extraction
refactory test run # Validate preprocessors against test corpus
Cómo funciona
1. ANALYZE Scan functions, dependencies, health — mechanical
|
2. CHARACTERIZE Snapshot exports before touching anything — mechanical
|
3. PLAN LLM decides module boundaries — the only AI step
|
4. EXTRACT Copy functions by line range, resolve imports — mechanical
| (LLM fallback for unsupported languages)
5. FIX-IMPORTS Rewrite require()/import paths — mechanical
|
6. VERIFY Syntax check, load check, export comparison — mechanical
|
7. METRICS Refactory Score + HTML report — mechanical
6 de 7 pasos son deterministas. El LLM solo decide dónde dividir — nunca toca tu código.
Soporte de idiomas
| Idioma | Extracción | Estado |
|---|---|---|
| JavaScript / TypeScript | Mecánica | Integrado |
| Python | Mecánica | Integrado |
| Go, Rust, Java, C#, Kotlin, Swift | Mecánica | Pro |
| Todo lo demás | LLM con compresión | Respaldo automático |
La extracción mecánica maneja los casos rutinarios: el preprocesador encuentra los límites de las funciones mediante análisis, los copia por rango de líneas y resuelve las importaciones de forma determinista. Los patrones complejos (exportaciones dinámicas, lógica profundamente entrelazada) aún pasan por el LLM.
Contribuye con un preprocesador para tu idioma.
Puntuación de Refactory
Un número único (0.0 a 1.0) que mide la calidad de la descomposición.
Score = clean_rate × size_reduction
- clean_rate — módulos que cargan sin errores / total de módulos
- size_reduction — 1 − (módulo más grande / archivo original)
Una puntuación de 1.0 significa que cada módulo carga limpiamente y ningún módulo es más grande que el original.
Enrutamiento de proveedores
Solo necesitas una clave gratuita para el paso PLAN. La extracción es mecánica para los idiomas compatibles.
| Proveedor | Salida | Contexto | ¿Gratis? |
|---|---|---|---|
| Groq Llama 3.3 70B | 32k | 128k | Sí |
| Gemini 2.5 Flash | 16k | 1M | Sí |
| OpenRouter Qwen 3.6+ | 16k | 1M | Sí |
| SambaNova MiniMax | 16k | 163k | Sí |
Configura al menos uno: GROQ_API_KEY, GOOGLE_API_KEY, OPENROUTER_API_KEY, o SAMBANOVA_API_KEY.
Corpus de prueba
¿Encontraste un archivo que rompe la extracción? Envíalo:
refactory test submit broken-file.js -d "what went wrong"
Los secretos se eliminan automáticamente. Cada envío se convierte en un caso de prueba permanente. El extractor se fortalece con cada informe.
Informa vía GitHub si prefieres.
Comunidad
- Discord — Ayuda, ideas, muestra tus resultados
- Discusiones — Solicitudes de funciones, solicitudes de idiomas
- Issues — Informes de errores
- Contribuciones — Construye un preprocesador, envía archivos de prueba
Licencia
AGPL-3.0 — ver LICENSE.
Paquetes de idiomas premium disponibles bajo licencia comercial. Ver refactory.codedrop.codes.