Refatorar legado sem estourar contexto: guia prático 2026
Voltar para o Blog
Artigo

Refatorar legado sem estourar contexto: guia prático 2026

Mafra
29/06/2026
9 min de leitura

A sessão estava indo bem. Três horas de contexto, 60 arquivos no escopo, o agente entendendo a arquitetura de um CRM legado em Django 2.1 e indo linha a linha identificando o que precisava mudar para a migração para FastAPI. Então o cap de contexto apareceu. O agente começou a perder referência a módulos que havia analisado no início. Na sétima hora, sugeria mudanças que contradiziam as que tinha feito três horas antes.

Isso não é falha do agente. É o que acontece quando você pede a qualquer modelo que mantenha coerência por mais contexto do que ele tem janela para processar.

O problema de refatoração de código legado com agente de programação tem uma solução técnica, mas ela depende de duas coisas que a maioria dos setups não tem: janela de contexto grande o suficiente e uma estratégia de sessão que não vai contra a física do modelo.

Por que o agente perde contexto no meio do monolito?

Cada modelo tem uma janela de contexto: o máximo de tokens que ele processa em uma única requisição. A janela não é um buffer acumulativo. Ela é o que o modelo "vê" naquele momento específico.

O problema de refatoração de legado tem três camadas que se somam:

  1. O código em si: um monolito de 50k linhas em Python ocupa aproximadamente 500k tokens quando você inclui o conteúdo completo dos arquivos relevantes.
  2. O histórico da sessão: cada ida e volta com o agente adiciona tokens ao contexto. Depois de 2 horas de sessão intensa, o histórico pode adicionar 100k tokens extras.
  3. As instruções e contexto de tarefa: PRD, especificações da nova API, regras de migração, mais 20k a 50k tokens.

Some esses três componentes e você chega facilmente em 700k a 800k tokens necessários para uma sessão de refactor séria. Modelos com janela de 200k tokens saturam. Quando a janela satura, os tokens mais antigos, onde estava a arquitetura original, são descartados para dar espaço ao contexto recente.

É isso que você sente como "o agente perdeu o fio da meada". Ele não perdeu: ele literalmente não pode mais ler o que leu no início da sessão.

Componente de contexto Tokens estimados
50k linhas de código legado (60% dos arquivos relevantes) ~500.000
Histórico de sessão de 4 horas de refactor ~150.000
Especificações, PRD, regras de migração ~30.000
Total necessário para sessão completa ~680.000
Janela de 200k (Claude Code, Cursor c/ Claude) Cap estourado em 30% da sessão
Janela de 1M (deepseek-v4-flash, mimo-v2.5) Sessão completa sem saturação

1M de tokens resolve o problema de contexto?

Parcialmente. Janela maior elimina a saturação forçada, mas não elimina o problema de qualidade de atenção em contextos muito longos.

Avaliações publicadas no SWEN.AI e no Artificial Analysis em 2026 mostram que a atenção dos modelos é melhor nos primeiros e últimos segmentos do contexto, com degradação no intervalo intermediário. Para sessões de 800k tokens, informação na faixa dos 200k-600k recebe menos atenção do que informação no início ou no final da janela.

O que isso significa para a estratégia de refator: não adianta jogar todo o código no contexto e esperar processamento uniforme. Você precisa de uma estratégia que coloque a informação crítica na posição certa da janela.

A boa notícia: com 1M de contexto disponível, você tem espaço para aplicar essa estratégia sem precisar truncar o código. Com 200k, você nem chega a ter essa opção.

Como estruturar a sessão de refactor para não perder contexto?

O framework abaixo foi desenhado para sessões de refatoração de monolito usando deepseek-v4-flash ou mimo-v2.5, ambos disponíveis no Verboo Code com janela de 1M de tokens. A lógica funciona com qualquer agente de programação que tenha contexto suficiente.

Passo 1: Mapa antes do código

Antes de colocar o código no contexto, peça ao agente para gerar um mapa da arquitetura baseado nos arquivos de estrutura, sem o conteúdo completo. tree, pyproject.toml, requirements.txt e os arquivos de configuração já dão uma visão da estrutura sem saturar o contexto.

# Primeiro prompt: mapa sem código completo
$ verboo

[verboo]: Analise a estrutura do projeto a partir dos arquivos abaixo 
e gere um mapa de dependências entre módulos antes de lermos o código completo.

[inclua: tree, pyproject.toml, setup.cfg, __init__.py dos módulos principais]

O agente gera o mapa. Você salva esse mapa como um arquivo separado. Ele vai entrar no início de cada sub-sessão como âncora de contexto.

Passo 2: Plano de migração com ordem definida

Refatoração de legado tem dependências. O módulo de autenticação precisa ser migrado antes do de permissões. O ORM precisa ser desacoplado antes de migrar as rotas. Você define a ordem de migração antes de começar, não no meio.

Um arquivo MIGRATION_PLAN.md simples já resolve:

# MIGRATION_PLAN.md
## Ordem de migração

1. Configuração e dependências (settings, requirements)
2. Modelos e ORM (desacoplar SQLAlchemy do Django ORM)
3. Autenticação (session-based para JWT)
4. Rotas (views Django para FastAPI endpoints)
5. Testes (unittest para pytest com httpx)

## Regras de migração
- Manter compatibilidade de schema do banco durante toda a migração
- Não alterar interfaces externas até a etapa 4
- Cada módulo migrado recebe teste de fumaça antes de ir para o próximo

