Refactory

Ferramenta de decomposição híbrida — IA decide ONDE dividir seu monolito, mecanismo determinístico COPIA o código. Minimiza tokens, maximiza validade sintática.

Documentação

Refactory

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

Decomposição híbrida de código. A IA planeja os limites. Um mecanismo determinístico lida com as extrações rotineiras. Minimize tokens, maximize validade sintática.

O Refactory divide arquivos monolíticos de código-fonte em módulos limpos. Ele usa um LLM para uma única coisa — decidir quais funções devem ser agrupadas. Todo o resto é mecânico: detecção de limites de funções, resolução de imports, montagem de módulos, validação de sintaxe e pontuação.

A extração de JavaScript e Python é majoritariamente mecânica. O mecanismo determinístico lida com os movimentos diretos — os 80% rotineiros que são um desperdício de tempo de IA e tokens. O LLM ainda lida com casos extremos complexos onde o julgamento é importante. Outras linguagens usam extração por LLM com compressão adaptativa.

Funciona com Claude Code, Cursor, Windsurf, VS Code Copilot — qualquer cliente MCP. Ou use a CLI diretamente.

Resultados

Testado contra 15 monolítos de produção:

MétricaValor
Linhas decompostas32.736
Funções extraídas1.017
Pontuação do pipeline0,89
Taxa de extração mecânica~80%
Custo de API (extração)Quase zero

Início Rápido

MCP (recomendado)

Adicione ao seu .mcp.json:

{
  "mcpServers": {
    "refactory": {
      "command": "npx",
      "args": ["@refactory/mcp"],
      "env": {
        "GROQ_API_KEY": "your-key-here"
      }
    }
  }
}

Depois diga à sua ferramenta de IA: "Analise e decomponha src/big-file.js em módulos"

É necessária uma chave de API gratuita (Groq ou Gemini) apenas para a etapa PLAN. A extração é mecânica — nenhuma chave é necessária 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

Outros 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

Como 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 etapas são determinísticas. O LLM apenas decide onde dividir — ele nunca toca no seu código.

Suporte a Linguagens

LinguagemExtraçãoStatus
JavaScript / TypeScriptMecânicaIntegrada
PythonMecânicaIntegrada
Go, Rust, Java, C#, Kotlin, SwiftMecânicaPro
Todo o restoLLM com compressãoFallback automático

A extração mecânica lida com os casos rotineiros: o pré-processador encontra limites de funções por análise sintática, copia-os por intervalo de linhas e resolve imports de forma determinística. Padrões complexos (exports dinâmicos, lógica profundamente intercalada) ainda passam pelo LLM.

Contribua com um pré-processador para sua linguagem.

Pontuação Refactory

Um único número (0,0 a 1,0) que mede a qualidade da decomposição.

Score = clean_rate × size_reduction
  • clean_rate — módulos que carregam sem erros / total de módulos
  • size_reduction — 1 − (maior módulo / arquivo original)

Uma pontuação de 1,0 significa que todos os módulos carregam corretamente e nenhum módulo é maior que o arquivo original.

Roteamento de Provedores

Você só precisa de uma chave gratuita para a etapa PLAN. A extração é mecânica para linguagens suportadas.

ProvedorSaídaContextoGrátis?
Groq Llama 3.3 70B32k128kSim
Gemini 2.5 Flash16k1MSim
OpenRouter Qwen 3.6+16k1MSim
SambaNova MiniMax16k163kSim

Defina pelo menos um: GROQ_API_KEY, GOOGLE_API_KEY, OPENROUTER_API_KEY ou SAMBANOVA_API_KEY.

Corpus de Teste

Encontrou um arquivo que quebra a extração? Envie-o:

refactory test submit broken-file.js -d "what went wrong"

Segredos são removidos automaticamente. Cada envio se torna um caso de teste permanente. O extrator fica mais forte a cada relatório.

Reporte via GitHub se preferir.

Comunidade

  • Discord — Ajuda, ideias, mostre seus resultados
  • Discussões — Solicitações de recursos e linguagens
  • Issues — Relatórios de bugs
  • Contribuindo — Crie um pré-processador, envie arquivos de teste

Licença

AGPL-3.0 — veja LICENSE.

Pacotes de linguagem premium disponíveis sob licença comercial. Veja refactory.codedrop.codes.