Sitzungen speichern das Gespräch, nicht das Dateisystem. Um Dateiänderungen, die der Agent vorgenommen hat, zu erfassen und rückgängig zu machen, verwenden Sie Datei-Checkpointing.
resume und fork manuell verwenden, und was Sie über das Fortsetzen von Sitzungen über Hosts hinweg wissen müssen.
Wählen Sie einen Ansatz
Wie viel Sitzungsverwaltung Sie benötigen, hängt von der Form Ihrer Anwendung ab. Die Sitzungsverwaltung kommt ins Spiel, wenn Sie mehrere Prompts senden, die Kontext teilen sollten. Innerhalb eines einzelnenquery()-Aufrufs nimmt der Agent bereits so viele Durchläufe vor, wie nötig, und Berechtigungsprompts und AskUserQuestion werden in-loop verarbeitet (sie beenden den Aufruf nicht).
| Was Sie erstellen | Was Sie verwenden |
|---|---|
| Einmalige Aufgabe: einzelner Prompt, keine Anschlussfrage | Nichts Zusätzliches. Ein query()-Aufruf verarbeitet es. |
| Multi-Turn-Chat in einem Prozess | ClaudeSDKClient (Python) oder continue: true (TypeScript). Das SDK verfolgt die Sitzung für Sie ohne ID-Verwaltung. |
| Dort weitermachen, wo Sie nach einem Prozessneustart aufgehört haben | continue_conversation=True (Python) / continue: true (TypeScript). Setzt die neueste Sitzung im Verzeichnis fort, keine ID erforderlich. |
| Eine bestimmte frühere Sitzung fortsetzen (nicht die neueste) | Erfassen Sie die Sitzungs-ID und übergeben Sie sie an resume. |
| Einen alternativen Ansatz ausprobieren, ohne das Original zu verlieren | Forken Sie die Sitzung. |
| Zustandslose Aufgabe, möchten nichts auf die Festplatte geschrieben haben (nur TypeScript) | Setzen Sie persistSession: false. Die Sitzung existiert nur im Speicher für die Dauer des Aufrufs. Python speichert immer auf der Festplatte. |
Continue, resume und fork
Continue, resume und fork sind Optionsfelder, die Sie aufquery() setzen (ClaudeAgentOptions in Python, Options in TypeScript).
Continue und resume holen beide eine vorhandene Sitzung ab und fügen sie hinzu. Der Unterschied liegt darin, wie sie diese Sitzung finden:
- Continue findet die neueste Sitzung im aktuellen Verzeichnis. Sie müssen nichts verfolgen. Funktioniert gut, wenn Ihre App jeweils ein Gespräch führt.
- Resume nimmt eine bestimmte Sitzungs-ID. Sie verfolgen die ID. Erforderlich, wenn Sie mehrere Sitzungen haben (z. B. eine pro Benutzer in einer Multi-User-App) oder zu einer zurückkehren möchten, die nicht die neueste ist.
Automatische Sitzungsverwaltung
Beide SDKs bieten eine Schnittstelle, die den Sitzungszustand für Sie über Aufrufe hinweg verfolgt, sodass Sie IDs nicht manuell weitergeben müssen. Verwenden Sie diese für Multi-Turn-Gespräche innerhalb eines einzelnen Prozesses.Python: ClaudeSDKClient
ClaudeSDKClient verwaltet Sitzungs-IDs intern. Jeder Aufruf von client.query() setzt automatisch die gleiche Sitzung fort. Rufen Sie client.receive_response() auf, um über die Nachrichten für die aktuelle Abfrage zu iterieren. Verwenden Sie den Client als asynchronen Kontext-Manager, damit die Verbindungseinrichtung und das Herunterfahren für Sie verwaltet werden, oder rufen Sie connect() und disconnect() manuell auf.
Dieses Beispiel führt zwei Abfragen gegen denselben client aus. Die erste fordert den Agent auf, ein Modul zu analysieren; die zweite fordert ihn auf, dieses Modul zu refaktorieren. Da beide Aufrufe durch die gleiche Client-Instanz gehen, hat die zweite Abfrage den vollständigen Kontext aus der ersten, ohne explizites resume oder Sitzungs-ID:
Python
ClaudeSDKClient gegenüber der eigenständigen query()-Funktion verwenden sollten.
TypeScript: continue: true
Das TypeScript SDK hat kein Sitzungs-Halter-Client-Objekt wie Pythons ClaudeSDKClient. Übergeben Sie stattdessen continue: true bei jedem nachfolgenden query()-Aufruf und das SDK holt die neueste Sitzung im aktuellen Verzeichnis ab. Keine ID-Verfolgung erforderlich.
Dieses Beispiel macht zwei separate query()-Aufrufe. Der erste erstellt eine neue Sitzung; der zweite setzt continue: true, was dem SDK mitteilt, die neueste Sitzung auf der Festplatte zu finden und fortzusetzen. Der Agent hat den vollständigen Kontext aus dem ersten Aufruf:
TypeScript
Die experimentelle V2-Sitzungs-API, die
createSession() mit einem send / stream-Muster bereitstellte, wurde in TypeScript Agent SDK 0.3.142 entfernt. Verwenden Sie stattdessen die query()-Funktion und die auf dieser Seite beschriebenen Sitzungsoptionen.Verwenden Sie Sitzungsoptionen mit query()
Erfassen Sie die Sitzungs-ID
Resume und fork erfordern eine Sitzungs-ID. Lesen Sie sie aus demsession_id-Feld in der Ergebnismeldung (ResultMessage in Python, SDKResultMessage in TypeScript), die bei jedem Ergebnis unabhängig von Erfolg oder Fehler vorhanden ist. In TypeScript ist die ID auch früher als direktes Feld in der Init-SystemMessage verfügbar; in Python ist sie in SystemMessage.data verschachtelt.
Fortsetzen nach ID
Übergeben Sie eine Sitzungs-ID anresume, um zu dieser bestimmten Sitzung zurückzukehren. Der Agent setzt mit vollständigem Kontext von dort fort, wo die Sitzung endete. Häufige Gründe zum Fortsetzen:
- Folgen Sie einer abgeschlossenen Aufgabe. Der Agent hat bereits etwas analysiert; jetzt möchten Sie, dass er auf dieser Analyse handelt, ohne Dateien erneut zu lesen.
- Erholen Sie sich von einem Limit. Der erste Durchlauf endete mit
error_max_turnsodererror_max_budget_usd(siehe Verarbeiten Sie das Ergebnis); setzen Sie mit einem höheren Limit fort. - Starten Sie Ihren Prozess neu. Sie haben die ID vor dem Herunterfahren erfasst und möchten das Gespräch wiederherstellen.
SessionStore-Adapter zu gemeinsam genutztem Speicher.
Forken Sie, um Alternativen zu erkunden
Das Forken erstellt eine neue Sitzung, die mit einer Kopie des Verlaufs des Originals beginnt, aber von diesem Punkt an abweicht. Der Fork erhält seine eigene Sitzungs-ID; die ID und der Verlauf des Originals bleiben unverändert. Sie erhalten zwei unabhängige Sitzungen, die Sie separat fortsetzen können.Das Forken verzweigt den Gesprächsverlauf, nicht das Dateisystem. Wenn ein gegabelter Agent Dateien bearbeitet, sind diese Änderungen real und für jede Sitzung sichtbar, die im gleichen Verzeichnis arbeitet. Um zu verzweigen und Dateiänderungen rückgängig zu machen, verwenden Sie Datei-Checkpointing.
session_id analysiert und möchten OAuth2 erkunden, ohne den JWT-fokussierten Thread zu verlieren. Der erste Block forkt die Sitzung und erfasst die ID des Forks (forked_id); der zweite Block setzt die ursprüngliche session_id fort, um den JWT-Pfad fortzusetzen. Sie haben jetzt zwei Sitzungs-IDs, die auf zwei separate Verläufe verweisen:
Fortsetzen über Hosts hinweg
Sitzungsdateien sind lokal auf dem Computer, der sie erstellt hat. Um eine Sitzung auf einem anderen Host fortzusetzen (CI-Worker, kurzlebige Container, serverlos), haben Sie zwei Optionen:- Verschieben Sie die Sitzungsdatei. Speichern Sie
~/.claude/projects/<encoded-cwd>/<session-id>.jsonlaus dem ersten Durchlauf und stellen Sie es auf dem neuen Host auf dem gleichen Pfad wieder her, bevor Sieresumeaufrufen. Dascwdmuss übereinstimmen. - Verlassen Sie sich nicht auf Sitzungsfortsetzen. Erfassen Sie die Ergebnisse, die Sie benötigen (Analyseergebnis, Entscheidungen, Datei-Diffs) als Anwendungszustand und übergeben Sie sie in den Prompt einer neuen Sitzung. Dies ist oft robuster als das Verschiffen von Transkriptdateien.
listSessions() und getSessionMessages() in TypeScript, list_sessions() und get_session_messages() in Python. Verwenden Sie sie, um benutzerdefinierte Sitzungsauswähler, Bereinigungslogik oder Transkript-Viewer zu erstellen.
Beide SDKs stellen auch Funktionen zum Nachschlagen und Mutieren einzelner Sitzungen bereit: get_session_info(), rename_session() und tag_session() in Python, und getSessionInfo(), renameSession() und tagSession() in TypeScript. Verwenden Sie sie, um Sitzungen nach Tag zu organisieren oder ihnen menschenlesbare Titel zu geben.
Verwandte Ressourcen
- Wie die Agent-Schleife funktioniert: Verstehen Sie Durchläufe, Nachrichten und Kontextakkumulation innerhalb einer Sitzung
- Datei-Checkpointing: Snapshot und Rückgängigmachen von Dateiänderungen, die der Agent innerhalb einer Sitzung vorgenommen hat
- Python
ClaudeAgentOptions: Vollständige Sitzungsoptionsreferenz für Python - TypeScript
Options: Vollständige Sitzungsoptionsreferenz für TypeScript