Claude Agent SDK menyediakan kemampuan manajemen sesi untuk menangani status percakapan dan pemulihan. Sesi memungkinkan Anda untuk melanjutkan percakapan di berbagai interaksi sambil mempertahankan konteks penuh.
Ketika Anda memulai kueri baru, SDK secara otomatis membuat sesi dan mengembalikan ID sesi dalam pesan sistem awal. Anda dapat menangkap ID ini untuk melanjutkan sesi nanti.
import { query } from "@anthropic-ai/claude-agent-sdk"
let sessionId: string | undefined
const response = query({
prompt: "Help me build a web application",
options: {
model: "claude-sonnet-4-5"
}
})
for await (const message of response) {
// The first message is a system init message with the session ID
if (message.type === 'system' && message.subtype === 'init') {
sessionId = message.session_id
console.log(`Session started with ID: ${sessionId}`)
// You can save this ID for later resumption
}
// Process other messages...
console.log(message)
}
// Later, you can use the saved sessionId to resume
if (sessionId) {
const resumedResponse = query({
prompt: "Continue where we left off",
options: {
resume: sessionId
}
})
}SDK mendukung pemulihan sesi dari status percakapan sebelumnya, memungkinkan alur kerja pengembangan berkelanjutan. Gunakan opsi resume dengan ID sesi untuk melanjutkan percakapan sebelumnya.
SDK secara otomatis menangani pemuatan riwayat percakapan dan konteks ketika Anda melanjutkan sesi, memungkinkan Claude untuk melanjutkan tepat di mana ia berhenti.
Untuk melacak dan mengembalikan perubahan file di seluruh sesi, lihat File Checkpointing.
Ketika melanjutkan sesi, Anda dapat memilih untuk melanjutkan sesi asli atau memisahkannya menjadi cabang baru. Secara default, melanjutkan akan terus dengan sesi asli. Gunakan opsi forkSession (TypeScript) atau fork_session (Python) untuk membuat ID sesi baru yang dimulai dari status yang dilanjutkan.
Pemisahan berguna ketika Anda ingin:
| Perilaku | forkSession: false (default) | forkSession: true |
|---|---|---|
| ID Sesi | Sama dengan asli | ID sesi baru dihasilkan |
| Riwayat | Menambahkan ke sesi asli | Membuat cabang baru dari titik lanjutan |
| Sesi Asli | Dimodifikasi | Dipertahankan tidak berubah |
| Kasus Penggunaan | Lanjutkan percakapan linear | Cabang untuk menjelajahi alternatif |
import { query } from "@anthropic-ai/claude-agent-sdk"
// Resume a previous session using its ID
const response = query({
prompt: "Continue implementing the authentication system from where we left off",
options: {
resume: "session-xyz", // Session ID from previous conversation
model: "claude-sonnet-4-5",
allowedTools: ["Read", "Edit", "Write", "Glob", "Grep", "Bash"]
}
})
// The conversation continues with full context from the previous session
for await (const message of response) {
console.log(message)
}import { query } from "@anthropic-ai/claude-agent-sdk"
// First, capture the session ID
let sessionId: string | undefined
const response = query({
prompt: "Help me design a REST API",
options: { model: "claude-sonnet-4-5" }
})
for await (const message of response) {
if (message.type === 'system' && message.subtype === 'init') {
sessionId = message.session_id
console.log(`Original session: ${sessionId}`)
}
}
// Fork the session to try a different approach
const forkedResponse = query({
prompt: "Now let's redesign this as a GraphQL API instead",
options: {
resume: sessionId,
forkSession: true, // Creates a new session ID
model: "claude-sonnet-4-5"
}
})
for await (const message of forkedResponse) {
if (message.type === 'system' && message.subtype === 'init') {
console.log(`Forked session: ${message.session_id}`)
// This will be a different session ID
}
}
// The original session remains unchanged and can still be resumed
const originalContinued = query({
prompt: "Add authentication to the REST API",
options: {
resume: sessionId,
forkSession: false, // Continue original session (default)
model: "claude-sonnet-4-5"
}
})