Claude Code SDK menyediakan kemampuan manajemen sesi untuk menangani status percakapan, persistensi, dan pemulihan. Panduan ini mencakup bagaimana sesi dibuat, dikelola, disimpan ke file, dan dilanjutkan dalam SDK.
Transkrip sesi disimpan sebagai file JSONL (JSON Lines), dengan setiap baris mewakili pesan atau event:
Copy
Ask AI
{"type":"user","uuid":"abc123","timestamp":"2024-01-01T10:00:00Z","message":{"content":"Hello Claude"}}{"type":"assistant","uuid":"def456","parentUuid":"abc123","timestamp":"2024-01-01T10:00:01Z","message":{"content":[{"type":"text","text":"Hello! How can I help?"}]}}{"type":"checkpoint","sessionId":"session123","commit":"a1b2c3d","timestamp":"2024-01-01T10:00:02Z","label":"Initial state","id":"chk456"}
Setiap baris dalam file JSONL mewakili:
Pesan pengguna: Input dari pengguna
Pesan asisten: Respons dari Claude
Checkpoint: Status tersimpan dalam percakapan (misalnya, setelah menyelesaikan tugas)
Penggunaan tool: Catatan kapan tool dipanggil dan hasilnya
Session ID disediakan dalam pesan sistem awal ketika Anda memulai percakapan. Anda dapat menangkapnya untuk digunakan nanti:
Copy
Ask AI
import { query } from "@anthropic-ai/claude-code"let sessionId: string | undefinedconst response = query({ prompt: "Help me build a web application", options: { model: "claude-sonnet-4-20250514" }})for await (const message of response) { // Pesan pertama adalah pesan init sistem dengan session ID if (message.type === 'system' && message.subtype === 'init') { sessionId = message.session_id console.log(`Session started with ID: ${sessionId}`) // Anda dapat menyimpan ID ini untuk pemulihan nanti } // Proses pesan lainnya... console.log(message)}// Nanti, Anda dapat menggunakan sessionId yang disimpan untuk melanjutkanif (sessionId) { const resumedResponse = query({ prompt: "Continue where we left off", options: { resume: sessionId } })}
import { query } from "@anthropic-ai/claude-code"// Lanjutkan sesi sebelumnya menggunakan ID-nyaconst response = query({ prompt: "Continue implementing the authentication system from where we left off", options: { resume: "session-xyz", // Session ID dari percakapan sebelumnya model: "claude-sonnet-4-20250514", allowedTools: ["Read", "Edit", "Write", "Glob", "Grep", "Bash"] }})// Percakapan berlanjut dengan konteks penuh dari sesi sebelumnyafor 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'// Periksa apakah sesi terputusconst 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 was interrupted. Ready for resumption...') // SDK menangani pemuatan transkrip secara internal return { canResume: true, sessionId: sessionId } } return { canResume: false }}// Lanjutkan sesi yang terputusconst resumeInterrupted = async (sessionId: string) => { const status = await checkSessionStatus(sessionId) if (status.canResume) { const response = query({ prompt: "Let's continue from where we left off", options: { resume: status.sessionId } }) for await (const message of response) { console.log(message) } }}
Sistem manajemen sesi Claude Code SDK menyediakan fondasi yang kuat untuk mempertahankan status percakapan dan memungkinkan pemulihan tugas pengembangan yang mulus, semuanya melalui pendekatan berbasis file sederhana yang tidak memerlukan infrastruktur eksternal.