claude_code-Voreinstellung für CLI- oder IDE-ähnliche Codierungswerkzeuge, bei denen ein Mensch die Arbeit beobachtet und steuert. Schreiben Sie Ihre eigene Aufforderung für Agenten mit einer anderen Oberfläche, Identität oder einem anderen Berechtigungsmodell.
Wie Systemaufforderungen funktionieren
Eine Systemaufforderung ist der anfängliche Anweisungssatz, der definiert, wie sich Claude während eines Gesprächs verhält. Das Agent SDK hat drei Ausgangspunkte dafür:- Minimale Standardeinstellung: Wenn Sie
systemPromptin TypeScript odersystem_promptin Python nicht festlegen, verwendet das SDK eine minimale Aufforderung, die Werkzeugaufrufe abdeckt, aber den Rest desclaude_code-Presets auslässt, einschließlich seiner Sicherheits- und Sicherheitsanweisungen. Dies unterscheidet sich vonclaude -p, das standardmäßig die Claude Code-Systemaufforderung verwendet. Wenn Sie von der CLI migrieren und ein übereinstimmendes Verhalten wünschen, legen Sie dasclaude_code-Preset fest. claude_code-Preset: die Systemaufforderung, die die Claude Code CLI verwendet, mit Werkzeugnutzungsanweisungen und Sicherheits- und Sicherheitsanweisungen. Legen SiesystemPrompt: { type: "preset", preset: "claude_code" }in TypeScript odersystem_prompt={"type": "preset", "preset": "claude_code"}in Python fest, optional mitappend, um Ihre eigenen Anweisungen am Ende hinzuzufügen.- Benutzerdefinierte Zeichenkette: eine Aufforderung, die Sie selbst schreiben. Das SDK sendet nur das, was Sie bereitstellen.
Entscheiden Sie sich für einen Ausgangspunkt
Der entscheidende Faktor ist, wie sehr Ihr Agent Claude Code ähnelt: ein Codierungs-Agent, der in einem Repository arbeitet, mit einem Menschen, der die Streaming-Ausgabe beobachtet und die Arbeit lenkt. Je weiter Ihr Produkt davon entfernt ist, desto mehr werden Sie Ihre eigene Aufforderung schreiben wollen.
„Unterschiedlich von Claude Code“ bedeutet normalerweise eines der folgenden:
- Andere Oberfläche: Die Ausgabe wird nicht in einem Terminal von der Person gelesen, die sie ausgelöst hat. Chat-UIs, Strukturierte-Ausgabe-Consumer und Nicht-Codierungs-Automatisierung benötigen jeweils eine Aufforderung, die damit übereinstimmt, wie ihre Ausgabe gerendert und überprüft wird. Unbeaufsichtigte Codierungs-Automatisierung, wie ein CI-Job, der Lint-Fehler behebt oder Diffs überprüft, passt immer noch zum Preset, da die Arbeit selbst das ist, wofür das Preset geschrieben wurde.
- Andere Identität: Der Agent sollte sich nicht als Claude Code präsentieren. Ein Support-Bot, ein Datenanalyse-Assistent oder ein domänenspezifischer Agent benötigt seinen eigenen Namen, Umfang und eine eigene Persona.
- Anderes Berechtigungsmodell: Der Agent läuft autonom ohne menschliche Genehmigung bei jedem Schritt, oder arbeitet mit einem engen Satz von Ressourcen. Claude Code’s Aufforderung geht davon aus, dass ein Mensch in der Schleife ist und Zugriff auf einen vollständigen Werkzeugsatz hat.
- Nicht-Codierungs-Aufgaben: Der Großteil von Claude Code’s Aufforderung ist Codierungs-Anleitung. Für Forschungs-, Inhalts- oder Operations-Agenten konkurriert diese Anleitung mit den Anweisungen, die Sie tatsächlich benötigen.
Verhalten des Agenten anpassen
append und eine benutzerdefinierte Eingabeaufforderungszeichenkette ändern jeweils die Systemaufforderung direkt, und ein Ausgabestil ändert die Anweisungen, die Claude Code Claude für jede Antwort gibt. CLAUDE.md geht einen anderen Weg: Das SDK liest sie und injiziert ihren Inhalt als Projektkontext in die Konversation, sodass sie das Verhalten neben jeder Systemaufforderung, die Sie wählen, prägt. Skills, hooks und permissions prägen das Verhalten auch außerhalb der Systemaufforderung und werden auf eigenen Seiten behandelt.
CLAUDE.md-Dateien für projektspezifische Anweisungen
CLAUDE.md-Dateien geben Claude persistenten Projektkontext und Anweisungen. Das SDK injiziert ihren Inhalt in die Konversation und lässt die Systemaufforderung unverändert, sodass sie mit jeder Systemaufforderungskonfiguration funktionieren. Informationen darüber, was in CLAUDE.md eingefügt werden soll, wo es platziert werden soll und wie effektive Anweisungen geschrieben werden, finden Sie unter When to add to CLAUDE.md und im Rest von How Claude remembers your project. Dieser Abschnitt behandelt, was für das SDK spezifisch ist: wie CLAUDE.md geladen wird. Das SDK liest CLAUDE.md, wenn die entsprechende Einstellungsquelle aktiviert ist:'project' lädt CLAUDE.md oder .claude/CLAUDE.md aus dem Arbeitsverzeichnis, und 'user' lädt ~/.claude/CLAUDE.md. Standard-query()-Optionen aktivieren beide Quellen, sodass CLAUDE.md automatisch geladen wird. Wenn Sie settingSources in TypeScript oder setting_sources in Python explizit festlegen, beziehen Sie die benötigten Quellen ein. Das Laden von CLAUDE.md wird durch Einstellungsquellen gesteuert, nicht durch die claude_code-Voreinstellung.
CLAUDE.md mit dem SDK laden
Um CLAUDE.md zu laden, setzen SiesettingSources so, dass es die Ebene einschließt, auf der sich Ihre CLAUDE.md befindet. Das folgende Beispiel lädt eine projektspezifische CLAUDE.md zusammen mit der claude_code-Voreinstellung, sodass Claude sowohl die Coding-Agent-Eingabeaufforderung als auch die Konventionen Ihres Projekts hat:
settingSources-Array übergeben.
Ausgabestile für persistente Konfigurationen
Ausgabestile sind gespeicherte Konfigurationen von Anweisungen, die Claudes Rolle, Ton und Ausgabeformat ändern. Sie werden als Markdown-Dateien gespeichert und können über Sitzungen und Projekte hinweg wiederverwendet werden.Einen Ausgabestil erstellen
Ein Ausgabestil ist eine Markdown-Datei mit Frontmatter für Metadaten, gefolgt vom Eingabeaufforderungsinhalt. Speichern Sie ihn unter~/.claude/output-styles/ für einen Stil auf Benutzerebene, der in jedem Projekt verfügbar ist, oder .claude/output-styles/ in Ihrem Repository für einen Stil auf Projektebene, den Sie committen und mit Ihrem Team teilen können.
Ein benutzerdefinierter Ausgabestil lässt die Softwareentwicklungsanweisungen der claude_code-Voreinstellung weg und verwendet Ihre eigenen. Um sie zu behalten und Ihre Anweisungen darauf zu schichten, setzen Sie keep-coding-instructions: true im Frontmatter. Diese Anweisungen sind nur im vollständigen System-Prompt von Claude Code enthalten, daher hat die Einstellung in einer Sitzung mit dem kürzeren System-Prompt keine Auswirkung; setzen Sie CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT auf 0, um den vollständigen Prompt bei jedem Modell auszuwählen. Behalten Sie sie, wenn Ihr Agent weiterhin Softwareentwicklungsarbeit leistet. Lassen Sie sie weg, wenn Sie die Rolle vollständig ersetzen.
Das folgende Beispiel definiert eine Code-Review-Persona, die die Codierungsanweisungen beibehält, da die Überprüfung von Code immer noch von Claudes Sicherheits- und Code-Qualitätsleitlinien profitiert. Speichern Sie es als ~/.claude/output-styles/code-reviewer.md, um es über Projekte hinweg verfügbar zu machen:
~/.claude/output-styles/code-reviewer.md
Einen Ausgabestil aktivieren
Nach der Erstellung aktivieren Sie Ausgabestile über:-
CLI: Führen Sie
/output-style <style>aus, zum Beispiel/output-style concise, oder führen Sie/configaus und wählen Sie einen. Der Befehl/output-styleerfordert Claude Code v2.1.269 oder später. -
Einstellungen: Setzen Sie
outputStylein.claude/settings.local.json -
TypeScript SDK: Setzen Sie
outputStyleinnerhalb des Inline-settings-Objekts, das anquery()übergeben wird, oder verweisen Siesettingsauf eine Einstellungsdatei, die es setzt.outputStyleist kein Feld auf oberster Ebene vonOptions:
outputStyle über die settings-Option, die eine JSON-Zeichenkette wie '{"outputStyle": "Explanatory"}' oder einen Pfad zu einer Einstellungsdatei, die es setzt, akzeptiert.
Hinweis für SDK-Benutzer: Ausgabestile werden geladen, wenn Sie settingSources: ['user'] oder settingSources: ['project'] (TypeScript) / setting_sources=["user"] oder setting_sources=["project"] (Python) in Ihren Optionen einbeziehen.
An die claude_code-Voreinstellung anhängen
Sie können die Claude Code-Voreinstellung mit einer append-Eigenschaft verwenden, um Ihre benutzerdefinierten Anweisungen hinzuzufügen und gleichzeitig alle integrierten Funktionen zu bewahren.
Prompt-Caching über Benutzer und Maschinen verbessern
Standardmäßig können zwei Sitzungen, die die gleicheclaude_code-Voreinstellung und den gleichen append-Text verwenden, keinen Prompt-Cache-Eintrag teilen, wenn sich ihre Auto-Memory-Speicherorte unterscheiden. Die Voreinstellung bettet diesen Speicherort in die Systemaufforderung vor Ihrem append-Text ein. Der Speicherort ist standardmäßig ein absoluter Pfad unter ~/.claude/projects/, benannt nach dem Pfad des Repositorys auf der Festplatte, daher unterscheidet er sich zwischen Benutzern, Maschinen und Checkouts.
CLAUDE.md-Inhalt und Umgebungsdetails wie das Arbeitsverzeichnis, die Plattform, die Shell und die Betriebssystemversion beeinflussen den Systemaufforderungs-Cache nicht, da Claude Code sie in der Konversation bereitstellt, nicht in der Systemaufforderung.
Um die Systemaufforderung über Sitzungen hinweg identisch zu machen, setzen Sie excludeDynamicSections: true in TypeScript oder "exclude_dynamic_sections": True in Python. Der Pro-Benutzer-Kontext wird in die erste Benutzernachricht verschoben, sodass nur die statische Voreinstellung und Ihr append-Text in der Systemaufforderung verbleiben, damit identische Konfigurationen einen Cache-Eintrag über Benutzer und Maschinen hinweg teilen können.
excludeDynamicSections erfordert @anthropic-ai/claude-agent-sdk v0.2.98 oder später oder claude-agent-sdk v0.1.58 oder später für Python. Setzen Sie es nur auf der Voreinstellungsobjektform. Das SDK ignoriert es, wenn Sie eine benutzerdefinierte Eingabeaufforderung statt der Voreinstellung übergeben; um die statischen Anweisungen einer benutzerdefinierten Eingabeaufforderung im TypeScript SDK zwischengespeichert zu halten, siehe Cache the static part of a custom prompt.append-Block mit excludeDynamicSections, sodass eine Flotte von Agenten die gleiche zwischengespeicherte Systemaufforderung über Benutzer und Maschinen hinweg wiederverwenden können:
--exclude-dynamic-system-prompt-sections.
Benutzerdefinierte Systemaufforderungen
Sie können eine benutzerdefinierte Zeichenkette alssystemPrompt bereitstellen, um die Standardeinstellung vollständig durch Ihre eigenen Anweisungen zu ersetzen.
system_prompt={"type": "file", "path": "..."} laden, anstatt sie als Zeichenkette zu übergeben. Das Python SDK übergibt eine Zeichenketten-Eingabeaufforderung als ein Befehlszeilenargument an den CLI-Unterprozess, daher schlägt eine Eingabeaufforderung, die das Betriebssystem-Argumentlängenlimit überschreitet, beim Prozessstart fehl, bevor eine API-Anfrage gesendet wird. Unter Linux ist der Fehler Argument list too long. Siehe SystemPromptFile für die Plattformschwellwerte und das Windows-Verhalten.
Den statischen Teil einer benutzerdefinierten Eingabeaufforderung zwischenspeichern
Im TypeScript SDK können Sie eine benutzerdefinierte Eingabeaufforderung als Array von Zeichenketten statt als eine Zeichenkette übergeben, mit demSYSTEM_PROMPT_DYNAMIC_BOUNDARY-Marker zwischen dem statischen Teil und dem Rest. Verwenden Sie dies, wenn Ihre Eingabeaufforderung Anweisungen kombiniert, die bei jeder Anfrage gleich sind, mit Kontext, der sich pro Anfrage ändert, wie z. B. der Kunde oder das Ticket, das der Agent bearbeitet. Wenn Sie beide Teile als eine Zeichenkette übergeben, ändert eine Änderung des Pro-Anfrage-Teils die gesamte Systemaufforderung, sodass die statischen Anweisungen auch den Cache verfehlen. Diese Form ist im Python SDK nicht verfügbar; ClaudeAgentOptions listet die Formen auf, die system_prompt akzeptiert.
Das SDK teilt die Eingabeaufforderung nur, wenn es die Claude API direkt aufruft oder auf Claude Platform on AWS ausgeführt wird. In jeder anderen Konfiguration, wie Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry oder ein LLM-Gateway, und wann immer Sie
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 setzen, sendet das SDK die gesamte Eingabeaufforderung als einen Block, genauso wie das Übergeben einer Zeichenkette.SYSTEM_PROMPT_DYNAMIC_BOUNDARY aus @anthropic-ai/claude-agent-sdk und übergeben Sie es als sein eigenes Array-Element zwischen den beiden Teilen. Das SDK sendet die Zeichenketten vor dem Marker als einen Textblock und die Zeichenketten nach ihm als einen zweiten Block, jeweils mit seinem eigenen Cache-Breakpoint. Im folgenden Beispiel lädt ein Support-Agent seine Triage-Anweisungen aus einer Datei und erhält Details zu einem Ticket bei jeder Anfrage, sodass die Anweisungen zwischengespeichert bleiben, während sich die Ticket-Details ändern:
TypeScript
cache_creation_input_tokens und cache_read_input_tokens auf jeder Ergebnisnachricht.
Das SDK setzt die Blöcke aus dem Array wie folgt zusammen:
- Das SDK verbindet die Zeichenketten auf jeder Seite des Markers mit einer Leerzeile dazwischen und entfernt den Marker selbst, sodass der Marker-Text Claude nicht erreicht.
- Wenn Sie den Marker mehr als einmal einbeziehen, ist der erste die Aufteilung und das SDK entfernt die anderen.
- Wenn Sie den Marker weglassen, verbindet das SDK alle Zeichenketten in einen Block, genauso wie das Übergeben einer Zeichenkette.
--system-prompt oder --system-prompt-file ist die Eingabeaufforderung eine Zeichenkette, daher gibt es kein Array, das den Marker tragen kann. Beziehen Sie stattdessen eine Zeile ein, die nur __SYSTEM_PROMPT_DYNAMIC_BOUNDARY__ enthält, zwischen den statischen und Pro-Anfrage-Teilen. Claude Code teilt die Eingabeaufforderung an der ersten solchen Zeile in die gleichen zwei Blöcke auf und entfernt diese Zeile. Erfordert Claude Code v2.1.275 oder später.
Im SDK bevorzugen Sie die Array-Form, die die Grenze ohne eine Marker-Zeile trägt.
Ändern Sie die Eingabeaufforderung einer bestehenden Sitzung
Standardmäßig erstellt Claude Code die Systemaufforderung einmal, bei der ersten Anfrage einer Sitzung, mit Ihremappend-Text oder benutzerdefinierten Eingabeaufforderung eingeschlossen, und zeichnet sie in der Sitzung auf. Bis die Sitzung komprimiert wird, verwendet jede spätere Anfrage diese aufgezeichnete Eingabeaufforderung, auch nachdem Sie zur Sitzung mit resume oder continue zurückkehren. Wenn Sie eine andere append oder benutzerdefinierte Eingabeaufforderung bei diesem späteren Aufruf übergeben, wird sie wirksam, sobald die Sitzung komprimiert wird oder in einer neuen Sitzung.
Aktualisieren Sie Claudes Anweisungen während der Sitzung
Wenn sich die Anweisungen, die Sie in die Systemaufforderung eingefügt haben, ändern müssen, während eine Sitzung läuft, beispielsweise weil Ihr Benutzer den Agenten in einen schreibgeschützten Modus umgeschaltet hat oder seine Konfiguration in Ihrer App bearbeitet hat, senden Sie die neuen Anweisungen in der Konversation stattsystemPrompt zu ändern:
- In Ihrer nächsten Nachricht: Beziehen Sie die neuen Anweisungen in die nächste Benutzernachricht ein, die Sie senden.
- Aus einem Hook: Geben Sie
additionalContextaus einemUserPromptSubmitoderPostToolUseHook-Callback zurück, geschrieben als eine sachliche Aussage wie „Der Arbeitsbereich ist jetzt schreibgeschützt“. Das SDK fügt den Text an der Stelle in die Konversation ein, an der der Hook ausgelöst wurde, sodass die aufgezeichnete Eingabeaufforderung unverändert bleibt.
Schalten Sie die Aufzeichnung aus, während Sie an der Formulierung arbeiten
Während Sie an der Formulierung der Eingabeaufforderung arbeiten und möchten, dass jede Bearbeitung eine Sitzung erreicht, die Sie fortsetzen, setzen Siesnapshot auf false auf der Objektform der Systemaufforderung. Claude Code erstellt dann die Eingabeaufforderung bei jeder Anfrage neu. Das Feld ist auf der Voreinstellungs- und benutzerdefinierten Form von systemPrompt in TypeScript und von system_prompt in Python verfügbar und erfordert @anthropic-ai/claude-agent-sdk v0.3.257 oder später oder claude-agent-sdk v0.2.153 oder später.
Halten Sie die Aufzeichnung in der Produktion ein. Mit ausgeschalteter Aufzeichnung erreicht eine andere append oder benutzerdefinierte Eingabeaufforderung auf einer fortgesetzten Sitzung Claude beim nächsten Durchgang, und diese Anfrage kann den Prompt-Cache der Sitzung nicht wiederverwenden. Wo die API bewahrtes Denken erzwingt, verliert Claude auch sein Denken aus früheren Durchgängen.
Außerhalb von Cloud-Sitzungen, wenn Sie Claude Code im Bare-Modus starten, indem Sie --bare durch extraArgs übergeben oder CLAUDE_CODE_SIMPLE=1 setzen, bleibt die Aufzeichnung aus, es sei denn, Sie setzen snapshot: true.
Das Aufzeichnen einer append oder benutzerdefinierten Eingabeaufforderung standardmäßig erfordert Claude Code v2.1.265 oder später, das das TypeScript Agent SDK ab v0.3.265 und das Python Agent SDK ab v0.2.153 bündelt. Vor Claude Code v2.1.268 erstellten Sitzungen, die keine Funktionsflags abrufen, einschließlich Sitzungen auf Amazon Bedrock, Google Cloud’s Agent Platform und Microsoft Foundry, die Eingabeaufforderung bei jeder Anfrage neu und snapshot hatte keine Auswirkung.
Kontext, den Claude Code außerhalb des System-Prompts hinzufügt
System-Erinnerungen sind Nachrichten, die Claude Code während einer Sitzung zur Konversation hinzufügt, um Claude Kontext zu geben, wie z. B. den Inhalt Ihrer CLAUDE.md-Dateien oder einen Hinweis, dass sich eine Datei auf der Festplatte geändert hat. Claude Code sendet sie in der Konversation, nicht im System-Prompt, sodass die meisten davon Claude erreichen, unabhängig davon, ob Sie dieclaude_code-Voreinstellung verwenden oder Ihren eigenen String als systemPrompt übergeben.
Dieser Abschnitt behandelt die Erinnerungen, die am ehesten das Verhalten Ihres Agenten ändern, wie Sie die Erinnerungen deaktivieren, die Ihr Agent ersetzt, und wie Sie sehen, was Claude erhalten hat in einer bestimmten Anfrage.
Erinnerungen, die Claude Code zur Konversation hinzufügt
System-Erinnerungen sind Text, den Claude Code zusammen mit den Prompts, die Ihr Code sendet, zur Konversation hinzufügt. Die folgenden Erinnerungen sind diejenigen, die am ehesten das Verhalten Ihres Agenten ändern:- Projektanweisungen: die CLAUDE.md-Dateien, die Ihre
settingSources-Option lädt - Ausgabestil-Anweisungen: die Anweisungen des aktiven Ausgabestils in der Hauptkonversation
- Commit- und Pull-Request-Zuordnung: der
Co-Authored-By-Trailer und die Pull-Request-Fußzeile aus derattribution-Einstellung - Hook-Ausgabe: Text, den Ihre Hooks als
additionalContextzurückgeben - Verfügbare Skills: die Namen und Beschreibungen der Skills, die Claude aufrufen kann
- Verfügbare Subagenten: die Namen und Beschreibungen der Subagenten, die Claude starten kann
- Task-List-Hinweise: in einer Sitzung, die die Task-Tracking-Tools hat, ein Prompt zum Aktualisieren der Task-Liste, wenn Claude sie mehrere Züge lang nicht berührt hat
- Datei-geändert-Hinweise: ein Hinweis, dass sich eine Datei, die Claude zuvor gelesen hat, auf der Festplatte geändert hat
systemPrompt übergeben, fügen Sie einen Satz hinzu, der erklärt, was eine System-Erinnerung ist. Die claude_code-Voreinstellung hat einen, und Ihr String ersetzt die gesamte Voreinstellung. Ohne ihn teilt nichts in Ihrem Prompt Claude mit, dass Erinnerungen wie CLAUDE.md-Inhalte und Hook-Ausgabe von der Anwendung stammen und nicht vom Benutzer. Zum Beispiel:
Deaktivieren Sie den Kontext, den Ihr Agent ersetzt
Deaktivieren Sie ein Stück eingebauten Kontexts, wenn Ihr Agent seine eigene Version derselben Anleitung bereitstellt. Wenn Ihr Prompt Claude beispielsweise anweist, Commit-Nachrichten alsPROJ-142: fix login redirect ohne Trailer zu schreiben, teilt Claude Code Claude immer noch mit, jede Commit-Nachricht mit einem Co-Authored-By-Trailer zu beenden, sodass Claude zwei widersprüchliche Anweisungen für denselben Commit erhält.
Übergeben Sie Einstellungsschlüssel durch die settings-Option in TypeScript oder settings in Python, und Umgebungsvariablen durch die env-Option. In TypeScript ersetzt env die geerbte Umgebung, daher verteilen Sie process.env darin.
Setzen Sie
includeGitInstructions auf false, um die eingebauten Commit- und Pull-Request-Anweisungen auszuschließen, die Teil der Beschreibung des Bash-Tools sind und Claude auch mit einem benutzerdefinierten systemPrompt erreichen. Mit dem minimalen Standard, einem benutzerdefinierten systemPrompt oder einem benutzerdefinierten Hauptthread-Agenten mit eigenem Prompt startet die Sitzung jedoch ohne den Git-Status-Snapshot.
Wenn Sie CLAUDE_CODE_DISABLE_ATTACHMENTS setzen, sendet Claude Code auch @-Dateierwähnungen als Klartext, statt sie in Dateiinhalte zu erweitern. Die Liste der verfügbaren Subagenten und Benachrichtigungen zu Hintergrundaufgaben treffen immer noch ein. Um nur zu verhindern, dass @-Dateierwähnungen erweitert werden, setzen Sie stattdessen CLAUDE_CODE_DISABLE_FILE_MENTIONS=1, ab Claude Code v2.1.299. Claude erhält dann die erwähnten Pfade sowie einen Hinweis, sie mit seinen Datei-Tools zu lesen.
Das folgende Beispiel ist für einen Agenten, der seine eigenen Commit-Regeln in append trägt. Es setzt beide attribution-Schlüssel auf leere Strings, um den Trailer und die Fußzeile zu entfernen, und deaktiviert includeGitInstructions, damit Claude Codes eigene Commit-Workflow-Anweisungen nicht mit Ihren konkurrieren:
git log -1. Die Nachricht endet ohne einen Co-Authored-By-Trailer.
Sehen Sie, was Claude erhalten hat
Der SDK-Nachrichtenstrom enthält keine System-Erinnerungen, daher zeigt das Lesen der Nachrichten, die Ihr Code empfängt, nicht, was Claude sah. Um sie zu sehen, protokollieren Sie die Anfragen, die Claude Code sendet:- Rohes Request-Logging: Setzen Sie
OTEL_LOG_RAW_API_BODIESauffile:<dir>. Claude Code schreibt jeden Request-Body in dieses Verzeichnis. - Ein Gateway, das Sie kontrollieren: Zeigen Sie
ANTHROPIC_BASE_URLauf einen Proxy, der Request-Bodies protokolliert.
messages-Array. Eine Erinnerung erscheint in einer Benutzernachricht, die in <system-reminder>-Tags eingewickelt ist, oder auf einigen Modellen als separate Nachricht mit der system-Rolle.
Vergleich der vier Ansätze
Die vier Anpassungsmethoden unterscheiden sich darin, wo sie sich befinden, wie sie gemeinsam genutzt werden und was sie aus derclaude_code-Voreinstellung beibehalten.
„Mit Append“ bedeutet die Verwendung von
systemPrompt: { type: "preset", preset: "claude_code", append: "..." } in TypeScript oder system_prompt={"type": "preset", "preset": "claude_code", "append": "..."} in Python. CLAUDE.md ändert den System-Prompt selbst nicht: Das SDK injiziert seinen Inhalt als Projektkontext in die Konversation.
Ansätze kombinieren
Die Ansätze lassen sich kombinieren. Ein persistenter Ausgabestil oder CLAUDE.md legt das langfristige Verhalten fest, undappend lagert sitzungsspezifische Anweisungen darauf, ohne die gespeicherte Konfiguration zu ändern.
Einen Ausgabestil mit sitzungsspezifischen Ergänzungen kombinieren
Das folgende Beispiel setzt voraus, dass ein Ausgabestil „Code Reviewer“ bereits aktiv ist. Derappend-Block lagert sitzungsspezifische Schwerpunkte auf die Persona, sodass eine einzelne Review-Sitzung OAuth und Token-Speicherung priorisieren kann, ohne den gespeicherten Ausgabestil zu ändern:
Siehe auch
- Ausgabestile: Erstellen, verwalten und teilen Sie Ausgabestile für die CLI, einschließlich des Dateiformats und der Speicherorte
- Wie Claude sich Ihr Projekt merkt: Was in CLAUDE.md gehört, wo Sie es platzieren, und wie Sie effektive Projektanweisungen schreiben
- TypeScript SDK-Referenz: Der vollständige
Options-Typ, einschließlichsystemPrompt,settingSourcesundsettings - Python SDK-Referenz: Der vollständige
ClaudeAgentOptions-Typ, einschließlichsystem_promptundsetting_sources - Einstellungen: Die
settings.json-Referenz, einschließlich des Speicherorts von Ausgabestilen und anderen Konfigurationen