Erstellen Sie benutzerdefinierte KI-Agenten mit dem Claude Code SDK
SDK installieren
@anthropic-ai/claude-code
von NPM:API-Schlüssel setzen
ANTHROPIC_API_KEY
:Ihren ersten Agenten erstellen
Den Agenten ausführen
@anthropic-ai/claude-code
von NPMclaude
-Befehl. Verwenden Sie das --print
(oder -p
) Flag, um im nicht-interaktiven Modus zu laufen und das Endergebnis zu drucken:Flag | Beschreibung | Beispiel |
---|---|---|
--print , -p | Im nicht-interaktiven Modus ausführen | claude -p "anfrage" |
--output-format | Ausgabeformat spezifizieren (text , json , stream-json ) | claude -p --output-format json |
--resume , -r | Eine Unterhaltung nach Session-ID fortsetzen | claude --resume abc123 |
--continue , -c | Die neueste Unterhaltung fortsetzen | claude --continue |
--verbose | Ausführliche Protokollierung aktivieren | claude --verbose |
--append-system-prompt | An System-Prompt anhängen (nur mit --print ) | claude --append-system-prompt "Benutzerdefinierte Anweisung" |
--allowedTools | Leerzeichen-getrennte Liste erlaubter Tools, oder String mit Komma-getrennter Liste erlaubter Tools | claude --allowedTools mcp__slack mcp__filesystem claude --allowedTools "Bash(npm install),mcp__filesystem" |
--disallowedTools | Leerzeichen-getrennte Liste verweigerter Tools, oder String mit Komma-getrennter Liste verweigerter Tools | claude --disallowedTools mcp__splunk mcp__github claude --disallowedTools "Bash(git commit),mcp__github" |
--mcp-config | MCP-Server aus einer JSON-Datei laden | claude --mcp-config servers.json |
--permission-prompt-tool | MCP-Tool für die Behandlung von Berechtigungsaufforderungen (nur mit --print ) | claude --permission-prompt-tool mcp__auth__prompt |
ANTHROPIC_API_KEY
, wie im Schnellstart demonstriert.
CLAUDE_CODE_USE_BEDROCK=1
und konfigurieren Sie AWS-AnmeldedatenCLAUDE_CODE_USE_VERTEX=1
und konfigurieren Sie Google Cloud-Anmeldedaten--allowedTools
-Flag erlauben. MCP-Tool-Namen folgen dem Muster mcp__<serverName>__<toolName>
wobei:serverName
der Schlüssel aus Ihrer MCP-Konfigurationsdatei isttoolName
das spezifische Tool ist, das von diesem Server bereitgestellt wirdmcp__<serverName>
), werden alle Tools von diesem Server erlaubt.Glob-Muster (z.B. mcp__go*
) werden nicht unterstützt.--permission-prompt-tool
, um ein MCP-Tool zu übergeben, das wir verwenden werden, um zu überprüfen, ob der Benutzer dem Modell Berechtigungen zur Ausführung eines bestimmten Tools erteilt. Wenn das Modell ein Tool aufruft, passiert Folgendes:
--allowedTools
und --disallowedTools
, die an das SDK übergeben wurden; wenn eine davon den Tool-Aufruf erlaubt oder verweigert, fahren wir mit dem Tool-Aufruf fort--permission-prompt-tool
bereitgestellt haben--permission-prompt-tool
MCP-Tool erhält den Tool-Namen und die Eingabe und muss eine JSON-stringifizierte Payload mit dem Ergebnis zurückgeben. Die Payload muss eine der folgenden sein:
updatedInput
, um dem Modell mitzuteilen, dass der Berechtigungs-Prompt seine Eingabe mutiert hat; andernfalls setzen Sie updatedInput
auf die ursprüngliche Eingabe, wie im obigen Beispiel. Wenn das Tool beispielsweise einem Benutzer ein Dateibearbeitungs-Diff zeigt und ihm erlaubt, das Diff manuell zu bearbeiten, sollte das Berechtigungs-Prompt-Tool diese aktualisierte Bearbeitung zurückgeben.init
-Systemnachricht, gefolgt von einer Liste von Benutzer- und Assistentennachrichten, gefolgt von einer finalen result
-Systemnachricht mit Statistiken. Jede Nachricht wird als separates JSON-Objekt ausgegeben.
Message
- und MessageParam
-Typen sind in Anthropic SDKs verfügbar. Siehe zum Beispiel die Anthropic TypeScript und Python SDKs.
stdin
bereitgestellt werden, wobei jede Nachricht einen Benutzerzug darstellt. Dies ermöglicht mehrere Züge einer Unterhaltung, ohne das claude
-Binary neu zu starten, und ermöglicht es, dem Modell Anleitung zu geben, während es eine Anfrage verarbeitet.
Jede Nachricht ist ein JSON-‘Benutzernachricht’-Objekt, das demselben Format wie das Ausgabenachrichtenschema folgt. Nachrichten werden im jsonl-Format formatiert, wobei jede Eingabezeile ein vollständiges JSON-Objekt ist. Streaming-JSON-Eingabe erfordert -p
und --output-format stream-json
.
Derzeit ist dies auf reine Textnachrichten beschränkt.