Gerenciamento da janela de contexto: o que 50 sessões me ensinaram sobre desenvolvimento com IA
Medi o consumo de tokens em 50 sessões de desenvolvimento com o Claude Code. O padrão foi consistente: a qualidade das respostas degrada por volta de 60% de utilização do contexto, muito antes do limite rígido acionar a compactação.1
TL;DR
O esgotamento da janela de contexto degrada silenciosamente a qualidade da codificação com IA. Após acompanhar 50 sessões construindo minha infraestrutura do Claude Code e meu sistema de qualidade para o blog, encontrei três padrões que mantêm a qualidade das respostas em sessões longas: compactação proativa após cada subtarefa, memória baseada em sistema de arquivos que persiste entre limites de contexto e delegação para subagentes que mantém o contexto principal enxuto. A conclusão principal: trate a janela de contexto como um recurso escasso, não como um thread de conversa sem fundo.
Como a degradação realmente se manifesta
Cada leitura de arquivo, saída de ferramenta e turno de conversa consome tokens. Uma única leitura de arquivo grande (2.000 linhas) pode consumir de 15.000 a 20.000 tokens. Após ler 10 arquivos e executar vários comandos, a janela de contexto contém mais saída de ferramentas do que instruções propriamente ditas.2
A degradação é sutil. O Claude não anuncia “meu contexto está 80% cheio”. Em vez disso, o modelo começa a: - Esquecer instruções estabelecidas 20 minutos antes - Repetir sugestões já rejeitadas três turnos atrás - Ignorar padrões estabelecidos anteriormente na conversa - Produzir alterações multi-arquivo menos coerentes
Percebi esse padrão ao construir meu sistema de deliberação. Uma sessão que começou com edições precisas em múltiplos arquivos, abrangendo 8 módulos Python, degradou para uma visão de túnel em arquivo único por volta dos 90 minutos. O agente parou de referenciar a arquitetura que havia lido antes porque esse contexto já tinha sido comprimido.
Estratégia 1: Compactação proativa
O comando /compact do Claude Code resume a conversa e libera espaço de contexto. O sistema preserva decisões-chave, conteúdo de arquivos e estado das tarefas enquanto descarta saídas verbosas de ferramentas.3
Quando compactar: - Após completar uma subtarefa distinta (funcionalidade implementada, bug corrigido) - Antes de começar uma nova área do codebase - Quando o Claude começa a repetir ou esquecer contexto anterior
Eu compacto aproximadamente a cada 25-30 minutos durante sessões intensas. Durante a construção da infraestrutura de deliberação (9 PRDs, 3.455 linhas de Python), compactei após a conclusão de cada PRD. Cada compactação preservou as decisões arquiteturais enquanto liberava contexto para a próxima fase de implementação.
Estratégia 2: Sistema de arquivos como memória
A memória mais confiável entre limites de contexto reside no sistema de arquivos. O Claude Code lê o CLAUDE.md e os arquivos de memória no início de cada sessão e após cada compactação.4
Meu diretório .claude/ funciona como um palácio da memória estruturado:
~/.claude/
├── configs/ # 14 JSON configs (thresholds, rules, budgets)
│ ├── deliberation-config.json
│ ├── recursion-limits.json
│ └── consensus-profiles.json
├── hooks/ # 95 lifecycle event handlers
├── skills/ # 44 reusable knowledge modules
├── state/ # Runtime state (recursion depth, agent lineage)
├── handoffs/ # 49 multi-session context documents
├── docs/ # 40+ system documentation files
└── projects/ # Per-project memory directories
└── {project}/memory/
└── MEMORY.md # Always loaded into context
O arquivo MEMORY.md captura erros, decisões e padrões entre sessões. Atualmente contém 54 falhas documentadas com padrões de aprendizado entre domínios. Quando descubro que ((VAR++)) falha com set -e no bash quando VAR é 0, eu registro. Três sessões depois, ao encontrar um caso extremo semelhante com inteiros em Python, a entrada no MEMORY.md traz o padrão à tona.5
O efeito composto entre domínios: Um erro de escape em bash no desenvolvimento de hooks informou uma melhoria de regex no meu linter Python para o blog. Uma lacuna em tokens CSS (--spacing-2xs não existe) desencadeou uma auditoria sistemática de todas as referências a propriedades customizadas. Cada entrada conecta domínios que, de outra forma, permaneceriam isolados dentro de contextos de sessões individuais.
Estratégia 3: Handoff de sessão
Para tarefas que abrangem múltiplas sessões, crio documentos de handoff que capturam o estado completo:
## Handoff: Deliberation Infrastructure PRD-7
**Status:** Hook wiring complete, 81 Python unit tests passing
**Files changed:** hooks/post-deliberation.sh, hooks/deliberation-pride-check.sh
**Decision:** Placed post-deliberation in PostToolUse:Task, pride-check in Stop
**Blocked:** Spawn budget model needs inheritance instead of depth increment
**Next:** PRD-8 integration tests in tests/test_deliberation_lib.py
Meu diretório ~/.claude/handoffs/ contém 49 documentos de handoff de tarefas multi-sessão. Iniciar uma nova sessão com claude -c (continuar) ou ler o documento de handoff fornece à sessão sucessora o contexto completo com custo mínimo de tokens.6
O padrão de handoff me salvou durante a construção da deliberação. O PRD-4 (extensões de recursion-guard) exigia compreensão das decisões dos PRDs 1-3. Sem o handoff, a nova sessão teria que reler todos os arquivos modificados. Com o handoff, a sessão começou com o contexto arquitetural e foi direto para a implementação.
Estratégia 4: Delegação para subagentes
Subagentes rodam em janelas de contexto independentes. Delegar tarefas de pesquisa ou revisão para subagentes preserva o contexto da sessão principal para o trabalho de implementação.7
Meu sistema de recursion-guard gerencia isso automaticamente:
# From recursion-guard.sh - spawn budget enforcement
MAX_DEPTH=2
MAX_CHILDREN=5
DELIB_SPAWN_BUDGET=2
DELIB_MAX_AGENTS=12
Cada subagente retorna um resumo em vez de saída bruta, mantendo o contexto principal enxuto. Durante reescritas de posts do blog, delego tarefas de exploração (coletar dados CSS, ler código de hooks, mapear estruturas de diretórios) para subagentes. O contexto principal permanece focado na escrita enquanto os subagentes cuidam da pesquisa.
O orçamento de spawn foi aprendido da maneira difícil: uma sessão inicial sem limites gerou subagentes recursivos que, por sua vez, geraram mais subagentes. O hook de recursion-guard agora impõe limites de profundidade com validação segura de inteiros e orçamentos configuráveis.8
Os antipadrões que aprendi na prática
Ler arquivos inteiros quando você precisa de 10 linhas. No início do meu uso do Claude Code, eu lia arquivos inteiros de 2.000 linhas para uma única função. Use offsets de linha: Read file.py offset=100 limit=20 economiza mais de 15.000 tokens por leitura.
Manter saídas de erro verbosas no contexto. Após depurar o problema do orçamento de spawn, meu contexto continha mais de 40 stack traces de iterações falhas. Um único /compact após corrigir o bug liberou esse peso morto.
Começar cada sessão lendo todos os arquivos. Minhas primeiras sessões pré-carregavam 8 a 10 arquivos “para contexto”. Agora deixo que as ferramentas glob e grep do Claude Code encontrem os arquivos relevantes sob demanda, economizando mais de 100.000 tokens de pré-carregamento desnecessário.
Conclusões principais
Para desenvolvedores individuais: - Compacte após cada subtarefa concluída, não quando o Claude forçar a compactação; compactação proativa em intervalos de 25-30 minutos mantém a qualidade das respostas - Registre decisões-chave em arquivos de memória no sistema de arquivos conforme a sessão avança; meu MEMORY.md tem 54 entradas que persistem através de centenas de sessões - Use subagentes para tarefas de pesquisa que poluiriam o contexto principal; uma consulta de pesquisa em 5 arquivos custa mais de 75.000 tokens no contexto principal, mas apenas um resumo de 500 tokens via subagente
Para equipes:
- Padronize o formato dos documentos de handoff para tarefas multi-sessão; meus 49 handoffs seguem a mesma estrutura Status/Arquivos/Decisão/Bloqueio/Próximo passo
- Configure arquivos CLAUDE.md no nível do projeto com contexto arquitetural que é carregado automaticamente em cada sessão
Referências
-
Author’s measurement of token consumption across 50 Claude Code development sessions (2025-2026). Output quality degradation observed consistently at ~60% context utilization. ↩
-
Author’s measurement: average file read consumes 8,000-20,000 tokens depending on file size. 10 file reads plus tool outputs consume 40-60% of a 200K context window. ↩
-
Anthropic, “Claude Code Documentation,” 2025. Context compaction and the /compact command. ↩
-
Anthropic, “Claude Code Documentation,” 2025. Memory files and CLAUDE.md documentation. ↩
-
Author’s
.claude/projects/*/memory/MEMORY.mdfiles. 54 documented errors with cross-domain learning patterns across bash, Python, CSS, and HTML validation. ↩ -
Author’s session management workflow. 49 handoff documents in
~/.claude/handoffs/spanning multi-session infrastructure builds. ↩ -
Anthropic, “Claude Code Documentation,” 2025. Subagent context isolation. ↩
-
Author’s recursion-guard.sh implementation. Spawn budget model with depth limits, safe integer validation, and config-driven budgets. ↩