Überblick

Das Claude Code SDK unterstützt zwei verschiedene Eingabemodi für die Interaktion mit Agenten:
  • Streaming-Eingabemodus (Standard & Empfohlen) - Eine persistente, interaktive Sitzung
  • Einzelnachrichten-Eingabe - Einmalige Abfragen, die Sitzungsstatus und Wiederaufnahme verwenden
Dieser Leitfaden erklärt die Unterschiede, Vorteile und Anwendungsfälle für jeden Modus, um Ihnen bei der Auswahl des richtigen Ansatzes für Ihre Anwendung zu helfen.

Streaming-Eingabemodus (Empfohlen)

Der Streaming-Eingabemodus ist die bevorzugte Art, das Claude Code SDK zu verwenden. Er bietet vollen Zugang zu den Fähigkeiten des Agenten und ermöglicht reichhaltige, interaktive Erfahrungen. Er ermöglicht es dem Agenten, als langlebiger Prozess zu operieren, der Benutzereingaben entgegennimmt, Unterbrechungen behandelt, Berechtigungsanfragen anzeigt und Sitzungsverwaltung übernimmt.

Wie es funktioniert

Vorteile

Bild-Uploads

Bilder direkt an Nachrichten anhängen für visuelle Analyse und Verständnis

Warteschlangen-Nachrichten

Mehrere Nachrichten senden, die sequenziell verarbeitet werden, mit der Möglichkeit zu unterbrechen

Tool-Integration

Vollzugriff auf alle Tools und benutzerdefinierte MCP-Server während der Sitzung

Hooks-Unterstützung

Lebenszyklus-Hooks verwenden, um Verhalten an verschiedenen Punkten anzupassen

Echtzeit-Feedback

Antworten sehen, während sie generiert werden, nicht nur Endergebnisse

Kontext-Persistenz

Gesprächskontext über mehrere Wendungen natürlich beibehalten

Implementierungsbeispiel

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

async function* generateMessages() {
  // Erste Nachricht
  yield {
    type: "user" as const,
    message: {
      role: "user" as const,
      content: "Analysiere diese Codebasis auf Sicherheitsprobleme"
    }
  };
  
  // Auf Bedingungen oder Benutzereingabe warten
  await new Promise(resolve => setTimeout(resolve, 2000));
  
  // Nachfassen mit Bild
  yield {
    type: "user" as const,
    message: {
      role: "user" as const,
      content: [
        {
          type: "text",
          text: "Überprüfe dieses Architekturdiagramm"
        },
        {
          type: "image",
          source: {
            type: "base64",
            media_type: "image/png",
            data: readFileSync("diagram.png", "base64")
          }
        }
      ]
    }
  };
}

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

Einzelnachrichten-Eingabe

Einzelnachrichten-Eingabe ist einfacher, aber begrenzter.

Wann Einzelnachrichten-Eingabe verwenden

Verwenden Sie Einzelnachrichten-Eingabe, wenn:
  • Sie eine einmalige Antwort benötigen
  • Sie keine Bildanhänge, Hooks usw. benötigen
  • Sie in einer zustandslosen Umgebung operieren müssen, wie einer Lambda-Funktion

Einschränkungen

Der Einzelnachrichten-Eingabemodus unterstützt nicht:
  • Direkte Bildanhänge in Nachrichten
  • Dynamische Nachrichten-Warteschlangen
  • Echtzeit-Unterbrechung
  • Hook-Integration
  • Natürliche Multi-Turn-Gespräche

Implementierungsbeispiel

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

// Einfache einmalige Abfrage
for await (const message of query({
  prompt: "Erkläre den Authentifizierungsablauf",
  options: {
    maxTurns: 1,
    allowedTools: ["Read", "Grep"]
  }
})) {
  if (message.type === "result") {
    console.log(message.result);
  }
}

// Gespräch mit Sitzungsverwaltung fortsetzen
for await (const message of query({
  prompt: "Erkläre jetzt den Autorisierungsprozess",
  options: {
    continue: true,
    maxTurns: 1
  }
})) {
  if (message.type === "result") {
    console.log(message.result);
  }
}