Gambaran Umum

Claude Code SDK mendukung dua mode input yang berbeda untuk berinteraksi dengan agen:
  • Mode Input Streaming (Default & Direkomendasikan) - Sesi interaktif yang persisten
  • Input Pesan Tunggal - Query satu kali yang menggunakan state sesi dan melanjutkan
Panduan ini menjelaskan perbedaan, manfaat, dan kasus penggunaan untuk setiap mode untuk membantu Anda memilih pendekatan yang tepat untuk aplikasi Anda.

Mode Input Streaming (Direkomendasikan)

Mode input streaming adalah cara yang disukai untuk menggunakan Claude Code SDK. Ini menyediakan akses penuh ke kemampuan agen dan memungkinkan pengalaman interaktif yang kaya. Ini memungkinkan agen beroperasi sebagai proses yang hidup lama yang menerima input pengguna, menangani interupsi, menampilkan permintaan izin, dan menangani manajemen sesi.

Cara Kerjanya

Manfaat

Upload Gambar

Lampirkan gambar langsung ke pesan untuk analisis visual dan pemahaman

Pesan Antrian

Kirim beberapa pesan yang diproses secara berurutan, dengan kemampuan untuk menginterupsi

Integrasi Tool

Akses penuh ke semua tool dan server MCP kustom selama sesi

Dukungan Hooks

Gunakan lifecycle hooks untuk menyesuaikan perilaku di berbagai titik

Umpan Balik Real-time

Lihat respons saat dibuat, bukan hanya hasil akhir

Persistensi Konteks

Pertahankan konteks percakapan di beberapa giliran secara alami

Contoh Implementasi

import { query } from "@anthropic-ai/claude-code";
import { readFileSync } from "fs";

async function* generateMessages() {
  // Pesan pertama
  yield {
    type: "user" as const,
    message: {
      role: "user" as const,
      content: "Analisis codebase ini untuk masalah keamanan"
    }
  };
  
  // Tunggu kondisi atau input pengguna
  await new Promise(resolve => setTimeout(resolve, 2000));
  
  // Tindak lanjut dengan gambar
  yield {
    type: "user" as const,
    message: {
      role: "user" as const,
      content: [
        {
          type: "text",
          text: "Tinjau diagram arsitektur ini"
        },
        {
          type: "image",
          source: {
            type: "base64",
            media_type: "image/png",
            data: readFileSync("diagram.png", "base64")
          }
        }
      ]
    }
  };
}

// Proses respons streaming
for await (const message of query({
  prompt: generateMessages(),
  options: {
    maxTurns: 10,
    allowedTools: ["Read", "Grep"]
  }
})) {
  if (message.type === "result") {
    console.log(message.result);
  }
}

Input Pesan Tunggal

Input pesan tunggal lebih sederhana tetapi lebih terbatas.

Kapan Menggunakan Input Pesan Tunggal

Gunakan input pesan tunggal ketika:
  • Anda memerlukan respons satu kali
  • Anda tidak memerlukan lampiran gambar, hooks, dll.
  • Anda perlu beroperasi dalam lingkungan stateless, seperti fungsi lambda

Keterbatasan

Mode input pesan tunggal tidak mendukung:
  • Lampiran gambar langsung dalam pesan
  • Antrian pesan dinamis
  • Interupsi real-time
  • Integrasi hook
  • Percakapan multi-giliran yang alami

Contoh Implementasi

import { query } from "@anthropic-ai/claude-code";

// Query satu kali sederhana
for await (const message of query({
  prompt: "Jelaskan alur autentikasi",
  options: {
    maxTurns: 1,
    allowedTools: ["Read", "Grep"]
  }
})) {
  if (message.type === "result") {
    console.log(message.result);
  }
}

// Lanjutkan percakapan dengan manajemen sesi
for await (const message of query({
  prompt: "Sekarang jelaskan proses otorisasi",
  options: {
    continue: true,
    maxTurns: 1
  }
})) {
  if (message.type === "result") {
    console.log(message.result);
  }
}