Motivação
- Nas notas de lançamento do Claude Opus 4.7, a parte que mais chamou atenção foi o “aumento no uso de tokens”.
- Agora que vivemos uma era em que, com tokens e tempo suficientes, dá para fazer muito mais coisas, a eficiência no uso de tokens também continua sendo um tema importante
- Desde por volta de março, a comunidade ficou em polvorosa com o fato de o Claude Code ter reduzido discretamente o TTL do cache de 1 hora → 5 minutos
- Ao medir no Opus 4.7, houve uma análise indicando consumo de quase 1,5x mais tokens do que no 4.6
- Também existe um repositório de pesquisa sobre a eficiência do cache do Claude Code
- Surgiu então a dúvida: “será que dá para melhorar a eficiência de tokens no Claude Code e no Codex mudando valores de configuração?”. Ao analisar a documentação oficial do Claude Code (configuração/variáveis de ambiente/IDE), a documentação oficial do Codex (configuração/variáveis de ambiente/MCP) e também o código-fonte do Codex, foi possível chegar a resultados relevantes
- Além do modo interativo usado no dia a dia, também descobri muitas formas de melhorar a eficiência de tokens, a velocidade de inicialização e a estabilidade de forma programática no modo não interativo
Prompt para analisar meu estado atual
Sem rodeios, aqui vai um prompt para quem quer inspecionar como está a configuração do seu agente de programação:
https://gist.github.com/spilist/c468cbf1ed0ffc91100f813aabdcd520/… 를 읽고 그대로 실행해줘
O que realmente consome tokens
Em agentes de programação, geralmente há três caminhos por onde os tokens “vazam”:
- Texto adicional anexado automaticamente a cada sessão ou a cada turno
- Saídas longas demais de chamadas de ferramenta que permanecem no histórico da conversa
- Chamadas extras causadas por conexões externas, como busca, conectores e integração com IDE
A seguir, os controles disponíveis no Claude Code e no Codex para reduzir esses três pontos. (Ficam de fora os básicos, como desativar servidores MCP/plugins que você não usa, escolher o modelo e ajustar o nível de reasoning.)
- As explicações de cada configuração, bem como os trade-offs, estão descritas em detalhes no blog
Claude Code (última versão verificada: 2.1.114)
-
includeGitInstructions: false
-
autoConnectIde: false
-
CLAUDE_CODE_GLOB_NO_IGNORE=false
-
Definir limites de saída (
BASH_MAX_OUTPUT_LENGTH,CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS,MAX_MCP_OUTPUT_TOKENS) -
Variáveis de ambiente e flags para tarefas curtas e simples, ou para modo não interativo
ENABLE_CLAUDEAI_MCP_SERVERS=false: desativar servidores MCPCLAUDE_CODE_DISABLE_AUTO_MEMORY=1: impedir o carregamento de memórias salvas automaticamenteCLAUDE_CODE_DISABLE_CLAUDE_MDS=1: ignorarCLAUDE.mdglobais/do projetoCLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1: excluir subagentes embutidos e definições de skills do prompt do sistema--tools: ativa seletivamente ferramentas nativas. Com--tools "", desativa todas. Em workers que usam apenas a inteligência do modelo, pode ser aceitável desligar tudo; já em tarefas simples no modo interativo, se desligar tudo ele simplesmente não consegue trabalhar, então vale ativar só o necessário, como"Bash,Edit,Glob,Grep,Read,Write"--strict-mcp-config: usa apenas a configuração de MCP explicitada na CLI e ignora a configuração global de MCP. Isso permite injetar de forma limpa apenas os conectores necessários em cada worker.--disable-slash-commands: remove do prompt do sistema definições de comandos com barra como/helpe/clear--no-session-persistence: não usa o caminho de salvar/retomar sessão, então não ficam rastros de execuções pontuais--exclude-dynamic-system-prompt-sections: remove seções que variam por máquina/ambiente, aumentando a taxa de reutilização do cache de prompt--system-prompt: em último caso, também dá para substituir completamente o prompt do sistema do Claude
-
Esvaziar o attribution
Codex CLI (última versão verificada: 0.121.0 + código-fonte do GitHub do Codex correspondente à versão)
- Desativar o MCP (apps/connectores) conectado ao ChatGPT (
features.apps = false) - web_search = "disabled"
- Definir limites de saída (
tool_output_token_limit) - Flags para rodar bem no modo não interativo
--profile: permite agrupar e aplicar seletivamente certas configurações (web_search = "disabled",tool_output_token_limit = 2000etc.)--json+--output-last-message FILE: facilita parsing/extração em pipelines e reduz o reconsumo de tokens nas etapas de pós-processamento--sandbox read-only: em automações que só precisam de leitura, bloqueia tentativas acidentais de escrita → loop de retry → desperdício de tokens--skip-git-repo-check: permite executar mesmo fora de diretórios confiáveis--ephemeral: não salva arquivos de sessão em disco--color never: deixa a saída em pipe mais limpa
- Esvaziar o attribution
Conclusão
Embora a checagem de fatos tenha sido feita com bastante cuidado, naturalmente ainda pode haver partes incorretas. Se quiser apontar algo, agradeço desde já.
5 comentários
Parece que vai ser um bom material de referência. Se a abordagem do texto principal é fechar a válvula dos "tokens de entrada",
eu já passei muito por casos em que o problema é a própria quantidade de coisas "registradas", então experimentei criar uma ferramenta chamada claude-slim.
É uma CLI que faz varredura, classificação e organização de situações como metade de 60 skills nunca ter sido usada, ou o CLAUDE.md ter ficado inchado por causa de plugins. A contagem de tokens é baseada em js-tiktoken,
e, em vez de remover, move para
skills.disabled/, então dá para restaurar a qualquer momento.https://github.com/iops-leo/claude-slim
Como a direção complementa exatamente as configurações do texto, acho que vale a pena usar em conjunto
Nossa, obrigado por compartilhar!
Obrigado por compartilhar essa informação útil. Fundamentalmente, tenho sentido que o próprio uso de tokens diminuiu demais, então seria bom se aumentassem isso no Claude. Como o harness fica rodando e acaba sendo interrompido no meio...
Obrigado. O consumo de tokens do Claude também é alto e, comparado ao Codex, eu fico um pouco menos satisfeito com o trabalho, então ultimamente tenho trabalhado mais com o Codex.
Obrigado.