Manajemen Sesi

Claude Agent SDK menyediakan kemampuan manajemen sesi untuk menangani status percakapan dan pemulihan. Sesi memungkinkan Anda melanjutkan percakapan di berbagai interaksi sambil mempertahankan konteks penuh.

Cara Kerja Sesi

Ketika Anda memulai query baru, SDK secara otomatis membuat sesi dan mengembalikan ID sesi dalam pesan sistem awal. Anda dapat menangkap ID ini untuk melanjutkan sesi nanti.

Mendapatkan ID Sesi

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
    }
  })
}

Melanjutkan Sesi

SDK mendukung melanjutkan sesi dari status percakapan sebelumnya, memungkinkan alur kerja pengembangan yang berkelanjutan. Gunakan opsi resume dengan ID sesi untuk melanjutkan percakapan sebelumnya.
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)
}
SDK secara otomatis menangani pemuatan riwayat percakapan dan konteks ketika Anda melanjutkan sesi, memungkinkan Claude untuk melanjutkan tepat di mana ia berhenti.

Membuat Cabang Sesi

Ketika melanjutkan sesi, Anda dapat memilih untuk melanjutkan sesi asli atau membuat cabang ke sesi baru. Secara default, melanjutkan akan melanjutkan sesi asli. Gunakan opsi forkSession (TypeScript) atau opsi fork_session (Python) untuk membuat ID sesi baru yang dimulai dari status yang dilanjutkan.

Kapan Membuat Cabang Sesi

Membuat cabang berguna ketika Anda ingin:
  • Menjelajahi pendekatan yang berbeda dari titik awal yang sama
  • Membuat beberapa cabang percakapan tanpa memodifikasi yang asli
  • Menguji perubahan tanpa mempengaruhi riwayat sesi asli
  • Mempertahankan jalur percakapan terpisah untuk eksperimen yang berbeda

Membuat Cabang vs Melanjutkan

PerilakuforkSession: false (default)forkSession: true
ID SesiSama dengan asliID sesi baru dibuat
RiwayatMenambahkan ke sesi asliMembuat cabang baru dari titik lanjutan
Sesi AsliDimodifikasiDipertahankan tidak berubah
Kasus PenggunaanMelanjutkan percakapan linearMembuat cabang untuk menjelajahi alternatif

Contoh: Membuat Cabang Sesi

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"
  }
})