Blog • Claude Code

Nachdem eine Claude-Code-Terminalsitzung über 200K Token etwa 54 Minuten im Leerlauf war: wie schalten Sie die automatische Komprimierung im Settings-JSON aus?

Die Notiz zu Claude Code 2.1.299 ist konkret: Im Terminal wird ein Gespräch über 200K Token nach etwa 54 Minuten Leerlauf komprimiert, bevor der einstündige Prompt-Cache abläuft, damit die nächste Nachricht nicht den ganzen Verlauf neu verarbeitet. Komprimierung ersetzt den Nachrichtenverlauf durch eine Zusammenfassung. Was diesen Ersatz stoppt, ist settings.json, nicht ein weiterer Prompt.

Welche Felder ein Compaction-Block der Messages API behält, steht in jenem API-Artikel. Sitzung, Rechte und der JSON-Ablauf stehen in dem Artikel zum Claude-Code-Ablauf. Dieser Artikel behandelt nur die Leerlauf-Komprimierung im Terminal: wann sie den Verlauf ersetzt, und welche zwei Felder in settings.json sie ausschalten oder die Schwelle anheben.

Die Entscheidung: im Terminal, beim einstündigen Cache, über etwa 200K Token, nach etwa 54 Minuten Leerlauf ersetzt eine Zusammenfassung den Verlauf. Nur der Boolean false für idleCompaction in settings.json schaltet das aus.

Unter welchen Bedingungen wird der Verlauf ersetzt?

Die Notiz zu 2.1.299 begrenzt den Fall auf das Terminal: ein Gespräch über 200K Token, etwa 54 Minuten im Leerlauf, wird komprimiert, bevor der einstündige Prompt-Cache abläuft. Dieselbe Notiz nennt den Ausschalter und die Umgebungsvariable für die Token-Untergrenze und sagt, beides braucht 2.1.290 oder höher. 2.1.302 fügt in /config eine Zeile Idle compaction hinzu, und der Hinweis nach einer Komprimierung sagt, wie man sie ausschaltet. Das Changelog ist das Claude-Code-Changelog.

Der Prompt-Caching-Leitfaden sagt dasselbe so: Liegt eine Terminalsitzung auf der einstündigen TTL und ist lange im Leerlauf, kann Claude Code sie kurz vor Ablauf des Caches komprimieren. Ein Hauptgespräch im Claude-Abo innerhalb der Plan-Nutzung steht standardmäßig auf einer Stunde. Bei Nutzungsguthaben, einem API-Key oder einem Cloud-Anbieter steht das Hauptgespräch standardmäßig auf fünf Minuten. Die Leerlauf-Komprimierung in diesem Leitfaden ist der einstündige Fall. Die Einstellung heißt idleCompaction mit dem Wert false, die Version ist wieder 2.1.290 oder höher. Der Leitfaden ist der Prompt-Caching-Leitfaden.

Welche zwei Felder schreiben Sie in settings.json?

Ein Feld schaltet ein oder aus. Das andere ändert nur die Token-Untergrenze. Der Wert unter env ist eine Zeichenkette, weil Claude Code Umgebungsvariablen in der Einstellungsdatei als Zeichenketten ablegt. Die Zahl 200000 hat die falsche Form.

Die Einstellungen, die den Verlauf behalten. idleCompaction ist der Boolean false, die Schwelle bleibt beim Standard 200000.
{
  "idleCompaction": false,
  "env": {
    "CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS": "200000"
  }
}

Wollen Sie weniger Komprimierungen statt gar keiner, erhöhen Sie die Ziffern in dieser Zeichenkette. Das Changelog sagt, die Variable ändert die Untergrenze von 200K Token. Es sagt nicht, dass sie die etwa 54 Minuten ändert. Ab 2.1.302 können Sie sie auch in /config umschalten, ohne die Datei zu bearbeiten. Eine Bearbeitung von Hand braucht weiter den Boolean, keine Zeichenkette.

Welches Schema legt die Form dieses JSON fest?

Nutzen Sie JSON Schema , um die Typen festzulegen. idleCompaction muss ein Boolean sein. Die Schwelle unter env muss eine Zeichenkette sein. Das Schema beweist nicht, dass Sie ausschalten sollen. true ist eine gültige Form. Den Verlauf zu behalten ist eine App-Regel, die true auf false zurücksetzt.

