Dreaming은 리서치 프리뷰 기능입니다. 사용해 보려면 액세스를 요청하세요.
에이전트는 작업하면서 메모리 스토어에 기록하지만, 이러한 기록은 국소적이고 점진적입니다. 여러 세션이 진행되면서 메모리 스토어에는 중복, 모순, 오래된 항목이 쌓입니다.
Dreams는 Claude가 이를 정리할 수 있게 합니다. Dream은 기존 메모리 스토어를 과거 세션 트랜스크립트와 함께 읽은 다음, 새롭게 재구성된 메모리 스토어를 생성합니다. 중복은 병합되고, 오래되거나 모순된 항목은 최신 값으로 대체되며, 새로운 인사이트가 도출됩니다.
입력 스토어는 절대 수정되지 않으므로, 출력을 검토한 후 결과가 마음에 들지 않으면 폐기할 수 있습니다.
모든 Managed Agents API 요청에는 managed-agents-2026-04-01 베타 헤더가 필요합니다. Dreams는 추가로 dreaming-2026-04-21 베타 헤더가 필요합니다. SDK는 이를 자동으로 설정합니다.
Dream은 다음을 입력으로 받는 비동기 작업입니다.
Dream은 입력과 별개인 또 다른 출력 메모리 스토어를 생성합니다. 출력 스토어 ID는 dream이 running 상태가 되면 dream의 outputs[]에 나타납니다.
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...Dreaming 입력에는 기존 메모리 스토어와 세션 배열이 포함됩니다. 선택한 모델이 dreaming 파이프라인을 실행합니다. 리서치 프리뷰 기간 동안에는 claude-opus-4-8, claude-opus-4-7, claude-sonnet-4-6이 지원됩니다. 선택적으로 instructions를 전달하여 dreaming 프로세스를 조정할 수 있습니다. 지침으로 조정하기를 참조하세요.
응답은 status: "pending" 상태의 전체 dream 리소스입니다.
{
"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_creation_input_tokens": 0,
"cache_read_input_tokens": 0
},
"error": null
}세션 트랜스크립트만 있고 기존 스토어가 없는 경우, 먼저 빈 메모리 스토어를 생성한 다음 이를 memory_store 입력으로 전달하세요.
선택적 instructions 필드는 dreaming 파이프라인이 무엇을 종합할지 조정합니다. 이는 파이프라인 전반에 걸쳐 적용됩니다. 즉, 무엇을 자세히 읽을지, 무엇을 병합하거나 제거할지, 출력 스토어를 어떻게 구조화할지에 영향을 줍니다.
instructions는 집중 영역("코딩 스타일 선호도에 집중"), 변경 없이 보존할 콘텐츠, 스토어 전반에 적용할 출력 규칙과 같은 상위 수준의 종합 가이드에 사용하세요. 파이프라인은 입력에 대한 종합 패스이지 스토어 텍스트에 적용되는 편집기가 아니므로, 특정 줄을 대상으로 하는 명령형 지시("문장 X를 Y로 변경", "섹션 Z의 개수 수정")는 일반적으로 아무런 변경을 만들지 않습니다. 개별 메모리를 대상으로 편집하려면 출력 스토어에 직접 Memory Stores API를 사용하세요.
Dreams는 비동기적으로 실행되며 입력 크기에 따라 일반적으로 수 분에서 수십 분이 소요됩니다. ID로 dream을 폴링하여 상태를 확인하세요.
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 | 의미 |
|---|---|
pending | Dream이 성공적으로 생성되어 대기열에 추가되었습니다. |
running | 파이프라인이 처리 중입니다. 작업이 진행됨에 따라 usage가 업데이트됩니다. |
completed | 성공적으로 완료되었습니다. outputs[] 값이 새 메모리 스토어입니다. |
failed | Dreaming 실행이 오류로 종료되었습니다. 출력 메모리 스토어는 실패 전에 기록된 내용 그대로 유지됩니다. |
canceled | Dreaming 실행이 취소되었습니다. 출력 메모리 스토어는 그대로 유지됩니다. |
Dream이 running 상태가 되면 session_id 필드가 파이프라인을 실행하는 기본 세션을 가리킵니다. 해당 세션의 이벤트를 스트리밍하여 dream이 실시간으로 무엇을 읽고 쓰는지 관찰할 수 있습니다. Dream이 종료 상태에 도달하면 세션은 삭제되지 않고 보관(archive)되므로, 이후에도 트랜스크립트를 계속 확인할 수 있습니다.
status가 completed에 도달하면 outputs[]의 memory_store 항목이 완전히 채워진 스토어를 참조합니다. 이는 워크스페이스의 일반 메모리 스토어입니다. Memory Stores API 또는 Console에서 검토한 다음, 다음 중 하나를 수행하세요.
# After the dream ends, the output holds the rebuilt 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},
],
)Dream 자체는 입력을 절대 삭제하거나 수정하지 않습니다. failed 또는 canceled 상태에서는 출력 스토어가 부분적인 내용과 함께 유지되므로 중단 전에 생성된 내용을 검사할 수 있습니다. 필요하지 않으면 Memory Stores API를 통해 정리하세요.
Dream이 pending 또는 running 상태인 동안 출력 스토어를 보관하거나 삭제하려고 하면 400 오류와 함께 거부됩니다. 실행 중에 입력 스토어나 세션을 보관하거나 삭제하면 dream이 input_memory_store_unavailable 또는 input_session_unavailable 오류로 실패합니다.
취소는 pending 또는 running 상태의 dream을 즉시 canceled 상태로 전환합니다. 이미 canceled 상태인 dream을 취소하는 것은 멱등적(idempotent)인 무작동(no-op)입니다. completed 또는 failed 상태의 dream을 취소하면 400이 반환됩니다.
취소 후에도 진행 중이던 작업이 마무리되는 동안 dream의 usage 필드가 몇 초간 계속 업데이트될 수 있습니다. 최종 수치가 필요한 경우 usage가 안정될 때까지 dream을 폴링하세요.
client.beta.dreams.cancel(dream.id)보관은 종료 상태(completed, failed, canceled)에 도달한 dream에 archived_at을 설정합니다. status는 변경되지 않습니다. 보관된 dream은 기본 목록 응답에서 제외되지만 ID로는 계속 읽을 수 있습니다. 이미 보관된 dream을 보관하는 것은 멱등적인 무작동입니다. pending 또는 running 상태의 dream을 보관하면 400이 반환되므로 먼저 취소하세요. 보관 해제는 없습니다.
client.beta.dreams.archive(dream.id)Dream을 보관해도 출력 메모리 스토어에는 영향을 주지 않습니다. 이는 Memory Stores API를 통해 별도로 관리하세요.
워크스페이스의 보관되지 않은 모든 dream을 최신순으로 반환합니다. limit(기본값 20, 최대 100)과 page 커서를 사용하여 페이지네이션하세요. 보관된 dream을 포함하려면 include_archived=true를 전달하세요.
for listed_dream in client.beta.dreams.list(limit=20):
print(listed_dream.id, listed_dream.status)발생 가능한 dreaming 오류의 일부 목록은 다음과 같습니다.
error.type | 발생 시점 |
|---|---|
timeout | 파이프라인이 런타임 예산을 초과했습니다. |
internal_error | 분류되지 않은 파이프라인 실패입니다. |
memory_store_org_limit_exceeded | 파이프라인이 작업 스토리지를 프로비저닝하는 동안 조직이 메모리 스토어 한도에 도달했습니다. |
input_memory_store_too_large | 입력 메모리 스토어가 파이프라인의 크기 제한을 초과합니다. |
input_memory_store_unavailable | Dream이 생성된 후 입력 메모리 스토어가 보관되거나 삭제되었습니다. |
input_session_unavailable | Dream이 생성된 후 입력 세션이 보관되거나 삭제되었습니다. |
Dreams는 선택한 모델의 표준 API 토큰 요율로 과금됩니다. 리소스의 usage가 정확한 총계를 보고합니다. 비용은 입력 세션의 수와 길이에 대략 선형적으로 비례합니다. 소규모 세션 배치로 시작한 다음 큐레이션 품질에 만족하면 규모를 확장하세요.
| 제한 | 값 |
|---|---|
| Dream당 세션 수 | 100 |
instructions 길이 | 4,096자 |
| 지원 모델 | claude-opus-4-8, claude-opus-4-7, claude-sonnet-4-6 |
이 기능이 베타인 동안에는 dream 생성에 기본 속도 제한이 적용됩니다. 더 높은 제한이 필요하면 지원팀에 문의하세요.
Was this page helpful?