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
- Quelle
- ClaudeMods (MIT)
In Claude Code installieren:
/plugin install cm-tool-call-counter --marketplace rotbit/claudemods-marketplaceWas 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.Eine Zeile, direkt in Claude Code
/plugin install cm-tool-call-counter --marketplace rotbit/claudemods-marketplaceIn eine laufende Sitzung einfügen (v2.1.275+). Claude Code fragt zuerst, ob der Marketplace hinzugefügt werden soll.
2.Aus deiner Shell
claude plugin marketplace add rotbit/claudemods-marketplace claude plugin install cm-tool-call-counter@claudemodsFühre danach in jeder bereits geöffneten Sitzung /reload-plugins aus.
3.Ohne Installation ausprobieren
git clone https://github.com/rotbit/claudemods-marketplace claude --plugin-dir ./claudemods-marketplace/cm-tool-call-counterLä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.
| Einstellung | Typ | Standard | Funktion |
|---|---|---|---|
| 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. |
Ä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 --version2.1.287 oder neuer meldet und die Mod in/pluginaktiviert ist. - Führe nach einer Installation über die Shell
/reload-pluginsaus;/tallyerscheint, sobald die Sitzung die Mod neu startet. - Der Zusatz erscheint nur, solange ein Turn mindestens einen Tool-Aufruf gemacht hat.
showInSpinnerist in/configeventuell 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.
# Ähnliche Mods

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