O Claude Code SDK fornece capacidades de gerenciamento de sessões para lidar com estado de conversação, persistência e retomada. Este guia aborda como as sessões são criadas, gerenciadas, persistidas em arquivos e retomadas dentro do SDK.
O Claude Code SDK implementa um sistema de gerenciamento de sessões baseado em arquivos que lida com persistência de conversação e restauração de estado.
As sessões são persistidas no sistema de arquivos local em um formato estruturado:
Copy
Ask AI
~/.config/claude/├── sessions/│ └── sessions.json # Metadados e estado da sessão└── projects/ └── {project-hash}/ └── {session-id}.jsonl # Transcrição da sessão
O ID da sessão é fornecido na mensagem inicial do sistema quando você inicia uma conversação. Você pode capturá-lo para uso posterior:
Copy
Ask AI
import { query } from "@anthropic-ai/claude-code"let sessionId: string | undefinedconst response = query({ prompt: "Me ajude a construir uma aplicação web", options: { model: "claude-sonnet-4-20250514" }})for await (const message of response) { // A primeira mensagem é uma mensagem de inicialização do sistema com o ID da sessão if (message.type === 'system' && message.subtype === 'init') { sessionId = message.session_id console.log(`Sessão iniciada com ID: ${sessionId}`) // Você pode salvar este ID para retomada posterior } // Processar outras mensagens... console.log(message)}// Posteriormente, você pode usar o sessionId salvo para retomarif (sessionId) { const resumedResponse = query({ prompt: "Continue de onde paramos", options: { resume: sessionId } })}
import { query } from "@anthropic-ai/claude-code"// Retomar uma sessão anterior usando seu IDconst response = query({ prompt: "Continue implementando o sistema de autenticação de onde paramos", options: { resume: "session-xyz", // ID da sessão da conversação anterior model: "claude-sonnet-4-20250514", allowedTools: ["Read", "Edit", "Write", "Glob", "Grep", "Bash"] }})// A conversação continua com contexto completo da sessão anteriorfor 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 se uma sessão foi interrompidaconst 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('Sessão foi interrompida. Pronta para retomada...') // O SDK lida com o carregamento da transcrição internamente return { canResume: true, sessionId: sessionId } } return { canResume: false }}// Retomar uma sessão interrompidaconst resumeInterrupted = async (sessionId: string) => { const status = await checkSessionStatus(sessionId) if (status.canResume) { const response = query({ prompt: "Vamos continuar de onde paramos", options: { resume: status.sessionId } }) for await (const message of response) { console.log(message) } }}
O sistema de gerenciamento de sessões do Claude Code SDK fornece uma base robusta para manter o estado da conversação e permitir a retomada perfeita de tarefas de desenvolvimento, tudo através de uma abordagem simples baseada em arquivos que não requer infraestrutura externa.