Wenn Sie mehrere Agenten benötigen, die parallel arbeiten und miteinander kommunizieren, siehe stattdessen Agent-Teams. Subagenten arbeiten innerhalb einer einzelnen Sitzung; Agent-Teams koordinieren über separate Sitzungen hinweg.
- Kontext bewahren, indem Sie Exploration und Implementierung aus Ihrer Hauptkonversation heraushalten
- Einschränkungen durchsetzen, indem Sie begrenzen, welche Werkzeuge ein Subagent verwenden kann
- Konfigurationen wiederverwenden über Projekte hinweg mit Subagenten auf Benutzerebene
- Verhalten spezialisieren mit fokussierten Systemprompts für spezifische Domänen
- Kosten kontrollieren, indem Sie Aufgaben an schnellere, günstigere Modelle wie Haiku weiterleiten
Integrierte Subagenten
Claude Code enthält integrierte Subagenten, die Claude automatisch bei Bedarf verwendet. Jeder erbt die Berechtigungen der übergeordneten Konversation mit zusätzlichen Werkzeugbeschränkungen.- Explore
- Plan
- General-purpose
- Other
Ein schneller, schreibgeschützter Agent, der für die Suche und Analyse von Codebases optimiert ist.
- Modell: Haiku (schnell, niedrige Latenz)
- Werkzeuge: Schreibgeschützte Werkzeuge (kein Zugriff auf Write- und Edit-Werkzeuge)
- Zweck: Dateiermittlung, Codesuche, Codebase-Exploration
Schnellstart: Erstellen Sie Ihren ersten Subagenten
Subagenten werden in Markdown-Dateien mit YAML-Frontmatter definiert. Sie können sie manuell erstellen oder den/agents-Befehl verwenden.
Diese Anleitung führt Sie durch die Erstellung eines Subagenten auf Benutzerebene mit dem /agents-Befehl. Der Subagent überprüft Code und schlägt Verbesserungen für die Codebase vor.
Wählen Sie einen Ort
Wählen Sie Create new agent, dann wählen Sie Personal. Dies speichert den Subagenten in
~/.claude/agents/, sodass er in allen Ihren Projekten verfügbar ist.Mit Claude generieren
Wählen Sie Generate with Claude. Wenn Sie dazu aufgefordert werden, beschreiben Sie den Subagenten:Claude generiert die Kennung, Beschreibung und den Systemprompt für Sie.
Wählen Sie Werkzeuge
Für einen schreibgeschützten Reviewer deselektieren Sie alles außer Read-only tools. Wenn Sie alle Werkzeuge ausgewählt lassen, erbt der Subagent alle Werkzeuge, die der Hauptkonversation zur Verfügung stehen.
Wählen Sie Modell
Wählen Sie, welches Modell der Subagent verwendet. Wählen Sie für diesen Beispielagenten Sonnet, das Fähigkeit und Geschwindigkeit für die Analyse von Code-Mustern ausgleicht.
Wählen Sie eine Farbe
Wählen Sie eine Hintergrundfarbe für den Subagenten. Dies hilft Ihnen, zu identifizieren, welcher Subagent in der Benutzeroberfläche ausgeführt wird.
Konfigurieren Sie Speicher
Wählen Sie User scope, um dem Subagenten ein persistentes Speicherverzeichnis unter
~/.claude/agent-memory/ zu geben. Der Subagent verwendet dies, um Erkenntnisse über Konversationen hinweg zu sammeln, wie z. B. Codebase-Muster und wiederkehrende Probleme. Wählen Sie None, wenn der Subagent keine Erkenntnisse speichern soll.Speichern und testen Sie
Überprüfen Sie die Konfigurationszusammenfassung. Drücken Sie Claude delegiert an Ihren neuen Subagenten, der die Codebase durchsucht und Verbesserungsvorschläge zurückgibt.
s oder Enter, um zu speichern, oder drücken Sie e, um zu speichern und die Datei in Ihrem Editor zu bearbeiten. Der Subagent ist sofort verfügbar. Testen Sie ihn:Konfigurieren Sie Subagenten
Verwenden Sie den /agents-Befehl
Der/agents-Befehl bietet eine interaktive Schnittstelle zur Verwaltung von Subagenten. Führen Sie /agents aus, um:
- Alle verfügbaren Subagenten anzuzeigen (integriert, Benutzer, Projekt und Plugin)
- Neue Subagenten mit geführtem Setup oder Claude-Generierung zu erstellen
- Vorhandene Subagenten-Konfiguration und Werkzeugzugriff zu bearbeiten
- Benutzerdefinierte Subagenten zu löschen
- Zu sehen, welche Subagenten aktiv sind, wenn Duplikate vorhanden sind
claude agents aus. Dies zeigt Agenten gruppiert nach Quelle und gibt an, welche durch höherrangige Definitionen überschrieben werden.
Wählen Sie den Subagenten-Umfang
Subagenten sind Markdown-Dateien mit YAML-Frontmatter. Speichern Sie sie an verschiedenen Orten je nach Umfang. Wenn mehrere Subagenten denselben Namen haben, gewinnt der höherrangige Ort.| Ort | Umfang | Priorität | Wie zu erstellen |
|---|---|---|---|
--agents CLI-Flag | Aktuelle Sitzung | 1 (höchste) | JSON beim Starten von Claude Code übergeben |
.claude/agents/ | Aktuelles Projekt | 2 | Interaktiv oder manuell |
~/.claude/agents/ | Alle Ihre Projekte | 3 | Interaktiv oder manuell |
Plugin-Verzeichnis agents/ | Wo Plugin aktiviert ist | 4 (niedrigste) | Installiert mit Plugins |
.claude/agents/) sind ideal für Subagenten, die spezifisch für eine Codebase sind. Checken Sie sie in die Versionskontrolle ein, damit Ihr Team sie gemeinsam verwenden und verbessern kann.
Benutzer-Subagenten (~/.claude/agents/) sind persönliche Subagenten, die in allen Ihren Projekten verfügbar sind.
CLI-definierte Subagenten werden als JSON beim Starten von Claude Code übergeben. Sie existieren nur für diese Sitzung und werden nicht auf der Festplatte gespeichert, was sie für schnelle Tests oder Automatisierungsskripte nützlich macht. Sie können mehrere Subagenten in einem einzigen --agents-Aufruf definieren:
--agents-Flag akzeptiert JSON mit denselben Frontmatter-Feldern wie dateibasierte Subagenten: description, prompt, tools, disallowedTools, model, permissionMode, mcpServers, hooks, maxTurns, skills, initialPrompt, memory, effort, background und isolation. Verwenden Sie prompt für den Systemprompt, äquivalent zum Markdown-Body in dateibasierten Subagenten.
Plugin-Subagenten stammen von Plugins, die Sie installiert haben. Sie erscheinen in /agents neben Ihren benutzerdefinierten Subagenten. Siehe die Plugin-Komponenten-Referenz für Details zum Erstellen von Plugin-Subagenten.
Aus Sicherheitsgründen unterstützen Plugin-Subagenten die Frontmatter-Felder
hooks, mcpServers oder permissionMode nicht. Diese Felder werden ignoriert, wenn Agenten aus einem Plugin geladen werden. Wenn Sie sie benötigen, kopieren Sie die Agent-Datei in .claude/agents/ oder ~/.claude/agents/. Sie können auch Regeln zu permissions.allow in settings.json oder settings.local.json hinzufügen, aber diese Regeln gelten für die gesamte Sitzung, nicht nur für den Plugin-Subagenten.Schreiben Sie Subagenten-Dateien
Subagenten-Dateien verwenden YAML-Frontmatter für die Konfiguration, gefolgt vom Systemprompt in Markdown:Subagenten werden beim Sitzungsstart geladen. Wenn Sie einen Subagenten durch manuelles Hinzufügen einer Datei erstellen, starten Sie Ihre Sitzung neu oder verwenden Sie
/agents, um ihn sofort zu laden.Unterstützte Frontmatter-Felder
Die folgenden Felder können im YAML-Frontmatter verwendet werden. Nurname und description sind erforderlich.
| Feld | Erforderlich | Beschreibung |
|---|---|---|
name | Ja | Eindeutige Kennung mit Kleinbuchstaben und Bindestrichen |
description | Ja | Wann Claude an diesen Subagenten delegieren sollte |
tools | Nein | Werkzeuge, die der Subagent verwenden kann. Erbt alle Werkzeuge, wenn weggelassen |
disallowedTools | Nein | Werkzeuge zum Verweigern, entfernt aus geerbter oder angegebener Liste |
model | Nein | Modell zu verwenden: sonnet, opus, haiku, eine vollständige Modell-ID (z. B. claude-opus-4-6) oder inherit. Standard ist inherit |
permissionMode | Nein | Berechtigungsmodus: default, acceptEdits, dontAsk, bypassPermissions oder plan |
maxTurns | Nein | Maximale Anzahl von Agenten-Turns, bevor der Subagent stoppt |
skills | Nein | Skills zum Laden in den Kontext des Subagenten beim Start. Der vollständige Skill-Inhalt wird eingespritzt, nicht nur zur Invokation verfügbar gemacht. Subagenten erben keine Skills von der übergeordneten Konversation |
mcpServers | Nein | MCP-Server verfügbar für diesen Subagenten. Jeder Eintrag ist entweder ein Servername, der auf einen bereits konfigurierten Server verweist (z. B. "slack") oder eine Inline-Definition mit dem Servernamen als Schlüssel und einer vollständigen MCP-Server-Konfiguration als Wert |
hooks | Nein | Lifecycle-Hooks mit Umfang auf diesen Subagenten |
memory | Nein | Persistenter Speicherumfang: user, project oder local. Ermöglicht sitzungsübergreifendes Lernen |
background | Nein | Auf true setzen, um diesen Subagenten immer als Hintergrundaufgabe auszuführen. Standard: false |
effort | Nein | Aufwandsstufe, wenn dieser Subagent aktiv ist. Überschreibt die Aufwandsstufe der Sitzung. Standard: erbt von Sitzung. Optionen: low, medium, high, max (nur Opus 4.6) |
isolation | Nein | Auf worktree setzen, um den Subagenten in einem temporären Git-Worktree auszuführen, was ihm eine isolierte Kopie des Repositorys gibt. Der Worktree wird automatisch bereinigt, wenn der Subagent keine Änderungen vornimmt |
initialPrompt | Nein | Auto-eingereicht als der erste Benutzer-Turn, wenn dieser Agent als Hauptsitzungs-Agent läuft (über --agent oder die agent-Einstellung). Befehle und Skills werden verarbeitet. Vorangestellt zu jedem vom Benutzer bereitgestellten Prompt |
Wählen Sie ein Modell
Dasmodel-Feld steuert, welches KI-Modell der Subagent verwendet:
- Modell-Alias: Verwenden Sie einen der verfügbaren Aliase:
sonnet,opusoderhaiku - Vollständige Modell-ID: Verwenden Sie eine vollständige Modell-ID wie
claude-opus-4-6oderclaude-sonnet-4-6. Akzeptiert dieselben Werte wie das--model-Flag - inherit: Verwenden Sie dasselbe Modell wie die Hauptkonversation
- Weggelassen: Wenn nicht angegeben, wird standardmäßig
inheritverwendet (verwendet dasselbe Modell wie die Hauptkonversation)
model-Parameter für diese spezifische Invokation übergeben. Claude Code löst das Modell des Subagenten in dieser Reihenfolge auf:
- Die Umgebungsvariable
CLAUDE_CODE_SUBAGENT_MODEL, falls gesetzt - Der
model-Parameter pro Invokation - Das
model-Frontmatter der Subagenten-Definition - Das Modell der Hauptkonversation
Kontrollieren Sie Subagenten-Fähigkeiten
Sie können kontrollieren, was Subagenten durch Werkzeugzugriff, Berechtigungsmodi und bedingte Regeln tun können.Verfügbare Werkzeuge
Subagenten können alle internen Werkzeuge von Claude Code verwenden. Standardmäßig erben Subagenten alle Werkzeuge von der Hauptkonversation, einschließlich MCP-Werkzeuge. Um Werkzeuge einzuschränken, verwenden Sie dastools-Feld (Allowlist) oder das disallowedTools-Feld (Denylist). Dieses Beispiel verwendet tools, um ausschließlich Read, Grep, Glob und Bash zuzulassen. Der Subagent kann keine Dateien bearbeiten, keine Dateien schreiben oder MCP-Werkzeuge verwenden:
disallowedTools, um alle Werkzeuge von der Hauptkonversation zu erben, außer Write und Edit. Der Subagent behält Bash, MCP-Werkzeuge und alles andere:
disallowedTools zuerst angewendet, dann wird tools gegen den verbleibenden Pool aufgelöst. Ein Werkzeug, das in beiden aufgelistet ist, wird entfernt.
Beschränken Sie, welche Subagenten spawned werden können
Wenn ein Agent als Hauptthread mitclaude --agent läuft, kann er Subagenten mit dem Agent-Werkzeug spawnen. Um zu beschränken, welche Subagenten-Typen er spawnen kann, verwenden Sie die Agent(agent_type)-Syntax im tools-Feld.
In Version 2.1.63 wurde das Task-Werkzeug in Agent umbenannt. Vorhandene
Task(...)-Verweise in Einstellungen und Agent-Definitionen funktionieren weiterhin als Aliase.worker- und researcher-Subagenten können gespawnt werden. Wenn der Agent versucht, einen anderen Typ zu spawnen, schlägt die Anfrage fehl und der Agent sieht nur die zulässigen Typen in seinem Prompt. Um bestimmte Agenten zu blockieren und alle anderen zuzulassen, verwenden Sie stattdessen permissions.deny.
Um das Spawnen eines beliebigen Subagenten ohne Einschränkungen zu ermöglichen, verwenden Sie Agent ohne Klammern:
Agent vollständig aus der tools-Liste weggelassen wird, kann der Agent keine Subagenten spawnen. Diese Einschränkung gilt nur für Agenten, die als Hauptthread mit claude --agent laufen. Subagenten können keine anderen Subagenten spawnen, daher hat Agent(agent_type) keine Auswirkung in Subagenten-Definitionen.
Umfang von MCP-Servern auf einen Subagenten
Verwenden Sie dasmcpServers-Feld, um einem Subagenten Zugriff auf MCP-Server zu geben, die in der Hauptkonversation nicht verfügbar sind. Inline-Server, die hier definiert sind, werden verbunden, wenn der Subagent startet, und getrennt, wenn er endet. String-Verweise teilen die Verbindung der übergeordneten Sitzung.
Jeder Eintrag in der Liste ist entweder eine Inline-Server-Definition oder ein String, der auf einen bereits konfigurierten MCP-Server in Ihrer Sitzung verweist:
.mcp.json-Server-Einträge (stdio, http, sse, ws), mit dem Servernamen als Schlüssel.
Um einen MCP-Server vollständig aus der Hauptkonversation herauszuhalten und zu vermeiden, dass seine Werkzeugbeschreibungen dort Kontext verbrauchen, definieren Sie ihn inline hier statt in .mcp.json. Der Subagent erhält die Werkzeuge; die übergeordnete Konversation nicht.
Berechtigungsmodi
DaspermissionMode-Feld steuert, wie der Subagent Berechtigungsaufforderungen bearbeitet. Subagenten erben den Berechtigungskontext von der Hauptkonversation und können den Modus überschreiben, außer wenn der übergeordnete Modus Vorrang hat, wie unten beschrieben.
| Modus | Verhalten |
|---|---|
default | Standardberechtigungsprüfung mit Aufforderungen |
acceptEdits | Automatische Akzeptanz von Dateibearbeitungen |
dontAsk | Automatische Ablehnung von Berechtigungsaufforderungen (explizit zulässige Werkzeuge funktionieren weiterhin) |
bypassPermissions | Alle Berechtigungsprüfungen überspringen |
plan | Plan-Modus (schreibgeschützte Exploration) |
bypassPermissions verwendet, hat dies Vorrang und kann nicht überschrieben werden. Wenn das übergeordnete Element den Auto-Modus verwendet, erbt der Subagent den Auto-Modus und jedes permissionMode in seinem Frontmatter wird ignoriert: der Klassifizierer bewertet die Werkzeugaufrufe des Subagenten mit denselben Block- und Zulassungsregeln wie die übergeordnete Sitzung.
Laden Sie Skills in Subagenten vor
Verwenden Sie dasskills-Feld, um Skill-Inhalte beim Start in den Kontext eines Subagenten einzuspeisen. Dies gibt dem Subagenten Domänenwissen, ohne dass er Skills während der Ausführung entdecken und laden muss.
Dies ist das Gegenteil von Ausführen eines Skills in einem Subagenten. Mit
skills in einem Subagenten kontrolliert der Subagent den Systemprompt und lädt Skill-Inhalte. Mit context: fork in einem Skill wird der Skill-Inhalt in den von Ihnen angegebenen Agent eingespritzt. Beide verwenden dasselbe zugrunde liegende System.Aktivieren Sie persistenten Speicher
Dasmemory-Feld gibt dem Subagenten ein persistentes Verzeichnis, das über Konversationen hinweg bestehen bleibt. Der Subagent verwendet dieses Verzeichnis, um im Laufe der Zeit Wissen aufzubauen, wie z. B. Codebase-Muster, Debugging-Erkenntnisse und architektonische Entscheidungen.
| Umfang | Ort | Verwenden Sie, wenn |
|---|---|---|
user | ~/.claude/agent-memory/<name-of-agent>/ | der Subagent Erkenntnisse über alle Projekte hinweg merken sollte |
project | .claude/agent-memory/<name-of-agent>/ | das Wissen des Subagenten projektspezifisch ist und über Versionskontrolle teilbar ist |
local | .claude/agent-memory-local/<name-of-agent>/ | das Wissen des Subagenten projektspezifisch ist, aber nicht in die Versionskontrolle eingecheckt werden sollte |
- Der Systemprompt des Subagenten enthält Anweisungen zum Lesen und Schreiben in das Speicherverzeichnis.
- Der Systemprompt des Subagenten enthält auch die ersten 200 Zeilen von
MEMORY.mdim Speicherverzeichnis, mit Anweisungen zur Verwaltung vonMEMORY.md, wenn es 200 Zeilen überschreitet. - Read-, Write- und Edit-Werkzeuge werden automatisch aktiviert, damit der Subagent seine Speicherdateien verwalten kann.
Tipps zum persistenten Speicher
-
projectist der empfohlene Standard-Umfang. Es macht Subagenten-Wissen über Versionskontrolle teilbar. Verwenden Sieuser, wenn das Wissen des Subagenten über Projekte hinweg breit anwendbar ist, oderlocal, wenn das Wissen nicht in die Versionskontrolle eingecheckt werden sollte. - Bitten Sie den Subagenten, seinen Speicher vor dem Start zu konsultieren: “Review this PR, and check your memory for patterns you’ve seen before.”
- Bitten Sie den Subagenten, seinen Speicher nach Abschluss einer Aufgabe zu aktualisieren: “Now that you’re done, save what you learned to your memory.” Im Laufe der Zeit baut dies eine Wissensdatenbank auf, die den Subagenten effektiver macht.
-
Fügen Sie Speicheranweisungen direkt in die Markdown-Datei des Subagenten ein, damit er proaktiv seine eigene Wissensdatenbank verwaltet:
Bedingte Regeln mit Hooks
Für dynamischere Kontrolle über die Werkzeugnutzung verwenden SiePreToolUse-Hooks, um Operationen vor ihrer Ausführung zu validieren. Dies ist nützlich, wenn Sie einige Operationen eines Werkzeugs zulassen möchten, während Sie andere blockieren.
Dieses Beispiel erstellt einen Subagenten, der nur schreibgeschützte Datenbankabfragen zulässt. Der PreToolUse-Hook führt das in command angegebene Skript vor jeder Bash-Befehlsausführung aus:
Deaktivieren Sie spezifische Subagenten
Sie können verhindern, dass Claude bestimmte Subagenten verwendet, indem Sie sie zumdeny-Array in Ihren Einstellungen hinzufügen. Verwenden Sie das Format Agent(subagent-name), wobei subagent-name dem name-Feld des Subagenten entspricht.
--disallowedTools-CLI-Flag verwenden:
Definieren Sie Hooks für Subagenten
Subagenten können Hooks definieren, die während des Lebenszyklus des Subagenten ausgeführt werden. Es gibt zwei Möglichkeiten, Hooks zu konfigurieren:- Im Frontmatter des Subagenten: Definieren Sie Hooks, die nur ausgeführt werden, während dieser Subagent aktiv ist
- In
settings.json: Definieren Sie Hooks, die in der Hauptsitzung ausgeführt werden, wenn Subagenten starten oder stoppen
Hooks im Subagenten-Frontmatter
Definieren Sie Hooks direkt in der Markdown-Datei des Subagenten. Diese Hooks werden nur ausgeführt, während dieser spezifische Subagent aktiv ist, und werden bereinigt, wenn er endet. Alle Hook-Ereignisse werden unterstützt. Die häufigsten Ereignisse für Subagenten sind:| Ereignis | Matcher-Eingabe | Wann es ausgelöst wird |
|---|---|---|
PreToolUse | Werkzeugname | Bevor der Subagent ein Werkzeug verwendet |
PostToolUse | Werkzeugname | Nachdem der Subagent ein Werkzeug verwendet hat |
Stop | (keine) | Wenn der Subagent endet (wird zur Laufzeit in SubagentStop konvertiert) |
PreToolUse-Hook und führt einen Linter nach Dateibearbeitungen mit PostToolUse aus:
Stop-Hooks im Frontmatter werden automatisch in SubagentStop-Ereignisse konvertiert.
Hooks auf Projektebene für Subagenten-Ereignisse
Konfigurieren Sie Hooks insettings.json, die auf Subagenten-Lebenszyklus-Ereignisse in der Hauptsitzung reagieren.
| Ereignis | Matcher-Eingabe | Wann es ausgelöst wird |
|---|---|---|
SubagentStart | Agent-Typname | Wenn ein Subagent mit der Ausführung beginnt |
SubagentStop | Agent-Typname | Wenn ein Subagent abgeschlossen ist |
db-agent-Subagent startet, und ein Cleanup-Skript, wenn ein beliebiger Subagent stoppt:
Arbeiten Sie mit Subagenten
Verstehen Sie automatische Delegation
Claude delegiert automatisch Aufgaben basierend auf der Aufgabenbeschreibung in Ihrer Anfrage, demdescription-Feld in Subagenten-Konfigurationen und dem aktuellen Kontext. Um proaktive Delegation zu fördern, fügen Sie Phrasen wie “use proactively” in das description-Feld Ihres Subagenten ein.
Rufen Sie Subagenten explizit auf
Wenn automatische Delegation nicht ausreicht, können Sie einen Subagenten selbst anfordern. Drei Muster eskalieren von einem einmaligen Vorschlag zu einem sitzungsweiten Standard:- Natürliche Sprache: Nennen Sie den Subagenten in Ihrem Prompt; Claude entscheidet, ob delegiert werden soll
- @-Erwähnung: Garantiert, dass der Subagent für eine Aufgabe ausgeführt wird
- Sitzungsweit: Die gesamte Sitzung verwendet den Systemprompt, die Werkzeugbeschränkungen und das Modell dieses Subagenten über das
--agent-Flag oder dieagent-Einstellung
@ ein und wählen Sie den Subagenten aus der Typeahead-Liste, genauso wie Sie Dateien @-erwähnen. Dies stellt sicher, dass dieser spezifische Subagent ausgeführt wird, anstatt die Wahl Claude zu überlassen:
<plugin-name>:<agent-name>. Sie können die Erwähnung auch manuell eingeben, ohne den Picker zu verwenden: @agent-<name> für lokale Subagenten oder @agent-<plugin-name>:<agent-name> für Plugin-Subagenten.
Führen Sie die gesamte Sitzung als Subagent aus. Übergeben Sie --agent <name>, um eine Sitzung zu starten, in der der Hauptthread selbst den Systemprompt, die Werkzeugbeschränkungen und das Modell dieses Subagenten annimmt:
--system-prompt es tut. CLAUDE.md-Dateien und Projekt-Memory werden weiterhin durch den normalen Nachrichtenfluss geladen. Der Agent-Name erscheint als @<name> in der Startup-Kopfzeile, damit Sie bestätigen können, dass er aktiv ist.
Dies funktioniert mit integrierten und benutzerdefinierten Subagenten, und die Wahl bleibt bestehen, wenn Sie die Sitzung fortsetzen.
Für einen von einem Plugin bereitgestellten Subagenten übergeben Sie den scoped Namen: claude --agent <plugin-name>:<agent-name>.
Um es zum Standard für jede Sitzung in einem Projekt zu machen, setzen Sie agent in .claude/settings.json:
Führen Sie Subagenten im Vordergrund oder Hintergrund aus
Subagenten können im Vordergrund (blockierend) oder Hintergrund (gleichzeitig) ausgeführt werden:- Vordergrund-Subagenten blockieren die Hauptkonversation bis zur Fertigstellung. Berechtigungsaufforderungen und Klarstellungsfragen (wie
AskUserQuestion) werden an Sie weitergeleitet. - Hintergrund-Subagenten laufen gleichzeitig, während Sie weiterarbeiten. Vor dem Start fordert Claude Code alle Werkzeugberechtigungen an, die der Subagent benötigt, um sicherzustellen, dass er die erforderlichen Genehmigungen hat. Nach dem Start erbt der Subagent diese Berechtigungen und lehnt automatisch alles ab, was nicht vorab genehmigt wurde. Wenn ein Hintergrund-Subagent Klarstellungsfragen stellen muss, schlägt dieser Werkzeugaufruf fehl, aber der Subagent setzt fort.
- Claude bitten, “run this in the background” auszuführen
- Ctrl+B drücken, um eine laufende Aufgabe in den Hintergrund zu verschieben
CLAUDE_CODE_DISABLE_BACKGROUND_TASKS auf 1. Siehe Umgebungsvariablen.
Häufige Muster
Isolieren Sie hochvolumige Operationen
Eine der effektivsten Verwendungen für Subagenten ist die Isolierung von Operationen, die große Mengen an Ausgaben erzeugen. Das Ausführen von Tests, das Abrufen von Dokumentation oder die Verarbeitung von Protokolldateien kann erheblichen Kontext verbrauchen. Durch die Delegierung an einen Subagenten bleibt die ausführliche Ausgabe im Kontext des Subagenten, während nur die relevante Zusammenfassung zu Ihrer Hauptkonversation zurückkehrt.Führen Sie parallele Recherche durch
Für unabhängige Untersuchungen spawnen Sie mehrere Subagenten, um gleichzeitig zu arbeiten:Verketten Sie Subagenten
Für mehrstufige Workflows bitten Sie Claude, Subagenten nacheinander zu verwenden. Jeder Subagent vervollständigt seine Aufgabe und gibt Ergebnisse an Claude zurück, das dann relevanten Kontext an den nächsten Subagenten übergibt.Wählen Sie zwischen Subagenten und Hauptkonversation
Verwenden Sie die Hauptkonversation, wenn:- Die Aufgabe häufiges Hin und Her oder iterative Verfeinerung benötigt
- Mehrere Phasen teilen erheblichen Kontext (Planung → Implementierung → Testen)
- Sie eine schnelle, gezielte Änderung vornehmen
- Latenz ist wichtig. Subagenten starten von vorne und benötigen möglicherweise Zeit, um Kontext zu sammeln
- Die Aufgabe ausführliche Ausgaben erzeugt, die Sie nicht in Ihrem Hauptkontext benötigen
- Sie spezifische Werkzeugbeschränkungen oder Berechtigungen durchsetzen möchten
- Die Arbeit in sich geschlossen ist und eine Zusammenfassung zurückgeben kann
/btw. Es sieht Ihren vollständigen Kontext, hat aber keinen Werkzeugzugriff, und die Antwort wird verworfen, anstatt zur Historie hinzugefügt zu werden.
Subagenten können keine anderen Subagenten spawnen. Wenn Ihr Workflow verschachtelte Delegation erfordert, verwenden Sie Skills oder verketten Sie Subagenten von der Hauptkonversation.
Verwalten Sie den Subagenten-Kontext
Setzen Sie Subagenten fort
Jede Subagenten-Invokation erstellt eine neue Instanz mit frischem Kontext. Um die Arbeit eines vorhandenen Subagenten fortzusetzen, anstatt von vorne zu beginnen, bitten Sie Claude, ihn fortzusetzen. Fortgesetzte Subagenten behalten ihre vollständige Konversationshistorie, einschließlich aller vorherigen Werkzeugaufrufe, Ergebnisse und Überlegungen. Der Subagent setzt genau dort an, wo er gestoppt hat, anstatt von vorne zu beginnen. Wenn ein Subagent abgeschlossen ist, erhält Claude seine Agent-ID. Claude verwendet dasSendMessage-Werkzeug mit der Agent-ID des Agenten als to-Feld, um ihn fortzusetzen. Um einen Subagenten fortzusetzen, bitten Sie Claude, die vorherige Arbeit fortzusetzen:
SendMessage erhält, wird er automatisch im Hintergrund fortgesetzt, ohne dass eine neue Agent-Invokation erforderlich ist.
Sie können Claude auch nach der Agent-ID fragen, wenn Sie sie explizit referenzieren möchten, oder IDs in den Transkriptdateien unter ~/.claude/projects/{project}/{sessionId}/subagents/ finden. Jedes Transkript wird als agent-{agentId}.jsonl gespeichert.
Subagenten-Transkripte bleiben unabhängig von der Hauptkonversation bestehen:
- Hauptkonversations-Komprimierung: Wenn die Hauptkonversation komprimiert wird, sind Subagenten-Transkripte nicht betroffen. Sie werden in separaten Dateien gespeichert.
- Sitzungs-Persistenz: Subagenten-Transkripte bleiben innerhalb ihrer Sitzung bestehen. Sie können einen Subagenten fortsetzen, nachdem Sie Claude Code neu gestartet haben, indem Sie dieselbe Sitzung fortsetzen.
- Automatische Bereinigung: Transkripte werden basierend auf der
cleanupPeriodDays-Einstellung bereinigt (Standard: 30 Tage).
Auto-Komprimierung
Subagenten unterstützen automatische Komprimierung mit derselben Logik wie die Hauptkonversation. Standardmäßig wird die Auto-Komprimierung bei ungefähr 95 % Kapazität ausgelöst. Um die Komprimierung früher auszulösen, setzen SieCLAUDE_AUTOCOMPACT_PCT_OVERRIDE auf einen niedrigeren Prozentsatz (z. B. 50). Siehe Umgebungsvariablen für Details.
Komprimierungsereignisse werden in Subagenten-Transkriptdateien protokolliert:
preTokens-Wert zeigt, wie viele Token vor der Komprimierung verwendet wurden.
Beispiel-Subagenten
Diese Beispiele demonstrieren effektive Muster für die Erstellung von Subagenten. Verwenden Sie sie als Ausgangspunkte oder generieren Sie eine angepasste Version mit Claude.Code-Reviewer
Ein schreibgeschützter Subagent, der Code überprüft, ohne ihn zu ändern. Dieses Beispiel zeigt, wie man einen fokussierten Subagenten mit begrenztem Werkzeugzugriff (kein Edit oder Write) und einem detaillierten Prompt entwirft, der genau angibt, worauf zu achten ist und wie die Ausgabe formatiert wird.Debugger
Ein Subagent, der sowohl Probleme analysieren als auch beheben kann. Im Gegensatz zum Code-Reviewer enthält dieser Edit, da das Beheben von Bugs die Änderung von Code erfordert. Der Prompt bietet einen klaren Workflow von der Diagnose zur Verifizierung.Data Scientist
Ein domänenspezifischer Subagent für Datenanalyse-Arbeiten. Dieses Beispiel zeigt, wie man Subagenten für spezialisierte Workflows außerhalb typischer Coding-Aufgaben erstellt. Es setzt explizitmodel: sonnet für fähigere Analysen.
Datenbankabfrage-Validator
Ein Subagent, der Bash-Zugriff zulässt, aber Befehle validiert, um nur schreibgeschützte SQL-Abfragen zu ermöglichen. Dieses Beispiel zeigt, wie manPreToolUse-Hooks für bedingte Validierung verwendet, wenn Sie feinere Kontrolle benötigen, als das tools-Feld bietet.
command-Feld in Ihrer Hook-Konfiguration entsprechen:
tool_input.command. Exit-Code 2 blockiert die Operation und leitet die Fehlermeldung an Claude weiter. Siehe Hooks für Details zu Exit-Codes und Hook-Eingabe für das vollständige Eingabeschema.
Nächste Schritte
Jetzt, da Sie Subagenten verstehen, erkunden Sie diese verwandten Funktionen:- Verteilen Sie Subagenten mit Plugins, um Subagenten über Teams oder Projekte hinweg zu teilen
- Führen Sie Claude Code programmgesteuert aus mit dem Agent SDK für CI/CD und Automatisierung
- Verwenden Sie MCP-Server, um Subagenten Zugriff auf externe Werkzeuge und Daten zu geben