Pular para o conteúdo
claudemods

Contador de chamadas de ferramentas do Claude Code com /tally

Conta as chamadas de ferramentas do Claude por turno e por sessão, mostra o total junto ao spinner e adiciona /tally.

Permissões

  • Intercepta chamadas de ferramentasVê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
  • 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.291
último teste
requer
Claude Code ≥ 2.1.287
superfícies
spinner, transcrição, status
código-fonte
ClaudeMods (MIT)

Instale dentro do Claude Code:

/plugin install cm-tool-call-counter --marketplace rotbit/claudemods-marketplace
Todas as opções de instalação ↓

O que este mod faz?

O Contador de chamadas de ferramentas é um contador de chamadas de ferramentas do Claude Code. Enquanto o Claude trabalha, a linha do spinner ganha um sufixo com a contagem do turno atual, por exemplo · 7 tools, para que você veja o quanto um turno está movimentado sem rolar o histórico. Digite /tally a qualquer momento para ver uma tabela da sessão até agora:

**Tool calls** · this turn: 7 · this session: 41 (2 errors)

| Tool | Calls | Errors |
| --- | ---: | ---: |
| Bash | 18 | 2 |
| Read | 15 | 0 |
| Edit | 8 | 0 |

Ele é útil quando você quer entender por que um turno demorou, se o Claude está relendo os mesmos arquivos ou com que frequência os comandos de shell dele falham. Opcionalmente, a barra de status mantém o total acumulado: 🔧 41 tool calls (2 errors). Requer Claude Code 2.1.287 ou posterior.

Demonstração

A gravação pede ao Claude uma tarefa que precisa de várias ferramentas. O sufixo do spinner vai aumentando à medida que as chamadas acontecem, e rodar /tally em seguida imprime a tabela por ferramenta.

Instalação

Instale com um dos métodos do bloco de instalação. O /tally é registrado quando a sessão começa.

$ install cm-tool-call-counter

Requer Claude Code ≥ 2.1.287

  1. 1.Uma linha, dentro do Claude Code

    /plugin install cm-tool-call-counter --marketplace rotbit/claudemods-marketplace

    Cole em uma sessão em andamento (v2.1.275+). O Claude Code pede primeiro para adicionar o marketplace.

  2. 2.Pelo seu shell

    claude plugin marketplace add rotbit/claudemods-marketplace
    claude plugin install cm-tool-call-counter@claudemods

    Depois execute /reload-plugins em qualquer sessão que já esteja aberta.

  3. 3.Experimente sem instalar

    git clone https://github.com/rotbit/claudemods-marketplace
    claude --plugin-dir ./claudemods-marketplace/cm-tool-call-counter

    Carrega o mod só para uma sessão. Nada é adicionado às suas configurações.

Como funciona

A contagem acontece em um único hook tool.call que observa todas as ferramentas. Trecho de hooks/register.ts:

on('tool.call', async ($, e, next) => {
  const tool = String(e.tool)
  await update($, turn, t => addCall(t, tool))
  const now = await update($, session, t => addCall(t, tool))
  if (showInStatus) $.ui.status(statusText(now))

  const ran = await next(e)

  if (ran.deny !== undefined || ran.isError === true) {
    await update($, turn, t => addError(t, tool))
    const failed = await update($, session, t => addError(t, tool))
    if (showInStatus) $.ui.status(statusText(failed))
  }
  return ran
}).catch(($, e, next) => next(e))

on('ui.render', { component: 'Spinner' }, async ($, e, next) => {
  if (!showInSpinner) return next(e)
  const { count } = await read($, turn)
  if (count === 0) return next(e)
  return next({ ...e, props: { ...e.props, suffix: spinnerSuffix(e.props.suffix, count) } })
})

Cada chamada é contada no momento em que começa, em dois átomos $.state: turn, zerado por um hook turn.start, e session. Em seguida, o hook repassa a chamada sem alterações com next(e) e, se o resultado foi negado ou marcado com isError, registra um erro. O .catch executa a chamada de qualquer forma se a contagem lançar um erro, então o mod nunca consegue bloquear uma ferramenta.

