Zum Inhalt springen
claudemods

Claude Code Tool-Call-Zähler mit /tally

Zählt Claudes Tool-Aufrufe pro Turn und Sitzung, zeigt sie neben dem Spinner und ergänzt /tally als Übersicht.

Berechtigungen

  • Fängt Tool-Aufrufe abSieht jeden Tool-Aufruf von Claude (tool.call / tool.check) und könnte ihn blockieren oder verändern.
  • Verändert die OberflächeZeichnet in die Oberfläche von Claude Code: Leisten, Bereiche, Statustext, Toasts (ui.render / $.ui.*).
  • Fügt Befehle/Tools hinzuRegistriert neue Slash-Befehle oder Tools, die du oder Claude aufrufen können ($.command.register / $.tool.register).
getestet mit
v2.1.291
zuletzt getestet
erfordert
Claude Code ≥ 2.1.287
Oberflächen
Spinner, Verlauf, Statuszeile

In Claude Code installieren:

/plugin install cm-tool-call-counter --marketplace rotbit/claudemods-marketplace
Alle Installationswege ↓

Was macht diese Mod?

Diese Mod ist ein Claude Code Tool-Call-Zähler. Während Claude arbeitet, bekommt die Spinner-Zeile einen Zusatz mit der Zahl der Aufrufe in diesem Turn, zum Beispiel · 7 tools. So siehst du, wie beschäftigt ein Turn ist, ohne durch das Transkript zu scrollen. Gib jederzeit /tally ein, um eine Tabelle der bisherigen Sitzung zu bekommen:

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

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

Das ist nützlich, wenn du wissen willst, warum ein Turn so lange gedauert hat, ob Claude dieselben Dateien immer wieder liest oder wie oft seine Shell-Befehle fehlschlagen. Optional hält die Statuszeile die laufende Gesamtzahl fest: 🔧 41 tool calls (2 errors). Benötigt Claude Code 2.1.287 oder neuer.

Demo

In der Aufnahme bekommt Claude eine Aufgabe, für die mehrere Tools nötig sind. Der Spinner-Zusatz zählt mit jedem Aufruf hoch, und ein anschließendes /tally gibt die Tabelle pro Tool aus.

Installation

Installiere die Mod mit einer der Methoden im Installationsblock. /tally wird beim Start der Sitzung registriert.

$ install cm-tool-call-counter

Erfordert Claude Code ≥ 2.1.287

  1. 1.Eine Zeile, direkt in Claude Code

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

    In eine laufende Sitzung einfügen (v2.1.275+). Claude Code fragt zuerst, ob der Marketplace hinzugefügt werden soll.

  2. 2.Aus deiner Shell

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

    Führe danach in jeder bereits geöffneten Sitzung /reload-plugins aus.

  3. 3.Ohne Installation ausprobieren

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

    Lädt die Mod nur für eine Sitzung. An deinen Einstellungen wird nichts geändert.

So funktioniert es

Das Zählen passiert in einem einzigen tool.call-Hook, der jedes Tool beobachtet. Aus 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) } })
})

Ein Aufruf wird schon beim Start gezählt, und zwar in zwei $.state-Atomen: turn, das ein turn.start-Hook zurücksetzt, und session. Danach reicht der Hook den Aufruf mit next(e) unverändert weiter und vermerkt einen Fehler, wenn das Ergebnis abgelehnt oder mit isError markiert wurde. Der .catch führt den Aufruf trotzdem aus, falls das Zählen einen Fehler wirft – die Mod kann also nie ein Tool blockieren.

Der ui.render-Hook für die Render-Stelle Spinner ändert nur die Prop suffix und reicht alles andere an next weiter, sodass Claude Code seinen eigenen Spinner weiterhin selbst zeichnet. Weil die Zahl in $.state liegt, wird der Spinner neu gezeichnet, sobald sie sich ändert. /tally wird in session.start mit $.command.register registriert, und ein command.run-Hook für tally gibt { text } zurück, das formatTable in hooks/tally.ts erzeugt.

Anpassen

Diese Optionen änderst du in /config. Der Wortlaut des Spinner-Zusatzes stammt aus spinnerSuffix und der Statustext aus statusText, beide in hooks/tally.ts. Um die Tabelle von /tally anders zu sortieren, bearbeite den sort-Aufruf in formatTable.

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

Ändere diese Werte in Claude Code mit /config – die Mod lädt sich automatisch neu.

Berechtigungen & Sicherheit