Die Form der Einstellungen. idleCompaction true besteht diese Typen trotzdem.
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "required": ["idleCompaction"],
  "properties": {
    "idleCompaction": { "type": "boolean" },
    "env": {
      "type": "object",
      "properties": {
        "CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS": { "type": "string" }
      },
      "required": ["CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS"]
    }
  }
}
Was die Einstellungen zeigenSchemaWenn der Verlauf bleiben soll
idleCompaction ist die Zeichenkette falseScheitert. Dieses Feld braucht einen Boolean.Machen Sie es zuerst zum Boolean, dann wählen Sie an oder aus.
Die Schwelle ist die Zahl 200000Scheitert. Werte unter env sind Zeichenketten.Ändern Sie es in die Zeichenkette 200000, oder löschen Sie es und behalten Sie die Standardschwelle.
idleCompaction ist true, die Form stimmtBesteht. true ist ein Boolean.Setzen Sie es auf false, wenn der Verlauf bleiben soll. true heißt, die Leerlauf-Komprimierung kann den Verlauf weiter ersetzen.

Was bleibt nach der Komprimierung, und was wurde ersetzt?

Der Leitfaden sagt: Komprimierung ersetzt den Nachrichtenverlauf durch eine Zusammenfassung, der Cache-Präfix der Gesprächsschicht ist danach nicht mehr derselbe. Die System-Prompt-Schicht wird weiterverwendet, außer diese Wiederaufnahme behielt einen System-Prompt, der sich ohnehin geändert hätte. Projektkontext wird neu von der Platte gelesen. Diese Schicht trifft den Cache nur, wenn CLAUDE.md und der Speicher seit Sitzungsbeginn unverändert sind. Das ist nicht der Compaction-Block aus dem Messages-API-Artikel.

Diese SchichtNach der Komprimierung
NachrichtenverlaufDurch eine Zusammenfassung ersetzt. Der Gesprächspräfix der nächsten Anfrage unterscheidet sich von dem vor der Komprimierung.
System-PromptMeist weiterverwendet. Behielt eine Wiederaufnahme einen System-Prompt, der sich geändert hätte, wechselt die erste Komprimierung auf den aktuellen Prompt und diese Schicht wird einmal neu aufgebaut.
CLAUDE.md und SpeicherNeu von der Platte gelesen. Der Cache trifft nur, wenn sie seit Sitzungsbeginn unverändert sind. Eine mitten in der Sitzung geänderte CLAUDE.md wartet auf Komprimierung, ein Leeren oder einen Neustart, bevor sie in die Sitzung kommt.
Früher aufgerufene Tools2.1.304 fügt die Namen früher aufgerufener Tools zur Komprimierungszusammenfassung in der Transkriptansicht hinzu, Kurzbefehl Ctrl+O. Die Notiz nennt Namen, nicht das ganze Argument-JSON. Speichern Sie die Argumente selbst, wenn Sie sie noch brauchen.

/recap ist nicht derselbe Ersatz. Es hängt die Zusammenfassung als Befehlsausgabe an, der Nachrichtenverlauf bleibt, der Cache-Präfix bleibt. /rewind schneidet auf einen früheren Zug zurück, statt eine Zusammenfassung zu schreiben. Die Leerlauf-Komprimierung ist der Weg, der den Verlauf durch eine Zusammenfassung ersetzt.

Worin unterscheidet sich das vom Compaction-Artikel der Messages API?

Der API-ArtikelDieser Artikel
Wo es geschiehtWiederherstellen einer Messages-API-SitzungDas Claude-Code-Terminal, Leerlauf auf dem einstündigen Cache
JSON, das Sie prüfenFelder, die auf dem Compaction-Block unverändert bleiben müssenidleCompaction und die Token-Untergrenze in settings.json
Wie Sie es stoppenNicht, indem ein Leerlaufschalter auf false stehtidleCompaction auf den Boolean false setzen oder in /config ausschalten