O hook ui.render para o ponto Spinner reescreve apenas a prop suffix e repassa todo o resto para next, então o Claude Code continua desenhando o próprio spinner. Como a contagem fica em $.state, o spinner é redesenhado assim que o número muda. O /tally é registrado em session.start com $.command.register, e um hook command.run para tally retorna { text } montado por formatTable em hooks/tally.ts.

Personalize

Altere estas opções em /config. O texto do spinner vem de spinnerSuffix e o texto de status vem de statusText, ambos em hooks/tally.ts. Para ordenar a tabela do /tally de outro jeito, edite a chamada sort em formatTable.

ConfiguraçãoTipoPadrãoO que faz
showInSpinnerbooleantrueShow in spinner. Append " · N tools" (this turn's count) to the working spinner.
showInStatusbooleanfalseShow in status line. Also show the session's total tool calls and errors in the status line.

Altere isso no Claude Code com /config — o mod recarrega na hora.

Permissões e segurança

Intercepta chamadas de ferramentas aparece porque o mod usa o hook tool.call para todas as ferramentas. Ele apenas observa: nunca nega nem modifica uma chamada, e não olha para os argumentos além do nome da ferramenta. Altera a interface cobre o sufixo do spinner e o texto de status opcional. Adiciona comandos/ferramentas cobre o /tally.

Ele não executa comandos, não lê arquivos, não usa a rede e não guarda nada entre sessões. Desative-o com /plugin disable cm-tool-call-counter, ou inicie uma sessão com todos os mods desligados usando claude --safe-mode.

Intercepta chamadas de ferramentas
Vê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
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

Testado com Claude Code 2.1.291 no terminal, no macOS. Se você não vir nenhuma contagem:

  • Verifique se claude --version é 2.1.287 ou posterior e se o mod está ativado em /plugin.
  • Execute /reload-plugins depois de uma instalação pelo shell; o /tally aparece assim que a sessão reinicia o mod.
  • O sufixo só aparece enquanto o turno já fez pelo menos uma chamada de ferramenta.
  • showInSpinner pode estar desligado em /config.

As contagens cobrem o tempo desde que o mod foi carregado neste processo, então elas zeram depois de um recarregamento.

Perguntas frequentes

O contador de chamadas de ferramentas altera ou deixa as chamadas mais lentas?
Não. Ele conta a chamada, deixa que ela rode sem alterações com next(e) e conta um erro depois, se a chamada falhar. Se a própria contagem falhar, o handler .catch executa a chamada mesmo assim.
O que conta como erro no /tally?
Uma chamada cujo resultado volta com isError, ou uma que outro hook negou, por exemplo um mod de segurança recusando um comando Bash.
A contagem da sessão sobrevive a um reinício?
Não. As contagens ficam em $.state, que dura enquanto o processo atual do Claude Code estiver rodando. Uma nova sessão ou um recarregamento do mod começa do zero.
O /tally chama o modelo?
Não. O hook command.run responde diretamente a partir das contagens que o mod coletou, então é instantâneo e não usa tokens.
Posso ver o total sem abrir o /tally?
Ative showInStatus em /config para manter o total da sessão e o número de erros na barra de status.
Medidor de contexto em execução no Claude Code

Medidor 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.291

Bloquear comandos perigosos em execução no Claude Code

Bloquear comandos perigosos

Recusa rm -rf /, force-push na main, DROP TABLE, curl | sh e outros comandos Bash destrutivos antes de rodarem.

  • notificação
  • Intercepta chamadas de ferramentas
  • Altera a interface

testado com v2.1.291

Branch do Git acima do prompt em execução no Claude Code

Branch do Git acima do prompt

Mostra a branch do Git, a contagem de alterações e o status ahead/behind em uma faixa acima do prompt do Claude Code.

  • acima do prompt
  • Executa comandos
  • Intercepta chamadas de ferramentas
  • Altera a interface

testado com v2.1.291

Mais em Comandos slash, Contexto, cota e custo, Linha de status e barra do prompt.