Context Inspector: encontre o desperdício de contexto no Claude Code
Mostra o que preenche o contexto do Claude Code, quanto é desperdício e o que a compactação manteve.
Permissões
- Grava arquivosPode criar ou sobrescrever arquivos na sua máquina ($.fs.write).
- Intercepta chamadas de ferramentasVê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
- Lê seus promptsPode ver o que você digita e a transcrição da conversa (prompt.* / session.append / session.messages).
- Altera a interfaceDesenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
- Adiciona comandos/ferramentasRegistra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).
- testado com
- v2.1.303
- último teste
- requer
- Claude Code ≥ 2.1.287
- superfícies
- status, painel, notificação
- código-fonte
- YeonwooSung (Apache-2.0)
Instale dentro do Claude Code:
/plugin install context-inspector --marketplace YeonwooSung/my-claude-code-modsO que este mod faz?
O Context Inspector é um mod da comunidade de YeonwooSung (my-claude-code-mods) que procura o desperdício de contexto no Claude Code. Ele mantém um registro de tudo o que entra na conversa (prompts, respostas, resultados de ferramentas, anexos) e responde a três perguntas: o que está preenchendo a janela agora, por que a mesma informação volta várias vezes e o que uma compactação manteve ou perdeu.
Ele adiciona uma linha de status como ctx 62% · waste≈8.1k, em que a porcentagem é medida e o desperdício é estimado. Também adiciona três comandos. /context-inspect imprime um relatório de texto com as seções overview, occupants, rereads, similar, compactions, efficiency e advice. /context-pane abre um painel ao vivo. /context-export salva o registro como JSONL, somente metadados.
As análises são específicas. As releituras de um arquivo são classificadas, por exemplo como sem alteração enquanto a cópia anterior ainda está na janela (desperdício puro), após uma edição ou após uma compactação. Saídas de ferramentas quase duplicadas são agrupadas por um SimHash lexical, não por significado. Depois de uma compactação, ele verifica se arquivos editados e lidos, erros e identificadores de usuário ainda aparecem no resumo. O README do autor exige o Claude Code 2.1.287 ou posterior.
Demonstração
A gravação inicia o Claude Code com o mod carregado no pequeno projeto de demonstração e pede ao Claude que leia README.md e diga em uma frase o que é o projeto. Quando o turno termina, o rodapé mostra context-inspector: ctx 4% · waste≈0. Em seguida, executamos /context-inspect. O relatório lista os tokens ativos (cerca de 6,2k em 17 itens), os principais ocupantes por categoria (os anexos de lista de skills, instruções de MCP e ferramentas adiadas), releituras, saídas semelhantes, compactações, eficiência e conselhos. Nesta sessão curta nada foi lido duas vezes, então o desperdício é zero e os conselhos dizem que nada se destaca.
Instalação
Use qualquer um dos métodos do bloco de instalação; todos instalam diretamente do marketplace do próprio autor. A linha de status aparece depois do próximo início de sessão, quando o primeiro turno é concluído.
$ install context-inspector
Requer Claude Code ≥ 2.1.287
Instala a partir do marketplace do autor: YeonwooSung/my-claude-code-mods
1.Uma linha, dentro do Claude Code
/plugin install context-inspector --marketplace YeonwooSung/my-claude-code-modsCole em uma sessão em andamento (v2.1.275+). O Claude Code pede primeiro para adicionar o marketplace.
2.Pelo seu shell
claude plugin marketplace add YeonwooSung/my-claude-code-mods claude plugin install context-inspector@my-claude-code-modsDepois execute /reload-plugins em qualquer sessão que já esteja aberta.
3.Experimente sem instalar
git clone https://github.com/YeonwooSung/my-claude-code-mods claude --plugin-dir ./my-claude-code-mods/context-inspectorCarrega o mod só para uma sessão. Nada é adicionado às suas configurações.
Como funciona
O módulo é uma única função register em hooks/register.tsx que envolve os eventos e os repassa sem alteração. Cada passo de registro passa por um auxiliar que engole os próprios erros, então o inspetor não consegue quebrar uma sessão. Uma chamada de ferramenta é registrada antes e depois de executar, e a resposta volta exatamente como chegou:
on('tool.call', async ($, e, next) => {
const id = e.tool_use_id
if (id !== undefined) safe(() => ingestToolCall(ledger, id, String(e.tool), e.agentId, e as unknown as Record<string, unknown>))
const answer = await next(e)
if (id !== undefined) safe(() => ingestToolResult(ledger, id, answer))
return answer
}).catch(($, e, next) => next(e))O trecho é de hooks/register.tsx. As linhas chegam por session.append, os tamanhos medidos das requisições por turn.step e as compactações por session.compact. Depois de cada turno, turn.complete enfileira uma repintura que lê $.session.usage() e escreve a linha de status. O código de análise em hooks/core/ é TypeScript simples com apenas importações locais, e o registro é limitado a 20.000 itens.
Personalize
/config tem duas opções. outputDir define onde o /context-export grava; vazio significa ~/.claude/context-inspector. toastAdvice (ativada por padrão) mostra um aviso por sessão na primeira vez que aparece uma recomendação de severidade alta. Os comandos aceitam argumentos: /context-inspect advice mostra uma única seção e --agents inclui os subagentes.
Permissões e segurança
Lemos todos os arquivos que o plugin pode executar antes de rodá-lo: o manifesto, hooks/hooks.json, hooks/register.tsx e tudo em hooks/core/, incluindo as regras de mascaramento. Não há package.json, script de instalação, binário nem código empacotado, e as únicas importações são arquivos locais.
- Rede, processos, daemons, telemetria: nenhum. Nada de fetch, nada de comandos de shell, nada que continue rodando depois que o Claude Code fecha.
- Altera a interface: a linha de status, um aviso e o painel. Adiciona comandos: os três acima.
- Observa cada chamada de ferramenta e cada linha por
tool.call,session.append,turn.stepesession.compact. São hooks de controle, mas cada um devolve sem alteração o resultado do próximo manipulador e tem um.catchde reserva; nada é bloqueado ou reescrito. Ovalidatetambém observa que hooks desession.compactnão rodam em um plugin instalado por uma pessoa quando uma organização gerencia o Claude Code, a menos que a organização o liste nas configurações gerenciadas. - Gravação de arquivos: somente em
/context-export, por$.fs.write, em<outputDir>/<id da sessão>/context-<load>-<n>.jsonl. O padrão fica dentro de~/.claude, na subpasta do próprio plugin. Ele lêHOMEpara expandir~. Os caminhos de arquivo são exportados como estão e os demais alvos são mascarados da melhor forma possível; o autor recomenda revisar as exportações antes de compartilhá-las. - Influência nos prompts: nenhuma encontrada. Ele não injeta texto em prompts nem em resultados de ferramentas; os conselhos vão só para você.
- Requisitos externos: nenhum. Licença: Apache-2.0, com arquivo LICENSE na raiz do repositório.
O claude plugin validate não relatou erros nem avisos, apenas as observações acima. Os 102 testes do autor passaram no Claude Code 2.1.303.
- Grava arquivos
- Pode criar ou sobrescrever arquivos na sua máquina ($.fs.write).
- Intercepta chamadas de ferramentas
- Vê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
- Lê seus prompts
- Pode ver o que você digita e a transcrição da conversa (prompt.* / session.append / session.messages).
- Altera a interface
- Desenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
- Adiciona comandos/ferramentas
- Registra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).
Compatibilidade e solução de problemas
Verificado com o Claude Code 2.1.303 no macOS (validate e testes). Se a linha de status não aparecer:
claude --versioné 2.1.287 ou posterior.- Um turno foi concluído; a linha é pintada depois de
turn.complete. /context-inspectimprime o relatório mesmo sem a linha de status, então serve para conferir se o mod está carregado.- No painel de chat do VS Code só funcionam os hooks e o texto dos comandos; use
/context-inspect.
Limites conhecidos do README: depois de recarregar, retomar ou usar /clear, o registro recomeça, e a sobrevivência à compactação é julgada por correspondência de substring, então o que o resumo parafraseia conta como perdido.
Perguntas frequentes
- O Context Inspector altera minha sessão ou chama o modelo?
- Não. O README do autor diz que ele só observa, e o código confirma. Os hooks repassam sem alteração cada chamada de ferramenta, linha, passo e compactação, e o modelo nunca é chamado. Do estado do Claude Code ele lê apenas os números de uso e, uma vez após um recarregamento, as mensagens já existentes.
- O número de desperdício é exato?
- Não. A ocupação da janela vem dos tokens que a API informou, mas o tamanho de cada item e o desperdício são estimativas, marcadas com ≈ no relatório. O tamanho de um item é o número de caracteres dividido por quatro, multiplicado por um fator de calibração entre 0,5 e 2,0.
- O que o /context-export grava, e onde?
- Apenas metadados, como arquivos JSONL em <outputDir>/<id da sessão>/. O padrão é ~/.claude/context-inspector. Os caminhos de arquivo são mantidos; comandos, padrões e URLs são mascarados da melhor forma possível e cortados em 200 caracteres. Nada é gravado até você executar o comando.
- Como ele difere do Context Bar?
- O Context Bar divide a janela por categoria, como o /context. O Context Inspector acompanha cada item que entrou na conversa, então consegue dizer qual arquivo foi lido duas vezes, quais saídas se repetem e quais arquivos editados a compactação descartou. Ele adiciona uma linha de status, um painel e um relatório de texto em vez de uma faixa.
- Funciona depois de /clear ou de retomar a sessão?
- Sim, com limites. O registro é limpo e, em seguida, a conversa principal é relida uma única vez a partir das mensagens da sessão. Anexos, subagentes e tempos não são recuperados, e a primeira compactação após um recarregamento conta os prompts e respostas recuperados como descartados.
# Mods relacionados
DestaqueContext Bar
A janela de contexto do Claude Code como uma barra empilhada acima do prompt, uma cor por categoria, com tokens.
- acima do prompt
- Altera a interface
- Adiciona comandos/ferramentas
- Armazena dados
testado com v2.1.291
DestaqueCompact Adviser
Sugere rodar /compact quando a sessão do Claude Code chega a um checkpoint, avaliado pelo modelo Jev da TypeSafe.
- status
- painel
- notificação
- Lê arquivos
- Grava arquivos
- Rede
- Lê seus prompts
- Altera a interface
- Adiciona comandos/ferramentas
- Armazena dados
testado com v2.1.291
DestaqueMedidor de contexto
Uso do contexto, dos limites de 5 horas e 7 dias e custo da sessão na barra de status, com aviso perto do limite.
- status
- notificação
- Altera a interface
testado com v2.1.310
Mais em Contexto, cota e custo, Comandos slash, Painéis e dashboards.