Anbinden · Weg C

Claude Code

Ein Stop-Hook liest nach jeder Antwort das Sitzungstranskript und meldet die Nutzungsangaben je Antwort an Tokenwacht. Jede Sitzung wird ein Lauf, der Agent heißt claude-code. Inhalte werden nicht gelesen; der Hook stört Claude Code nie, auch nicht ohne Netz.

Einrichtung

  1. Skript aus dem Repository holen: sdk/claude-code-hook/tokenwacht_hook.py (Python 3, keine Abhängigkeiten). Ablegen z. B. unter ~/.tokenwacht/tokenwacht_hook.py.
  2. In ~/.claude/settings.json (global) oder .claude/settings.json (je Projekt) den Hook eintragen:
{
  "hooks": {
    "Stop": [{ "hooks": [{ "type": "command",
      "command": "TOKENWACHT_KEY=tw_live_… python3 /Users/ich/.tokenwacht/tokenwacht_hook.py" }] }]
  }
}
  1. Optional: TOKENWACHT_AGENT (Standard claude-code, z. B. je Projekt claude-code-crm), TOKENWACHT_KUNDE für die Weiterbelastung, TOKENWACHT_URL im Selbstbetrieb.
  2. Eine Frage an Claude Code stellen. Nach der Antwort läuft der Hook und meldet die Nutzung.

Was gemeldet wird

  • Je Assistenten-Antwort: Modell, Eingabe-, Ausgabe-, Cache-Lese- und Cache-Schreib-Token, Anzahl der Werkzeugaufrufe, Stop-Grund, Zeitpunkt. Die Sitzungs-ID wird zur Lauf-Kennung.
  • Nicht: Prompts, Antworten, Dateiinhalte, Werkzeugargumente.
  • Der Hook merkt sich je Transkript die letzte gemeldete Zeile (~/.tokenwacht/claude-code-stand.json) und schickt nur Neues. Mehrfaches Senden ist unschädlich, Tokenwacht dedupliziert über die Ereignis-Kennung.

Im Team

Jede Entwicklerin nutzt ihren eigenen Tokenwacht-Schlüssel mit Geltungsbereich „Ingest“; X-TW-Benutzer ist damit nicht nötig, der Schlüssel identifiziert den Menschen. Ein Schlüssel je Projekt (TOKENWACHT_AGENT=claude-code-<projekt>) macht Kosten je Projekt sichtbar.

Prüfen: Nach der ersten Antwort Anbindung prüfen — Quelle sdk, Agent claude-code. Fehlt der Aufruf: python3 tokenwacht_hook.py von Hand mit TOKENWACHT_TRANSKRIPT=<pfad zur .jsonl> ausführen, Fehler landen auf stderr.