KI-News · Werkzeuge

Caveman gegen die
eingebauten Ausgabestile.

EN Read in English

15. September 2026 · Lesezeit ca. 9 Minuten

Claude Code bringt vier eingebaute Ausgabestile mit: Default, Concise, Explanatory und Learning. Caveman ist ein separat installierter Skill mit demselben Ziel wie Concise, weniger Tokens in der Antwort. Ich habe dieselbe kleine Aufgabe an echtem PlantWiz-Code fünfmal beantwortet, einmal je Stil, und Zeichen sowie Wörter gezählt.

Methodischer Hinweis: Die fünf Antworten stammen nicht aus fünf separat gestarteten Sitzungen, sondern sind nach den dokumentierten Regeln jedes Stils rekonstruiert: für Default, Concise, Explanatory und Learning aus der offiziellen Claude-Code-Dokumentation und den Plugin-Beschreibungen von Anthropic, für Caveman aus der echten, installierten SKILL.md des npm-Pakets caveman-skill, wörtlich befolgt. Die fachliche Lösung ist in allen fünf Antworten identisch, nur Formulierung und Umfang des Fließtexts unterscheiden sich, damit der Vergleich auf den Stil zielt, nicht auf unterschiedliche Lösungsansätze.

Die Aufgabe

backend/scripts/import-trefle.ts ruft bei einem Rate-Limit (HTTP 429) der Trefle-API die Funktion trefleGet nach 5 Sekunden Wartezeit rekursiv erneut auf, ohne Obergrenze. Hält die API das Limit dauerhaft, läuft der Import unbegrenzt weiter, ohne sichtbaren Fehler. Auftrag an den Agenten: „Begrenze die Anzahl der Wiederholungen bei Rate-Limits, damit das Skript nach ein paar Versuchen mit einer klaren Fehlermeldung abbricht.“

Fünf Stile, eine Aufgabe

Eingebaut, Standard

Proaktiv (Default)

Claude Code, eingebauter Standardstil · „hilft, Software-Engineering-Aufgaben effizient abzuschließen“

Erklärt die Ursache, setzt um, fasst danach zusammen, moderate Länge, keine besondere Formatierung.

Ich schaue mir die Funktion trefleGet an: Bei einem 429 (Rate-Limit) wartet
sie 5 Sekunden und ruft sich selbst erneut auf, ohne Obergrenze. Hält die
Trefle-API das Limit dauerhaft, läuft der Import unbegrenzt weiter, ohne
sichtbaren Fehler.

Ich ergänze einen Zähler-Parameter, der bei jedem Rate-Limit-Treffer hoch-
gezählt wird, und breche nach fünf Versuchen mit einer Fehlermeldung ab.
Die bestehende Wartezeit bleibt unverändert.

[... Code ...]

Ich habe trefleGet um den Parameter retries erweitert, Standardwert 0. Ab
dem sechsten Versuch wirft die Funktion einen Fehler statt weiter zu
rekursieren, die Meldung nennt die Anzahl der Versuche. Bestehende Aufrufe
der Funktion sind nicht betroffen, weil der neue Parameter optional ist.
Eingebaut

Prägnant (Concise)

Claude Code, eingebauter Stil · „Ergebnis zuerst, keine Nacherzählung, kurz antworten“, ab Version 2.1.237

Ergebnis zuerst, keine Vorrede, keine Zusammenfassung danach, gleiche technische Tiefe wie Default.

trefleGet bricht jetzt nach fünf Rate-Limit-Versuchen mit Fehler ab, statt
endlos zu rekursieren.

[... Code ...]

Wartezeit zwischen Versuchen bleibt bei 5s.
Eingebaut

Explanatory

Claude Code, eingebauter Stil · Bildungs-Insights vor und nach der Umsetzung, Format „★ Insight“

Wie Default, ergänzt um kurze Einordnungen: warum dieses Muster ein Problem ist, welche Trade-offs bewusst nicht umgesetzt wurden.

★ Insight ─────────────────────────────────────
Unbegrenzte Rekursion bei Rate-Limits wirkt harmlos, kann ein Skript bei
einer länger anhaltenden API-Störung aber stundenlang ohne sichtbaren
Abbruch blockieren. Eine feste Obergrenze macht den Fehlerfall sichtbar.
Ein wachsendes Zeitintervall zwischen Versuchen (exponentielles Backoff)
wäre der nächste sinnvolle Schritt, hier bewusst weggelassen, um die
Änderung klein zu halten.
─────────────────────────────────────────────────

[... Code ...]

★ Insight ─────────────────────────────────────
Der neue Parameter retries ist optional mit Standardwert 0, bestehende
Aufrufe von trefleGet bleiben unverändert lauffähig. Dieses Muster, ein
optionaler Zähler-Parameter für rekursive Hilfsfunktionen, taucht in
PlantWiz noch an anderen Stellen auf und lohnt sich als wiederkehrendes
Erkennungsmerkmal für ähnliche Fehlerklassen.
─────────────────────────────────────────────────
Eingebaut

Learning

Claude Code, eingebauter Stil · lässt an Entscheidungspunkten 5–10 Zeilen selbst schreiben, markiert mit TODO(human)

Setzt Rahmen und Kontext, überlässt die eigentliche Design-Entscheidung dem Nutzer, mit Begründung der Alternativen.

Die Anzahl maximaler Versuche und die Reaktion danach sind eine Design-
Entscheidung mit mehreren vertretbaren Antworten. Dafür überlasse ich
Ihnen die Kernzeile.

