Dreaming 是一項研究預覽功能。申請存取權限以試用。
代理程式在工作時會寫入其記憶儲存庫,但這些寫入是局部且漸進的:經過多個工作階段後,記憶儲存庫會累積重複、矛盾和過時的條目。
Dreams 讓 Claude 清理這些內容。一個 dream 會讀取現有的記憶儲存庫以及過去的工作階段記錄,然後產生一個新的、重新組織過的記憶儲存庫:重複項目被合併、過時或矛盾的條目被替換為最新的值,並發掘出新的洞察。
輸入儲存庫永遠不會被修改,因此您可以檢視輸出結果,如果不滿意可以將其捨棄。
Dream 端點由 dreaming-2026-04-21 beta 標頭控制存取;單獨使用 managed-agents-2026-04-01 標頭無法存取 dreams。本頁面的 dream 端點範例會同時傳送這兩個標頭;工作階段和記憶儲存庫的呼叫只需要 managed-agents-2026-04-01。SDK 會自動設定這些標頭。
一個 dream 是一個非同步作業,它接受:
Dream 會產生另一個輸出記憶儲存庫,與輸入分開。輸出儲存庫 ID 會在 dream 開始 running 後不久出現在 dream 的 outputs[] 中,也就是工作流程複製輸入儲存庫之後;處於 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-fable-5、claude-opus-4-8、claude-opus-4-7、claude-sonnet-5 和 claude-sonnet-4-6。您可以選擇性地傳入 instructions 來引導 dreaming 過程;請參閱使用 instructions 引導。
回應是完整的 dream 資源,其 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
}如果您只有工作階段記錄而沒有現有的儲存庫,請先建立一個空的記憶儲存庫,然後將其作為 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 達到終止狀態時,該工作階段會被封存(而非刪除),因此之後仍可取得記錄。
當 status 達到 completed 時,outputs[] 中的 memory_store 條目會參照一個完整填充的儲存庫。它是您工作區中的一個普通記憶儲存庫。使用 Memory Stores API 或在 Console 中檢視它,然後選擇:
# 夢境結束後,輸出會保存重建的記憶儲存區
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 本身,而非其儲存庫。在執行過程中封存或刪除輸入記憶儲存庫(或刪除輸入工作階段)會導致 dream 以 input_memory_store_unavailable 或 input_session_unavailable 失敗。
取消會立即將 pending 或 running 的 dream 移至 canceled 狀態。取消已經是 canceled 狀態的 dream 是冪等的無操作;取消 completed 或 failed 的 dream 會回傳 400。
取消後,dream 的 usage 欄位可能會在進行中的工作結束時繼續更新幾秒鐘。如果您需要最終計數,請輪詢 dream 直到 usage 穩定為止。
client.beta.dreams.cancel(dream.id)封存會在已達到終止狀態(completed、failed 或 canceled)的 dream 上設定 archived_at;status 保持不變。已封存的 dreams 會從預設的列表回應中排除,但仍可透過 ID 讀取。封存已封存的 dream 是冪等的無操作。封存 pending 或 running 的 dream 會回傳 400;請先取消它。沒有取消封存的功能。
client.beta.dreams.archive(dream.id)封存 dream 不會影響其輸出記憶儲存庫;請透過 Memory Stores API 另行管理。
回傳工作區中所有未封存的 dreams,最新的排在最前面。使用 limit(預設 20,最大 100)和 page 游標進行分頁。傳入 include_archived=true 以包含已封存的 dreams。
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 token 費率計費;資源上的 usage 會回報確切的總計。成本大致與輸入工作階段的數量和長度呈線性關係。建議先從少量工作階段開始,在您對整理品質滿意後再擴大規模。
| 限制 | 值 |
|---|---|
| 每個 dream 的工作階段數 | 100 |
instructions 長度 | 4,096 個字元 |
| 支援的模型 | claude-fable-5、claude-opus-4-8、claude-opus-4-7、claude-sonnet-5、claude-sonnet-4-6 |
在此功能處於研究預覽期間,dream 建立適用預設的速率限制。如果您需要更高的限制,請聯絡支援團隊。
Was this page helpful?