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-marketplaceO 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.Uma linha, dentro do Claude Code
/plugin install cm-tool-call-counter --marketplace rotbit/claudemods-marketplaceCole 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 rotbit/claudemods-marketplace claude plugin install cm-tool-call-counter@claudemodsDepois execute /reload-plugins em qualquer sessão que já esteja aberta.
3.Experimente sem instalar
git clone https://github.com/rotbit/claudemods-marketplace claude --plugin-dir ./claudemods-marketplace/cm-tool-call-counterCarrega 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ção | Tipo | Padrão | O que faz |
|---|---|---|---|
| showInSpinner | boolean | true | Show in spinner. Append " · N tools" (this turn's count) to the working spinner. |
| showInStatus | boolean | false | Show 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-pluginsdepois de uma instalação pelo shell; o/tallyaparece assim que a sessão reinicia o mod. - O sufixo só aparece enquanto o turno já fez pelo menos uma chamada de ferramenta.
showInSpinnerpode 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.
# Mods relacionados

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