Los agentes escriben en sus almacenes de memoria mientras trabajan, pero estas escrituras son locales e incrementales: a lo largo de muchas sesiones, un almacén de memoria acumula duplicados, contradicciones y entradas obsoletas.
Los dreams (sueños) permiten que Claude limpie eso. Un dream lee un almacén de memoria existente junto con transcripciones de sesiones pasadas, y luego produce un nuevo almacén de memoria reorganizado: duplicados fusionados, entradas obsoletas o contradictorias reemplazadas por el valor más reciente, y nuevos insights revelados.
El almacén de entrada nunca se modifica, así que puedes revisar la salida y descartarla si no te gusta el resultado.
Un dream es un trabajo asíncrono que recibe:
El dream produce otro almacén de memoria de salida, separado del de entrada. El ID del almacén de salida aparece en outputs[] del dream poco después de que el dream comienza a estar running, una vez que el flujo de trabajo ha clonado el almacén de entrada; un dream en estado running puede reportar brevemente un outputs[] vacío.
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-4-8",
instructions="Focus on coding-style preferences; ignore one-off debugging notes.",
)
print(dream.id) # drm_01...Las entradas de dreaming incluyen el almacén de memoria preexistente y un arreglo de sesiones. El modelo seleccionado ejecuta el pipeline de dreaming; durante la vista previa de investigación se admiten claude-opus-5, claude-fable-5, claude-opus-4-8, claude-opus-4-7, claude-sonnet-5 y claude-sonnet-4-6. Opcionalmente puedes pasar instructions para guiar el proceso de dreaming; consulta Guiar con instrucciones.
La respuesta es el recurso dream completo con 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-4-8" },
"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
}El campo opcional instructions guía lo que el pipeline de dreaming sintetiza. Se aplica a lo largo de todo el pipeline: qué leer con atención, qué fusionar o descartar, y cómo estructurar el almacén de salida.
Usa instructions para orientación de síntesis de alto nivel, como áreas de enfoque ("enfócate en preferencias de estilo de código"), contenido que debe preservarse sin cambios, o convenciones de salida que quieres aplicar en todo el almacén. El pipeline es una pasada de síntesis sobre las entradas, no un editor aplicado al texto del almacén, por lo que las directivas imperativas que apuntan a líneas específicas ("cambia la oración X por Y", "corrige el conteo en la sección Z") generalmente no producen ningún cambio. Para hacer ediciones específicas a memorias individuales, usa la API de Memory Stores directamente sobre el almacén de salida.
Los dreams se ejecutan de forma asíncrona y normalmente tardan desde minutos hasta unas pocas horas, dependiendo del número de transcripciones de entrada. Consulta el dream por ID para verificar el estado:
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}")status | Significado |
|---|---|
pending | Dream creado exitosamente y en cola. |
running | El pipeline está procesando. usage se actualiza a medida que avanza el trabajo. |
completed | Finalizó exitosamente. El valor de outputs[] es el nuevo almacén de memoria. |
failed | La ejecución de dreaming terminó con un error. El almacén de memoria de salida se deja tal cual, con lo que se haya escrito antes del fallo. |
canceled | Ejecución de dreaming cancelada. El almacén de memoria de salida se deja tal cual. |
Una vez que un dream está running, su campo session_id apunta a la sesión subyacente que ejecuta el pipeline. Puedes hacer streaming de los eventos de esa sesión para observar en tiempo real lo que el dream está leyendo y escribiendo. La sesión se archiva (no se elimina) cuando el dream alcanza un estado terminal, por lo que la transcripción permanece disponible después.
Cuando status llega a completed, la entrada memory_store en outputs[] hace referencia a un almacén completamente poblado. Es un almacén de memoria ordinario en tu espacio de trabajo. Revísalo con la API de Memory Stores o en la Consola, y luego:
memory_store en lugar del almacén de memoria de entrada (o junto a él), o# Tras finalizar el dream, la salida contiene el almacén de memoria reconstruido
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},
],
)El dream en sí nunca elimina ni modifica sus entradas. En caso de failed o canceled, el almacén de salida persiste con contenido parcial para que puedas inspeccionar lo que se produjo antes de detenerse; límpialo a través de la API de Memory Stores si no lo necesitas.
Cancelar mueve un dream pending o running a canceled inmediatamente. Cancelar un dream que ya está canceled es una operación idempotente sin efecto; cancelar un dream completed o failed devuelve 400.
client.beta.dreams.cancel(dream.id)Archivar establece archived_at en un dream que ha alcanzado un estado terminal (completed, failed o canceled); status se deja sin cambios. Los dreams archivados se excluyen de las respuestas de listado predeterminadas, pero siguen siendo legibles por ID. Archivar un dream ya archivado es una operación idempotente sin efecto. Archivar un dream pending o running devuelve 400; cancélalo primero. No existe la opción de desarchivar.
client.beta.dreams.archive(dream.id)Archivar un dream no afecta su almacén de memoria de salida; gestiónalo por separado a través de la API de Memory Stores.
Devuelve todos los dreams no archivados en el espacio de trabajo, del más reciente al más antiguo. Usa limit (predeterminado 20, máximo 100) y el cursor page para paginar. Pasa include_archived=true para incluir dreams archivados.
for listed_dream in client.beta.dreams.list(limit=20):
print(listed_dream.id, listed_dream.status)A continuación se presenta una lista no exhaustiva de posibles errores de dreaming.
error.type | Cuándo |
|---|---|
timeout | El pipeline excedió su presupuesto de tiempo de ejecución. |
internal_error | Fallo del pipeline sin clasificar. |
memory_store_org_limit_exceeded | Tu organización alcanzó su límite de almacenes de memoria mientras el pipeline aprovisionaba almacenamiento de trabajo. |
input_memory_store_too_large | El almacén de memoria de entrada excede el límite de tamaño del pipeline. |
input_memory_store_unavailable | El almacén de memoria de entrada fue archivado o eliminado después de que se creó el dream. |
input_session_unavailable | Una sesión de entrada fue eliminada después de que se creó el dream. |
Los dreams se facturan a las tarifas estándar de tokens de la API para el modelo que selecciones; usage en el recurso reporta los totales exactos. El costo escala aproximadamente de forma lineal con el número y la longitud de las sesiones de entrada. Comienza con un lote pequeño de sesiones y escala una vez que estés satisfecho con la calidad de la curación.
| Límite | Valor |
|---|---|
| Sesiones por dream | 100 |
Longitud de instructions | 4,096 caracteres |
| Modelos compatibles | claude-opus-5, claude-fable-5, claude-opus-4-8, claude-opus-4-7, claude-sonnet-5, claude-sonnet-4-6 |
Se aplican límites de velocidad predeterminados a la creación de dreams mientras esta funcionalidad está en vista previa de investigación. Contacta a soporte si necesitas límites más altos.
Was this page helpful?