Fängt Tool-Aufrufe ab erscheint, weil die Mod sich für jedes Tool in tool.call einhängt. Sie beobachtet nur: Sie verweigert oder verändert nie einen Aufruf und schaut sich von den Argumenten nichts außer dem Tool-Namen an. Verändert die Oberfläche betrifft den Spinner-Zusatz und den optionalen Statustext. Fügt Befehle/Tools hinzu betrifft /tally.

Sie führt keine Befehle aus, liest keine Dateien, nutzt kein Netzwerk und speichert nichts über Sitzungen hinweg. Deaktiviere sie mit /plugin disable cm-tool-call-counter oder starte eine Sitzung ganz ohne Mods mit claude --safe-mode.

Fängt Tool-Aufrufe ab
Sieht jeden Tool-Aufruf von Claude (tool.call / tool.check) und könnte ihn blockieren oder verändern.
Verändert die Oberfläche
Zeichnet in die Oberfläche von Claude Code: Leisten, Bereiche, Statustext, Toasts (ui.render / $.ui.*).
Fügt Befehle/Tools hinzu
Registriert neue Slash-Befehle oder Tools, die du oder Claude aufrufen können ($.command.register / $.tool.register).

Kompatibilität & Fehlerbehebung

Getestet mit Claude Code 2.1.291 im Terminal unter macOS. Wenn du keine Zahl siehst:

  • Prüfe, ob claude --version 2.1.287 oder neuer meldet und die Mod in /plugin aktiviert ist.
  • Führe nach einer Installation über die Shell /reload-plugins aus; /tally erscheint, sobald die Sitzung die Mod neu startet.
  • Der Zusatz erscheint nur, solange ein Turn mindestens einen Tool-Aufruf gemacht hat.
  • showInSpinner ist in /config eventuell ausgeschaltet.

Die Zählerstände umfassen die Zeit seit dem Laden der Mod in diesem Prozess und werden daher nach einem Neuladen zurückgesetzt.

FAQ

Verändert oder verlangsamt der Tool-Call-Zähler Tool-Aufrufe?
Nein. Er zählt den Aufruf, lässt ihn mit next(e) unverändert laufen und zählt danach einen Fehler, falls der Aufruf fehlgeschlagen ist. Schlägt das Zählen selbst fehl, führt der .catch-Handler den Aufruf trotzdem aus.
Was zählt in /tally als Fehler?
Ein Aufruf, dessen Ergebnis mit isError zurückkommt, oder einer, den ein anderer Hook abgelehnt hat – zum Beispiel eine Sicherheits-Mod, die einen Bash-Befehl verweigert.
Überlebt der Sitzungszähler einen Neustart?
Nein. Die Zählerstände liegen in $.state, das für den aktuellen Claude-Code-Prozess besteht. Eine neue Sitzung oder ein Neuladen der Mod beginnt bei null.
Ruft /tally das Modell auf?
Nein. Der command.run-Hook beantwortet den Befehl direkt aus den gesammelten Zählerständen der Mod. Das geht sofort und verbraucht keine Tokens.
Kann ich die Gesamtzahl sehen, ohne /tally zu öffnen?
Schalte showInStatus in /config ein, um die Gesamtzahl der Sitzung und die Fehlerzahl dauerhaft in der Statuszeile zu sehen.
Kontext-Meter in Claude Code

Kontext-Meter

Kontextfüllstand, 5-Stunden- und 7-Tage-Plannutzung und Sitzungskosten in der Statuszeile, plus Warnung vor dem Limit.

  • Statuszeile
  • Toast
  • Verändert die Oberfläche

getestet mit v2.1.291

Gefährliche Befehle blockieren in Claude Code

Gefährliche Befehle blockieren

Verweigert rm -rf /, Force-Push auf main, DROP TABLE, curl | sh und andere destruktive Bash-Befehle vor der Ausführung.

  • Toast
  • Fängt Tool-Aufrufe ab
  • Verändert die Oberfläche

getestet mit v2.1.291

Git-Branch über dem Prompt in Claude Code

Git-Branch über dem Prompt

Zeigt Git-Branch, geänderte Dateien und Ahead/Behind-Status in einer Zeile über dem Prompt von Claude Code.

  • über dem Prompt
  • Führt Befehle aus
  • Fängt Tool-Aufrufe ab
  • Verändert die Oberfläche

getestet mit v2.1.291

Mehr in Slash-Commands, Kontext, Kontingent, Kosten, Statuszeile & Prompt-Leiste.