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

License: AGPL-3.0 Node.js MCP Compatible API Cost Discord

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étricaValor
Líneas descompuestas32,736
Funciones extraídas1,017
Puntuación del pipeline0.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

IdiomaExtracciónEstado
JavaScript / TypeScriptMecánicaIntegrado
PythonMecánicaIntegrado
Go, Rust, Java, C#, Kotlin, SwiftMecánicaPro
Todo lo demásLLM con compresiónRespaldo 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.

ProveedorSalidaContexto¿Gratis?
Groq Llama 3.3 70B32k128kSí
Gemini 2.5 Flash16k1MSí
OpenRouter Qwen 3.6+16k1MSí
SambaNova MiniMax16k163kSí

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.