Was macht Kostenverfolgung?
Verwenden Sie dieses Skill, um die Kosten- und Nutzungshistorie von Claude Code aus dem Metriklog zu analysieren, den ECCs stop:cost-tracker-Hook schreibt.
Wo die Daten leben
Die Tracker-App hängt ein JSON-Objekt pro Sitzungsende an ~/.claude/metrics/costs.jsonl an. Jede Zeile ist ein kumulativer Snapshot für diese Sitzung, um die Gesamtausgaben zu ermitteln, nehmen Sie die letzte Zeile pro session_id und summieren Sie über die Sitzungen – das Summieren jeder Zeile führt zu Mehrfachzählungen.
Zeilen-Schema:
| Feld | Bedeutung |
|---|---|
timestamp | ISO-Zeitstempel des Snapshots |
session_id | Claude Code Sitzungskennung |
transcript_path | Pfad zum Sitzungsprotokoll |
model | Verwendetes Modell |
input_tokens / output_tokens | Token-Anzahl |
cache_write_tokens / cache_read_tokens | Prompt-Cache Token-Anzahl |
estimated_cost_usd | Vorberechnete kumulative Kosten in USD für die Sitzung |
Bevorzugen Sie estimated_cost_usd gegenüber einer manuellen Preisberechnung – Modell- und Cache-Preise ändern sich, und der Tracker ist die maßgebliche Quelle.
Wann zu verwenden
- Der Benutzer fragt: „Wie viel habe ich ausgegeben?“, „Was hat diese Sitzung gekostet?“ oder „Wie ist mein Token-Verbrauch?“
- Der Benutzer erwähnt Budgets, Ausgabenlimits, Überschreitungen oder Kostenkontrollen.
- Der Benutzer wünscht eine Kostenaufschlüsselung nach Modell, Sitzung oder Datum oder einen CSV-Export.
Wie es funktioniert
Überprüfen Sie zuerst, ob das Log existiert (verwenden Sie node, nicht sqlite3 – der Tracker schreibt JSONL, und node ist plattformübergreifend):
node -e 'const fs=require("fs"),os=require("os"),p=require("path");const f=p.join(os.homedir(),".claude","metrics","costs.jsonl");console.log(fs.existsSync(f)?"Kostenlog gefunden":"Kostenlog nicht gefunden: "+f)'
Wenn das Log fehlt, erfinden Sie keine Nutzungsdaten. Teilen Sie dem Benutzer mit, dass die Kostenverfolgung nach der ersten beendeten Sitzung mit aktiviertem stop:cost-tracker-Hook erfolgt.
Beispiel – Zusammenfassung, nach Modell, letzte 7 Tage
node -e '
const fs=require("fs"),os=require("os"),path=require("path");
const f=path.join(os.homedir(),".claude","metrics","costs.jsonl");
if(!fs.existsSync(f)){console.log("Kostenlog nicht gefunden: "+f);process.exit(0);}
const rows=fs.readFileSync(f,"utf8").split(/\r?\n/).filter(Boolean).map(l=>{try{return JSON.parse(l)}catch{return null}}).filter(Boolean);
const bySession=new Map();
for(const r of rows){const k=r.session_id||r.transcript_path||r.timestamp;const p=bySession.get(k);if(!p||String(r.timestamp)>String(p.timestamp))bySession.set(k,r);}
const latest=[...bySession.values()];
const cost=r=>Number(r.estimated_cost_usd)||0, day=r=>String(r.timestamp||"").slice(0,10), sum=a=>a.reduce((s,r)=>s+cost(r),0), f4=n=>"$"+n.toFixed(4);
const today=new Date().toISOString().slice(0,10), yest=new Date(Date.now()-864e5).toISOString().slice(0,10);
console.log("heute: "+f4(sum(latest.filter(r=>day(r)===today)))+" | gestern: "+f4(sum(latest.filter(r=>day(r)===yest)))+" | gesamt: "+f4(sum(latest))+" ("+latest.length+" Sitzungen)");
const m=new Map();for(const r of latest){const k=r.model||"(unbekannt)";m.set(k,(m.get(k)||0)+cost(r));}
console.log("nach Modell:");[...m.entries()].sort((a,b)=>b[1]-a[1]).forEach(([k,v])=>console.log(" "+f4(v)+" "+k));
'
Für eine Sitzungs-Detailansicht oder einen CSV-Export durchlaufen Sie denselben latest-Satz (oder die rohen Zeilen für CSV) und geben Sie die benötigten Felder aus.
Berichtshinweise
Präsentieren Sie bei Kostendaten die heutigen Ausgaben im Vergleich zu gestern, die Gesamtsumme über alle Sitzungen, eine Aufschlüsselung nach Modell und die Sitzungsanzahl. Formatieren Sie Beträge unter einem Dollar mit vier Dezimalstellen, größere Beträge mit zwei.
Anti-Patterns
- Summieren Sie nicht jede Zeile – sie sind kumulativ pro Sitzung; reduzieren Sie zuerst auf die letzte Zeile pro
session_id. - Schätzen Sie keine Kosten aus rohen Token-Zahlen, wenn
estimated_cost_usdvorhanden ist. - Gehen Sie nicht davon aus, dass das Log existiert, ohne es zu überprüfen.
- Verwenden Sie keine aktuellen Modellpreise in benutzerseitigen Antworten fest codiert.
- Empfehlen Sie nicht die Installation ungeprüfter Hooks oder Plugins, die beliebigen Code ausführen.
Verwandtes
/cost-report– Befehlsformularbericht über dasselbe Metriklog.cost-aware-llm-pipeline– Modell-Routing und Budget-Design-Muster.token-budget-advisor– Kontext- und Token-Budget-Planung.strategic-compact– Kontextkomprimierung zur Reduzierung wiederholter Token-Ausgaben.