async function trefleGet(url: string, retries = 0): Promise<any> {
  ...
  if (res.status === 429) {
    // TODO(human): Abbruchbedingung nach zu vielen Rate-Limit-Versuchen
    console.warn('\nRate-Limit erreicht, warte 5s...')
    await sleep(5000)
    return trefleGet(url, retries + 1)
  }
  ...
}

In backend/scripts/import-trefle.ts, in der markierten Zeile: Entscheiden
Sie, wann trefleGet aufgeben soll. Zwei vertretbare Richtungen: nach einer
festen Anzahl Versuche mit Fehler abbrechen (einfach, verliert aber alle
restlichen Pflanzen bei einer kurzen API-Störung), oder nur die aktuelle
Pflanze überspringen und mit der nächsten weitermachen (robuster,
verschleiert aber eine dauerhafte Störung im Log). Beides ist in der
bestehenden Codebasis vertreten, schauen Sie sich zum Vergleich an, wie
fetchDetail mit einzelnen Fehlern umgeht.
Separat installiert

Caveman

npm-Paket caveman-skill, Version 1.0.0 · Stufe „full“, wörtlich nach SKILL.md

Artikel weg, Füllwörter weg, Fragmente erlaubt, Code und Fehlermeldungen bleiben exakt zitiert.

trefleGet: infinite retry on 429, no cap. Risk: dauerhaft rate-limited →
endless loop, kein Fehler sichtbar.

Fix: retries param, default 0. Cap 5. Über Cap: throw.

[... Code ...]

Wait 5s unchanged. Backoff wachsend: nicht drin, extra Schritt.

Gemessen

Fachlich ist der Code in allen fünf Antworten identisch, deshalb zählt die folgende Tabelle den Fließtext getrennt vom Codeblock, sowie zusätzlich beides zusammen als Gesamtlänge der Antwort:

StilFließtext (Zeichen)Fließtext (Wörter)Gesamt inkl. Code (Zeichen)
Proaktiv (Default)7261041.368
Explanatory911971.553
Learning707921.270
Caveman23035872
Prägnant (Concise)14319785

Caveman und Concise verfolgen sichtbar dasselbe Ziel, kurzer Fließtext, landen aber nicht auf demselben Niveau: Concise ist mit 143 Zeichen noch einmal deutlich knapper als Caveman mit 230 Zeichen. Der Unterschied liegt am Muster selbst: Concise lässt Übergänge ganz weg, wo sie nichts zur Sache beitragen, Caveman kürzt jeden Satz, behält aber die Satzstruktur als Fragment bei, „Fix: retries param, default 0“ statt nur „retries param“.

Was Caveman zusätzlich kostet, was Concise nicht kostet: Concise ist ein eingebauter Stil, keine zusätzliche Regeldatei. Caveman lädt seine SKILL.md bei jedem Aufruf mit, 3.466 Zeichen, umgerechnet grob 860 bis 900 Tokens. Bei einer einzelnen kurzen Antwort wie in diesem Test ist das mehr, als die knappere Antwort selbst einspart. Erst über mehrere Antworten in derselben Sitzung amortisiert sich die einmalig geladene Regel, und selbst dann bleibt Concise ohne jeden Zusatzaufwand die knappere Option, wo beide zur Wahl stehen.

Wofür Explanatory und Learning trotzdem etwas Eigenes bringen

Weder Concise noch Caveman ersetzen Explanatory oder Learning, weil sie ein anderes Ziel verfolgen. Explanatory erklärt warum eine Lösung so aussieht, in diesem Beispiel den Unterschied zwischen einer festen Obergrenze und echtem exponentiellem Backoff, eine Einordnung, die in der Caveman- oder Concise-Fassung schlicht fehlt. Learning geht weiter und überlässt die Design-Entscheidung, ob bei zu vielen Fehlversuchen die ganze Aktion abbricht oder nur einzelne Elemente übersprungen werden, bewusst dem Nutzer, mit Verweis auf ein bestehendes Vergleichsmuster im selben Code. Beide Stile kosten mehr Text, weil sie etwas anderes leisten als reine Kürzung.

Wann welcher Stil

1

Alltägliche Aufgaben, Ergebnis zählt mehr als Herleitung

Prägnant (Concise), eingebaut, kein Zusatzaufwand, kürzester Fließtext in dieser Messung.

2

Onboarding, Code-Reviews, unbekannte Codebasis

Explanatory, wenn die Begründung hinter einer Entscheidung genauso wichtig ist wie die Entscheidung selbst.

3

Lernkontext, eigenes Team soll mitschreiben

Learning, wenn Design-Entscheidungen bewusst beim Menschen bleiben sollen, statt automatisch getroffen zu werden.

4

Caveman zusätzlich sinnvoll bei

Werkzeugen ohne eigene Stilkonfiguration, oder wenn die dreistufige Eskalation (lite/full/ultra) je nach Situation gebraucht wird. Wo Concise zur Verfügung steht, ist es in dieser Messung die knappere und kostenlosere Wahl.

Ehrliche Zusammenfassung: Alle fünf Antworten sind nach den dokumentierten Regeln der jeweiligen Stile rekonstruiert, kein Fünffach-Livetest mit fünf getrennten Sitzungen. Die Zeichen- und Wortzahlen sind an genau diesen Texten gemessen, nicht an unabhängigen weiteren Beispielen. Die Kernaussage halte ich trotzdem für belastbar: Concise und Caveman verfolgen dasselbe Ziel, Concise erreicht es ohne Zusatzregel etwas konsequenter, Explanatory und Learning lösen ein anderes Problem als reine Kürzung.

Welcher Ausgabestil für Ihr Team passt?

Ich richte Claude Code in Entwicklerteams ein, inklusive der Frage, welcher Ausgabestil zu welcher Aufgabe passt. 30 Minuten Erstgespräch, kostenlos.