Wie prüfen Sie diese Einstellungen in JSONNote?

  1. 1
    Die richtige Operation wählen

    Öffnen Sie JSON Schema. Stellen Sie Betrieb auf Überprüfen Sie mit Schema. Einstellungen ins erste Feld, das Schema oben ins zweite. idleCompaction darf nur ein Boolean sein. Steht die Schwelle da, darf sie nur eine Zeichenkette sein.

  2. 2
    Vier ungültige Dokumente prüfen

    Setzen Sie idleCompaction auf die Zeichenkette false, löschen Sie idleCompaction, setzen Sie die Schwelle auf die Zahl 200000, oder lassen Sie env stehen und löschen Sie die Schwelle darin. Alle vier scheitern. Die false-Einstellungen oben bestehen. Bestehen heißt nur richtige Form.

  3. 3
    false mit true vergleichen

    Öffnen Sie JSON Vergleiche Diff. Einstellungen mit idleCompaction false ins erste Feld. Im zweiten nur idleCompaction auf true ändern. Die Schwellen-Zeichenkette kann gleich bleiben. Beide bestehen das Schema. Was den automatischen Ersatz des Verlaufs stoppt, ist false, nicht diese Formprüfung.

Häufige Fragen

Ist das dasselbe wie ein manuelles /compact?

Nein. /compact führen Sie selbst zwischen Aufgaben aus. Die Leerlauf-Komprimierung ist das Terminal, das den Verlauf nach etwa 54 Minuten ohne neue Nachricht durch eine Zusammenfassung ersetzt, wenn die Sitzung über etwa 200K Token liegt und den einstündigen Cache nutzt. Beides ersetzt den Verlauf. Nur der Leerlaufweg wird durch idleCompaction in settings.json ausgeschaltet.

Komprimiert eine API-Key-Sitzung auch nach 54 Minuten?

Der Leitfaden setzt die Leerlauf-Komprimierung auf eine Terminalsitzung mit einstündiger TTL. Bei Nutzungsguthaben, einem API-Key oder einem Cloud-Anbieter steht das Hauptgespräch standardmäßig auf fünf Minuten, nicht auf einer Stunde. Die etwa 54 Minuten im Changelog laufen vor Ablauf des einstündigen Caches. Wenden Sie diese 54 Minuten nicht auf den Fünf-Minuten-Topf an.

Kann die nächste Nachricht nach dem Ausschalten noch langsam sein?

Ja. Das Changelog gibt dieses Verhalten, damit die nächste Nachricht nicht den ganzen Verlauf neu verarbeitet. Ausschalten stoppt nur, dass eine Zusammenfassung den Verlauf ersetzt. Nach Ablauf des Caches kann die nächste Nachricht den unkomprimierten Verlauf weiter neu verarbeiten. Was bleibt, ist der Originaltext.

Ist das derselbe Artikel wie der über Conversation Compaction vom September?

Nein. Jener Artikel schreibt die Felder, die die Messages API um die Komprimierung herum unverändert speichern muss, damit eine Sitzung weitergeht. Dieser schreibt, wie das Claude-Code-Terminal nach Leerlauf den Verlauf ersetzt, und wie settings.json das ausschaltet. Beides heißt Komprimierung. Das JSON, das Sie speichern, ist nicht dasselbe Dokument.

Bleiben Tool-Argumente in der Komprimierungszusammenfassung?

2.1.304 sagt, die Komprimierungszusammenfassung in der Transkriptansicht enthält die Namen früher aufgerufener Tools, Kurzbefehl Ctrl+O. Es sagt nicht, dass das ganze Argument-JSON in der Zusammenfassung bleibt. Brauchen Sie die Argumente noch, speichern Sie vor der Komprimierung eine Kopie und prüfen Sie diese Kopie mit einem Schema.

Fazit

Im Terminal wird bei einer Sitzung über etwa 200K Token, die auf dem einstündigen Cache etwa 54 Minuten im Leerlauf war, der Verlauf durch eine Zusammenfassung ersetzt. CLAUDE.md wird neu von der Platte gelesen. Tool-Namen können ab 2.1.304 in der Transkriptzusammenfassung stehen. Argument-JSON speichern Sie selbst.

Die Entscheidung: idleCompaction auf den Boolean false setzen, um den Verlauf zu behalten; ändern Sie die Schwelle, schreiben Sie eine Zeichenkette; Ausschalten stoppt nicht den Ablauf des Caches; weder /recap noch /rewind ist dieser Leerlauf-Ersatz.

Als Nächstes: den Boolean idleCompaction und die Schwellen-Zeichenkette mit dem Schema festlegen, dann mit Diff false gegen true sehen.

Zurück zum Blog