Dreams
Lass Claude über vergangene Sitzungen reflektieren, um das Gedächtnis eines Agenten zu kuratieren und neue Erkenntnisse zutage zu fördern.
Agenten schreiben während ihrer Arbeit in ihre „memory stores“ (Gedächtnisspeicher), aber diese Schreibvorgänge sind lokal und inkrementell: Über viele Sitzungen hinweg sammelt ein Memory Store Duplikate, Widersprüche und veraltete Einträge an.
„Dreams“ (Träume) lassen Claude das aufräumen. Ein Dream liest einen bestehenden Memory Store zusammen mit Transkripten vergangener Sitzungen und erzeugt dann einen neuen, reorganisierten Memory Store: Duplikate werden zusammengeführt, veraltete oder widersprochene Einträge durch den neuesten Wert ersetzt und neue Erkenntnisse zutage gefördert.
Der Eingabe-Store wird niemals verändert, sodass du die Ausgabe prüfen und verwerfen kannst, wenn dir das Ergebnis nicht gefällt.
So funktioniert es
Ein Dream ist ein asynchroner Job, der Folgendes entgegennimmt:
- einen bereits bestehenden Memory Store: den Store, den Claude überprüft, dedupliziert und reorganisiert, und
- 1 bis 100 Sitzungen: vergangene Transkripte, die Claude nach Mustern und Erkenntnissen durchsucht, um sie in die Ausgabe einfließen zu lassen.
Der Dream erzeugt einen weiteren Ausgabe-Memory-Store, getrennt von der Eingabe. Die ID des Ausgabe-Stores erscheint im Array outputs des Dreams kurz nachdem der Dream in den Status running übergeht, sobald der Workflow den Eingabe-Store geklont hat; ein Dream im Status running kann kurzzeitig ein leeres Array outputs melden.
Einen Dream erstellen
dream = client.beta.dreams.create(
inputs=[
{"type": "memory_store", "memory_store_id": store_id},
{"type": "sessions", "session_ids": [session_a, session_b]},
],
model="claude-opus-5-5",
instructions="Focus on coding-style preferences; ignore one-off debugging notes.",
)
print(dream.id) # drm_01...Die Eingaben für Dreaming umfassen den bereits bestehenden Memory Store und ein Array von Sitzungen. Das ausgewählte Modell führt die Dreaming-Pipeline aus. Während der Research Preview werden claude-opus-5-5, claude-fable-5-1, claude-opus-5, claude-fable-5, claude-opus-4-8, claude-opus-4-7, claude-sonnet-5-5, claude-sonnet-5 und claude-sonnet-4-6 unterstützt. Optional kannst du instructions übergeben, um den Dreaming-Prozess zu steuern. Siehe Mit Anweisungen steuern.
Die Antwort ist die vollständige dream-Ressource mit status: "pending":
{
"type": "dream",
"id": "drm_01AbCDefGhIjKlMnOpQrStUv",
"status": "pending",
"inputs": [
{ "type": "memory_store", "memory_store_id": "memstore_01Hx..." },
{ "type": "sessions", "session_ids": ["sesn_01...", "sesn_02..."] }
],
"outputs": [],
"model": { "id": "claude-opus-5-5" },
"instructions": "Focus on coding-style preferences; ignore one-off debugging notes.",
"session_id": null,
"created_at": "2026-04-29T17:04:10Z",
"ended_at": null,
"archived_at": null,
"usage": {
"input_tokens": 0,
"output_tokens": 0,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0
},
"error": null
}Mit Anweisungen steuern
Das optionale Feld instructions steuert, was die Dreaming-Pipeline synthetisiert. Es wird in der gesamten Pipeline angewendet: was genau gelesen werden soll, was zusammengeführt oder verworfen werden soll und wie der Ausgabe-Store strukturiert werden soll.
Verwende instructions für übergeordnete Syntheseanleitungen wie Schwerpunktbereiche („konzentriere dich auf Präferenzen zum Coding-Stil“), Inhalte, die unverändert erhalten bleiben sollen, oder Ausgabekonventionen, die im gesamten Store angewendet werden sollen. Die Pipeline ist ein Syntheseschritt über die Eingaben, kein Editor, der auf den Text des Stores angewendet wird. Daher bewirken imperative Anweisungen, die auf bestimmte Zeilen abzielen („ändere Satz X zu Y“, „korrigiere die Anzahl in Abschnitt Z“), in der Regel keine Änderung. Um gezielte Änderungen an einzelnen Erinnerungen vorzunehmen, verwende die Memory Stores API direkt auf dem Ausgabe-Store.
Fortschritt verfolgen
Dreams laufen asynchron und dauern typischerweise Minuten bis einige Stunden, abhängig von der Anzahl der Eingabetranskripte. Frage den Dream per ID ab, um den Status zu prüfen:
while dream.status in ("pending", "running"):
time.sleep(10)
dream = client.beta.dreams.retrieve(dream.id)
print(f"status={dream.status} input_tokens={dream.usage.input_tokens}")Lebenszyklus
status | Bedeutung |
|---|---|
pending | Dream erfolgreich erstellt und in die Warteschlange eingereiht. |
running | Die Pipeline verarbeitet. usage wird mit fortschreitender Arbeit aktualisiert. |
completed | Erfolgreich abgeschlossen. Der Wert outputs ist der neue Memory Store. |
failed | Der Dreaming-Lauf endete mit einem Fehler. Der Ausgabe-Memory-Store bleibt unverändert mit dem, was vor dem Fehler geschrieben wurde. |
canceled | Der Dreaming-Lauf wurde abgebrochen. Der Ausgabe-Memory-Store bleibt unverändert. |
Den Pipeline-Lauf beobachten
Sobald ein Dream im Status running ist, verweist sein Feld session_id auf die zugrunde liegende Sitzung, die die Pipeline ausführt. Du kannst die Events dieser Sitzung streamen, um in Echtzeit zu beobachten, was der Dream liest und schreibt. Die Sitzung wird archiviert (nicht gelöscht), wenn der Dream einen Endzustand erreicht, sodass das Transkript danach weiterhin verfügbar bleibt.
Die Ausgabe verwenden
Wenn status den Wert completed erreicht, verweist der memory_store-Eintrag in outputs auf einen vollständig befüllten Store. Es ist ein gewöhnlicher Memory Store in deinem Workspace. Überprüfe ihn mit der Memory Stores API oder in der Console und dann entweder:
- Nutze ihn: Hänge ihn an zukünftige Sitzungen als
memory_store-Ressource anstelle des (oder zusätzlich zum) Eingabe-Memory-Stores an, oder - Verwirf ihn: Lösche den Memory Store oder archiviere den Memory Store.
# Nach Ende des Dreams enthält die Ausgabe den neu aufgebauten Memory-Store
output_store_id = next(
output.memory_store_id for output in dream.outputs if output.type == "memory_store"
)
session = client.beta.sessions.create(
agent=agent_id,
environment_id=environment_id,
resources=[
{"type": "memory_store", "memory_store_id": output_store_id},
],
)Der Dream selbst löscht oder verändert seine Eingaben niemals. Bei failed oder canceled bleibt der Ausgabe-Store mit Teilinhalten bestehen, sodass du prüfen kannst, was vor dem Stopp erzeugt wurde; räume ihn über die Memory Stores API auf, wenn du ihn nicht benötigst.
Einen Dream abbrechen
Abbrechen versetzt einen Dream im Status pending oder running sofort in canceled. Das Abbrechen eines bereits canceled Dreams ist ein idempotenter No-op; das Abbrechen eines Dreams im Status completed oder failed gibt 400 zurück.
client.beta.dreams.cancel(dream.id)Einen Dream archivieren
Archivieren setzt archived_at bei einem Dream, der einen Endzustand erreicht hat (completed, failed oder canceled); status bleibt unverändert. Archivierte Dreams sind von Standard-Listenantworten ausgeschlossen, bleiben aber per ID lesbar. Das Archivieren eines bereits archivierten Dreams ist ein idempotenter No-op. Das Archivieren eines Dreams im Status pending oder running gibt 400 zurück; brich ihn zuerst ab. Es gibt kein Aufheben der Archivierung.
client.beta.dreams.archive(dream.id)Das Archivieren eines Dreams berührt seinen Ausgabe-Memory-Store nicht; verwalte diesen separat über die Memory Stores API.
Dreams auflisten
Gibt alle nicht archivierten Dreams im Workspace zurück, die neuesten zuerst. Verwende limit (Standard 20, maximal 100) und den Cursor page zum Paginieren. Setze include_archived auf true, um archivierte Dreams einzuschließen.
for listed_dream in client.beta.dreams.list(limit=20):
print(listed_dream.id, listed_dream.status)Fehler
Es folgt eine nicht abschließende Liste möglicher Dreaming-Fehler.
error.type | Wann |
|---|---|
timeout | Die Pipeline hat ihr Laufzeitbudget überschritten. |
internal_error | Nicht klassifizierter Pipeline-Fehler. |
memory_store_org_limit_exceeded | Deine Organisation hat ihre Obergrenze für Memory Stores erreicht, während die Pipeline Arbeitsspeicher bereitstellte. |
input_memory_store_too_large | Der Eingabe-Memory-Store überschreitet das Größenlimit der Pipeline. |
input_memory_store_unavailable | Der Eingabe-Memory-Store wurde archiviert oder gelöscht, nachdem der Dream erstellt wurde. |
input_session_unavailable | Eine Eingabesitzung wurde gelöscht, nachdem der Dream erstellt wurde. |
Abrechnung
Dreams werden zu den Standard-API-Token-Preisen für das von dir ausgewählte Modell abgerechnet; usage auf der Ressource meldet die genauen Summen. Die Kosten skalieren ungefähr linear mit der Anzahl und Länge der Eingabesitzungen. Beginne mit einer kleinen Gruppe von Sitzungen und skaliere hoch, sobald du mit der Kurationsqualität zufrieden bist.
Limits
| Limit | Wert |
|---|---|
| Sitzungen pro Dream | 100 |
Länge von instructions | 4.096 Zeichen |
| Unterstützte Modelle | claude-opus-5-5, claude-fable-5-1, claude-opus-5, claude-fable-5, claude-opus-4-8, claude-opus-4-7, claude-sonnet-5-5, claude-sonnet-5, claude-sonnet-4-6 |
Für die Erstellung von Dreams gelten Standard-Ratenlimits, solange sich diese Funktion in der Research Preview befindet. Kontaktiere den Support, wenn du höhere Limits benötigst.
Was this page helpful?