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
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étrica | Valor |
|---|---|
| Linhas decompostas | 32.736 |
| Funções extraídas | 1.017 |
| Pontuação do pipeline | 0,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
| Linguagem | Extração | Status |
|---|---|---|
| JavaScript / TypeScript | Mecânica | Integrada |
| Python | Mecânica | Integrada |
| Go, Rust, Java, C#, Kotlin, Swift | Mecânica | Pro |
| Todo o resto | LLM com compressão | Fallback 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.
| Provedor | Saída | Contexto | Grátis? |
|---|---|---|---|
| Groq Llama 3.3 70B | 32k | 128k | Sim |
| Gemini 2.5 Flash | 16k | 1M | Sim |
| OpenRouter Qwen 3.6+ | 16k | 1M | Sim |
| SambaNova MiniMax | 16k | 163k | Sim |
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.