Das Claude Code SDK bietet Session-Verwaltungsfunktionen für die Handhabung von Konversationszuständen, Persistierung und Wiederaufnahme. Dieser Leitfaden behandelt, wie Sessions erstellt, verwaltet, in Dateien persistiert und innerhalb des SDK wiederaufgenommen werden.
Session-Transkripte werden als JSONL (JSON Lines)-Dateien gespeichert, wobei jede Zeile eine Nachricht oder ein Ereignis darstellt:
Copy
Ask AI
{"type":"user","uuid":"abc123","timestamp":"2024-01-01T10:00:00Z","message":{"content":"Hallo Claude"}}{"type":"assistant","uuid":"def456","parentUuid":"abc123","timestamp":"2024-01-01T10:00:01Z","message":{"content":[{"type":"text","text":"Hallo! Wie kann ich helfen?"}]}}{"type":"checkpoint","sessionId":"session123","commit":"a1b2c3d","timestamp":"2024-01-01T10:00:02Z","label":"Anfangszustand","id":"chk456"}
Jede Zeile in der JSONL-Datei repräsentiert:
Benutzernachrichten: Eingaben vom Benutzer
Assistentennachrichten: Antworten von Claude
Checkpoints: Gespeicherte Zustände in der Konversation (z.B. nach Abschluss einer Aufgabe)
Tool-Verwendung: Aufzeichnungen darüber, wann Tools aufgerufen wurden und deren Ergebnisse
Die Session-ID wird in der anfänglichen Systemnachricht bereitgestellt, wenn Sie eine Konversation starten. Sie können sie für spätere Verwendung erfassen:
Copy
Ask AI
import { query } from "@anthropic-ai/claude-code"let sessionId: string | undefinedconst response = query({ prompt: "Hilf mir beim Erstellen einer Webanwendung", options: { model: "claude-sonnet-4-20250514" }})for await (const message of response) { // Die erste Nachricht ist eine System-Init-Nachricht mit der Session-ID if (message.type === 'system' && message.subtype === 'init') { sessionId = message.session_id console.log(`Session gestartet mit ID: ${sessionId}`) // Sie können diese ID für spätere Wiederaufnahme speichern } // Andere Nachrichten verarbeiten... console.log(message)}// Später können Sie die gespeicherte sessionId verwenden, um fortzufahrenif (sessionId) { const resumedResponse = query({ prompt: "Dort weitermachen, wo wir aufgehört haben", options: { resume: sessionId } })}
import { query } from "@anthropic-ai/claude-code"// Eine vorherige Session mit ihrer ID wiederaufnehmenconst response = query({ prompt: "Die Implementierung des Authentifizierungssystems dort fortsetzen, wo wir aufgehört haben", options: { resume: "session-xyz", // Session-ID aus vorheriger Konversation model: "claude-sonnet-4-20250514", allowedTools: ["Read", "Edit", "Write", "Glob", "Grep", "Bash"] }})// Die Konversation wird mit vollem Kontext aus der vorherigen Session fortgesetztfor await (const message of response) { console.log(message)}
import { query } from '@anthropic-ai/claude-code'import { readFile } from 'fs/promises'import { homedir } from 'os'import { join } from 'path'// Prüfen, ob eine Session unterbrochen wurdeconst checkSessionStatus = async (sessionId: string) => { const metadataPath = join(homedir(), '.config/claude/sessions/sessions.json') const metadata = JSON.parse(await readFile(metadataPath, 'utf-8')) const session = metadata.find(s => s.id === sessionId) if (session?.status === 'interrupted') { console.log('Session wurde unterbrochen. Bereit für Wiederaufnahme...') // Das SDK handhabt das Laden des Transkripts intern return { canResume: true, sessionId: sessionId } } return { canResume: false }}// Eine unterbrochene Session wiederaufnehmenconst resumeInterrupted = async (sessionId: string) => { const status = await checkSessionStatus(sessionId) if (status.canResume) { const response = query({ prompt: "Lass uns dort weitermachen, wo wir aufgehört haben", options: { resume: status.sessionId } }) for await (const message of response) { console.log(message) } }}
Das Session-Verwaltungssystem des Claude Code SDK bietet eine robuste Grundlage für die Aufrechterhaltung des Konversationszustands und ermöglicht nahtlose Wiederaufnahme von Entwicklungsaufgaben, alles durch einen einfachen dateibasierten Ansatz, der keine externe Infrastruktur erfordert.