El Claude Code SDK proporciona capacidades de gestión de sesiones para manejar el estado de conversación, persistencia y reanudación. Esta guía cubre cómo se crean, gestionan, persisten en archivos y reanudan las sesiones dentro del SDK.
El Claude Code SDK implementa un sistema de gestión de sesiones basado en archivos que maneja la persistencia de conversaciones y la restauración de estado.
Las sesiones se persisten en el sistema de archivos local en un formato estructurado:
Copy
~/.config/claude/├── sessions/│ └── sessions.json # Metadatos y estado de sesión└── projects/ └── {project-hash}/ └── {session-id}.jsonl # Transcripción de sesión
El ID de sesión se proporciona en el mensaje inicial del sistema cuando inicias una conversación. Puedes capturarlo para uso posterior:
Copy
import { query } from "@anthropic-ai/claude-code"let sessionId: string | undefinedconst response = query({ prompt: "Ayúdame a construir una aplicación web", options: { model: "claude-sonnet-4-20250514" }})for await (const message of response) { // El primer mensaje es un mensaje init del sistema con el ID de sesión if (message.type === 'system' && message.subtype === 'init') { sessionId = message.session_id console.log(`Sesión iniciada con ID: ${sessionId}`) // Puedes guardar este ID para reanudación posterior } // Procesar otros mensajes... console.log(message)}// Más tarde, puedes usar el sessionId guardado para reanudarif (sessionId) { const resumedResponse = query({ prompt: "Continúa donde lo dejamos", options: { resume: sessionId } })}
import { query } from "@anthropic-ai/claude-code"// Reanudar una sesión previa usando su IDconst response = query({ prompt: "Continúa implementando el sistema de autenticación desde donde lo dejamos", options: { resume: "session-xyz", // ID de sesión de conversación previa model: "claude-sonnet-4-20250514", allowedTools: ["Read", "Edit", "Write", "Glob", "Grep", "Bash"] }})// La conversación continúa con contexto completo de la sesión previafor 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'// Verificar si una sesión fue interrumpidaconst 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 sesión fue interrumpida. Lista para reanudación...') // El SDK maneja la carga de la transcripción internamente return { canResume: true, sessionId: sessionId } } return { canResume: false }}// Reanudar una sesión interrumpidaconst resumeInterrupted = async (sessionId: string) => { const status = await checkSessionStatus(sessionId) if (status.canResume) { const response = query({ prompt: "Continuemos desde donde lo dejamos", options: { resume: status.sessionId } }) for await (const message of response) { console.log(message) } }}
El sistema de gestión de sesiones del Claude Code SDK proporciona una base robusta para mantener el estado de conversación y habilitar la reanudación sin problemas de tareas de desarrollo, todo a través de un enfoque simple basado en archivos que no requiere infraestructura externa.