Il Claude Code SDK fornisce capacità di gestione delle sessioni per gestire lo stato della conversazione, la persistenza e la ripresa. Questa guida copre come le sessioni vengono create, gestite, persistite su file e riprese all’interno del SDK.
Il Claude Code SDK implementa un sistema di gestione delle sessioni basato su file che gestisce la persistenza della conversazione e il ripristino dello stato.
Le sessioni vengono persistite nel filesystem locale in un formato strutturato:
Copy
Ask AI
~/.config/claude/├── sessions/│ └── sessions.json # Metadati e stato della sessione└── projects/ └── {project-hash}/ └── {session-id}.jsonl # Trascrizione della sessione
L’ID sessione viene fornito nel messaggio di sistema iniziale quando si avvia una conversazione. Puoi catturarlo per un uso successivo:
Copy
Ask AI
import { query } from "@anthropic-ai/claude-code"let sessionId: string | undefinedconst response = query({ prompt: "Aiutami a costruire un'applicazione web", options: { model: "claude-sonnet-4-20250514" }})for await (const message of response) { // Il primo messaggio è un messaggio init di sistema con l'ID sessione if (message.type === 'system' && message.subtype === 'init') { sessionId = message.session_id console.log(`Sessione avviata con ID: ${sessionId}`) // Puoi salvare questo ID per la ripresa successiva } // Elabora altri messaggi... console.log(message)}// Successivamente, puoi usare il sessionId salvato per riprendereif (sessionId) { const resumedResponse = query({ prompt: "Continua da dove abbiamo lasciato", options: { resume: sessionId } })}
import { query } from "@anthropic-ai/claude-code"// Riprendi una sessione precedente usando il suo IDconst response = query({ prompt: "Continua a implementare il sistema di autenticazione da dove abbiamo lasciato", options: { resume: "session-xyz", // ID Sessione dalla conversazione precedente model: "claude-sonnet-4-20250514", allowedTools: ["Read", "Edit", "Write", "Glob", "Grep", "Bash"] }})// La conversazione continua con il contesto completo dalla sessione precedentefor 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'// Controlla se una sessione è stata interrottaconst 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('La sessione è stata interrotta. Pronta per la ripresa...') // Il SDK gestisce il caricamento della trascrizione internamente return { canResume: true, sessionId: sessionId } } return { canResume: false }}// Riprendi una sessione interrottaconst resumeInterrupted = async (sessionId: string) => { const status = await checkSessionStatus(sessionId) if (status.canResume) { const response = query({ prompt: "Continuiamo da dove abbiamo lasciato", options: { resume: status.sessionId } }) for await (const message of response) { console.log(message) } }}
Il sistema di gestione delle sessioni del Claude Code SDK fornisce una base robusta per mantenere lo stato della conversazione e abilitare la ripresa senza soluzione di continuità delle attività di sviluppo, tutto attraverso un approccio semplice basato su file che non richiede infrastruttura esterna.