Cache Clock: veja quando o cache de prompt do Claude Code expira
Uma linha do cache de prompt sob a barra de status: tempo restante, taxa de acertos e tokens recacheados a frio.
Permissões
- Lê arquivosPode ler arquivos e listar diretórios na sua máquina ($.fs.read / list / stat / exists).
- Grava arquivosPode criar ou sobrescrever arquivos na sua máquina ($.fs.write).
- Executa comandosPode executar programas de shell na sua máquina ($.process.run / spawn). Confira no código-fonte exatamente quais.
- Adiciona comandos/ferramentasRegistra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).
- testado com
- v2.1.296
- último teste
- requer
- Claude Code ≥ 2.1.287
- superfícies
- status
- código-fonte
- Hamza Zafar (hamzafer) (MIT)
Instale dentro do Claude Code:
/plugin install cache-clock --marketplace hamzafer/claude-code-modsO que este mod faz?
O Cache Clock é um mod da comunidade de Hamza Zafar (hamzafer), parte da coleção claude-code-mods. Ele mostra o estado do cache de prompt do Claude Code em uma linha abaixo da barra de status. Enquanto o cache está quente, a linha é verde e aparece assim: cache ● 1h ██████████ 59m left · hit 48% · misses 0. São a duração do cache (5m ou 1h), uma barra de dez células com o que resta, o tempo restante, a taxa de acertos e o número de misses.
Quando resta menos de 20% da duração, a linha fica amarela. Depois que o cache expira, ela fica vermelha: cache ○ cold · next message re-caches 82k tokens, com a causa do último miss quando o Claude Code a informa. A ideia é ver, antes de enviar uma mensagem, se ela será atendida pelo cache ou se vai pagar para reconstruir todo o prefixo.
Os números não são calculados pelo mod. O Claude Code envia um objeto prompt_cache ao comando da barra de status (a partir da 2.1.251) e o mod apenas o formata. Plugins não conseguem registrar uma barra de status, então o mod adiciona o comando /cache-clock: setup faz statusLine apontar para o script do mod e remove deixa tudo como estava. Se você já tem uma barra de status, ela continua e a linha do cache fica abaixo dela.
Demonstração
A gravação inicia o Claude Code com o mod carregado no pequeno projeto de demonstração, com a barra de status já apontada para o script do mod; pulamos de propósito a etapa /cache-clock setup para que a demo não escreva no ~/.claude de quem grava. Pede-se ao Claude que leia o README.md e descreva o projeto em uma frase. Enquanto o turno roda, abaixo do prompt aparece uma linha verde cache ● 1h com a barra cheia, 59m left e hit 0% · misses 0. Quando o turno termina, a mesma linha passa para hit 48% · misses 0.
Instalação
Use qualquer um dos métodos do bloco de instalação; todos instalam direto do marketplace do próprio autor. Depois, execute /cache-clock setup em uma sessão. A linha aparece após a próxima resposta do Claude, e /cache-clock sozinho diz se ela está ativa.
$ install cache-clock
Requer Claude Code ≥ 2.1.287
Instala a partir do marketplace do autor: hamzafer/claude-code-mods
1.Uma linha, dentro do Claude Code
/plugin install cache-clock --marketplace hamzafer/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 hamzafer/claude-code-mods claude plugin install cache-clock@claude-code-modsDepois execute /reload-plugins em qualquer sessão que já esteja aberta.
3.Experimente sem instalar
git clone https://github.com/hamzafer/claude-code-mods claude --plugin-dir ./claude-code-mods/mods/cache-clockCarrega o mod só para uma sessão. Nada é adicionado às suas configurações.
Como funciona
O hooks/register.ts registra o comando e faz a configuração. O statusline/cache-clock.mjs incluído é o que o Claude Code executa a cada atualização da barra de status. Ele lê o JSON da stdin, executa o seu comando original se um foi guardado e imprime a linha do cache. O formatador puro está em statusline/render.mjs:
export function render(input, nowSeconds) {
const cache = input?.prompt_cache
if (!cache || typeof cache !== 'object') return ''
if (cache.caching_observed === false) return ''
const left = typeof cache.expires_at === 'number' ? cache.expires_at - nowSeconds : null
const isWarm = cache.warm !== false && left !== null && left > 0
return isWarm ? warmLine(cache, left) : coldLine(cache)
}A linha conta como fria assim que expires_at passa, mesmo que a entrada dissesse quente quando foi montada. O setup grava os dois scripts em <config dir>/cache-clock/ em vez de na pasta do plugin, porque a pasta do plugin muda a cada versão. Na próxima abertura de sessão, o refreshScripts sobrescreve as cópias com as versões novas se a barra de status for a do mod. O setup define refreshInterval como 30 segundos, a menos que o seu já seja menor, para que a contagem regressiva ande entre as respostas.
Personalize
Não há opções. /cache-clock setup e /cache-clock remove são os únicos interruptores. Para mudar o visual, edite render.mjs: BAR_CELLS para a largura da barra, WARN_SHARE para o ponto em que a linha fica amarela (20% por padrão) e os códigos de escape de cor no início. Edite a cópia em <config dir>/cache-clock/; enquanto estiver configurado, o mod a sobrescreve com a versão incluída na próxima abertura de sessão.
Permissões e segurança
Antes de executar, lemos todos os arquivos que o plugin executa: .claude-plugin/plugin.json, hooks/hooks.json, hooks/register.ts, os dois scripts da barra de status e os testes. Não há package.json, script de instalação, código empacotado ou minificado, nem binários. O repositório tem um LICENSE MIT.
- Altera configurações só quando você pede. Na instalação e ao abrir a sessão nada é gravado, exceto a atualização dos próprios scripts. O
/cache-clock setupgravasettings.jsonna pasta de configuração do Claude (ouCLAUDE_CONFIG_DIR), ou<project>/.claude/settings.local.jsonquando a barra de status vem das configurações do projeto. Também grava os scripts e um backupsetup-<hash>.jsonem<config dir>/cache-clock/. O/cache-clock removerestaura astatusLineanterior, a menos que você a tenha alterado depois. Ele não mexe em barras de status gerenciadas (policy) nem nas de--settings, e deixa intacto um JSON de configurações inválido. - Executa um comando a cada atualização. Depois do setup, o Claude Code executa
node "<config dir>/cache-clock/cache-clock.mjs". Esse script roda o seu comando de barra de status anterior por um shell (spawnSync(..., { shell: true }), limite de 5 s) com a mesma entrada. O própriosetupexecutanode --versionpara verificar se o Node existe. - Sem rede, sem telemetria, sem chamadas ao modelo, sem daemon. Ele lê
HOMEeCLAUDE_CONFIG_DIRsó para achar a pasta de configuração. Não lê tokens nem credenciais. - Sem injeção de prompt e sem hooks de bloqueio. Registra apenas
session.starte o próprio comando, e não acrescenta nada a prompts ou resultados de ferramentas. - Requisitos: Node no PATH e Claude Code 2.1.251 ou mais recente.
O claude plugin validate não informou erros nem avisos, e os 25 testes do autor passaram no Claude Code 2.1.296.
- Lê arquivos
- Pode ler arquivos e listar diretórios na sua máquina ($.fs.read / list / stat / exists).
- Grava arquivos
- Pode criar ou sobrescrever arquivos na sua máquina ($.fs.write).
- Executa comandos
- Pode executar programas de shell na sua máquina ($.process.run / spawn). Confira no código-fonte exatamente quais.
- 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.296 no macOS (validate, testes e demo). Se a linha não aparecer:
- Execute
/cache-clock. Deve dizer “cache-clock is on”. - Envie uma mensagem primeiro. A linha fica vazia até o
prompt_cachechegar, e também quando o provedor informa que não há cache. claude --versioné 2.1.251 ou mais recente enode --versionfunciona no mesmo terminal.- Sua barra de status não vem de configurações gerenciadas nem de
--settings; o setup não altera essas. - Depois de fazer o setup em uma sessão já aberta, aguarde a próxima resposta ou a atualização de 30 segundos.
Perguntas frequentes
- O Cache Clock chama a API ou gasta tokens?
- Não. Ele só formata os valores de prompt_cache que o Claude Code já entrega ao comando da barra de status. Os scripts não fazem requisições de rede nem chamam o modelo.
- O que o /cache-clock setup altera na minha máquina?
- Copia dois scripts para a pasta de configuração do Claude, em cache-clock/, guarda ali a sua barra de status anterior e edita um arquivo de configurações para que statusLine aponte para o script. A barra de status compartilhada de um projeto não é editada: ela recebe uma substituição local. O /cache-clock remove restaura o original guardado.
- O que acontece com a minha barra de status atual?
- Ela continua rodando. O script do mod executa primeiro o seu comando original com a mesma entrada, imprime a saída dele e acrescenta a linha do cache abaixo. O comando original roda por um shell com limite de 5 segundos.
- O que a linha mostra quando o cache está frio?
- Um “cache ○ cold” em vermelho, quantos tokens a próxima mensagem recacheia (por exemplo 82k) e, quando o Claude Code informa, a causa do último miss, como tools changed.
- Qual versão do Claude Code preciso ter?
- A 2.1.251 ou mais recente, a primeira a enviar prompt_cache à barra de status. Em versões mais antigas a linha fica vazia. O Node precisa estar no PATH.
# Mods relacionados
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
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
Mais em Linha de status e barra do prompt, Contexto, cota e custo.