Esse arquivo entra no contexto de cada sub-sessão. O agente sempre sabe onde está no plano.

Passo 3: Uma sub-sessão por módulo com reset de histórico

Este é o ponto que vai contra o instinto de muitos devs. Sessão longa, contexto enorme, o agente vai "lembrar" tudo. Na prática, o histórico de sessão é um dos maiores consumidores de contexto, e não é mais valioso do que o código novo.

A estratégia: uma sessão por módulo, com o contexto sempre composto por:

  1. O mapa de arquitetura (âncora)
  2. O plano de migração com o módulo atual marcado
  3. O código completo do módulo atual
  4. Os testes existentes do módulo
  5. O estado final do módulo anterior (não o histórico de como chegou lá)

O histórico de sessão anterior não entra. Você não precisa que o agente lembre como chegou ao resultado do módulo anterior. Precisa que ele veja o resultado e saiba onde está no plano.

Passo 4: Modelo certo para cada tipo de tarefa

No Verboo Code, você alterna entre modelos com o comando /model dentro da sessão. Para refatoração de legado, a escolha importa:

Modelo Contexto Melhor para
mimo-v2.5 1M tokens Análise de arquitetura complexa, refatoração com múltiplas dependências, raciocínio multi-step
deepseek-v4-flash 1M tokens Iterações rápidas, geração de testes, conversão de sintaxe, respostas mais velozes
qwen3.6-27b 262k tokens Debugging pontual, análise de lógica específica, revisão de PRs de módulos já migrados

Use mimo-v2.5 para a análise inicial do módulo e para decisões arquiteturais. Use deepseek-v4-flash para as iterações de implementação, onde a velocidade de resposta importa mais do que profundidade de raciocínio.

Passo 5: Checkpoint de coerência a cada módulo

Antes de iniciar o próximo módulo, rode um checkpoint: peça ao agente para listar as mudanças feitas no módulo atual e verificar se estão consistentes com as regras do plano de migração.

[verboo]: Liste todas as mudanças que fizemos no módulo de autenticação 
nessa sessão e verifique se cada uma está alinhada com as regras do 
MIGRATION_PLAN.md, especialmente as regras de compatibilidade de schema.

Esse prompt custa alguns tokens e retorna inconsistências que vão ser muito mais caras de corrigir depois de 3 módulos na frente.

Qual modelo escolher para refatoração de código legado em 2026?

Para projetos com mais de 100k linhas, a janela de 1M tokens não é opcional: é o requisito mínimo para que o agente tenha coerência ao longo de toda a análise inicial. mimo-v2.5 e deepseek-v4-flash são as únicas opções open source nessa faixa com uso real em produção documentado em 2026.

Para projetos menores (20k a 50k linhas), qwen3.6-27b com 262k de contexto é suficiente para a maioria dos módulos, com latência menor por resposta.

O que não funciona para refatoração de legado:

  • Modelos com cap de 200k tokens em projetos de médio porte: saturação na metade da sessão
  • Qualquer modelo com billing por token quando você precisa de iteração intensa: custo real por sessão explode
  • Sessões sem âncora de contexto (mapa + plano): o agente perde coerência ao longo do tempo mesmo com janela grande

Como saber quando o agente está perdendo contexto?

Três sinais práticos que indicam saturação da janela:

  1. Contradições com decisões anteriores da sessão: o agente sugere algo que você já discutiu e descartou. Não porque mudou de ideia, mas porque não está mais "vendo" aquela parte da conversa.
  2. Respostas genéricas onde antes eram específicas: o agente começa a responder com padrões gerais em vez de referenciar o código específico do projeto. Sinal de que o código foi descartado do contexto ativo.
  3. Tempo de resposta aumentando sem complexidade crescendo: o modelo está processando uma janela mais cheia, não uma tarefa mais difícil.

Quando ver qualquer um desses sinais, encerre a sessão atual e inicie uma nova com o contexto estruturado: mapa mais plano mais estado atual do módulo. Não continue tentando na mesma sessão saturada.

Resumo executivo: a estratégia em 5 pontos

Etapa O que fazer Por que importa
1. Mapa Gerar mapa de arquitetura antes do código completo Âncora de contexto que entra em toda sessão
2. Plano Definir ordem de migração e regras antes de começar Agente sempre sabe onde está e o que não pode quebrar
3. Sub-sessões Uma sessão por módulo com reset de histórico Elimina acúmulo de contexto irrelevante
4. Modelo certo mimo-v2.5 para análise, deepseek-v4-flash para iteração 1M de contexto em ambos, escolha por velocidade vs profundidade
5. Checkpoint Verificar coerência com o plano a cada módulo concluído Previne inconsistências antes de ficarem caras

O custo de depurar inconsistências introduzidas por agente sem contexto é frequentemente maior do que o custo de refatorar na mão. A estratégia de sub-sessões estruturadas com âncora de contexto resolve o problema na raiz, não nos sintomas.

Para entender por que o cap de 5 horas do Claude Code impacta exatamente esse tipo de tarefa, veja a conta real do "ilimitado" em Claude Code, Cursor e Copilot. E para o comparativo completo de coding agents e janelas de contexto em 2026, os dados estão em tokens ilimitados ou pagar por token.

Quer rodar isso sem cap de tokens? Conheça o Verboo Code, agente de programação com tokens ilimitados.

Gostou deste artigo?
Compartilhe conhecimento com sua rede.
Leia também

Artigos relacionados