Dreaming(梦境)是一项研究预览功能。申请访问权限以试用。
智能体在工作时会写入其记忆存储,但这些写入是局部且增量的:经过多次会话后,记忆存储会积累重复项、矛盾项和过时的条目。
Dreams(梦境)让 Claude 来清理这些内容。一次梦境会读取现有的记忆存储以及过去的会话记录,然后生成一个新的、重新组织过的记忆存储:重复项被合并,过时或相互矛盾的条目被替换为最新值,并发现新的洞察。
输入存储永远不会被修改,因此您可以审查输出,如果不满意结果可以将其丢弃。
梦境端点由 dreaming-2026-04-21 beta 标头控制访问;仅有 managed-agents-2026-04-01 标头本身并不能授予对梦境的访问权限。本页面上的梦境端点示例会发送这两个标头;会话和记忆存储调用只需要 managed-agents-2026-04-01。SDK 会自动设置这些标头。
一次梦境是一个异步作业,它接收:
梦境会生成另一个输出记忆存储,与输入分离。输出存储 ID 会在梦境开始 running 后不久出现在梦境的 outputs[] 中,即工作流克隆输入存储之后;处于 running 状态的梦境可能会短暂地报告空的 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...梦境的输入包括预先存在的记忆存储和一个会话数组。所选模型运行梦境流水线;在研究预览期间,支持 claude-fable-5、claude-opus-4-8、claude-opus-4-7、claude-sonnet-5 和 claude-sonnet-4-6。您可以选择性地传入 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 字段用于引导梦境流水线的综合内容。它在整个流水线中生效:仔细阅读什么、合并或丢弃什么,以及如何组织输出存储的结构。
使用 instructions 来提供高层次的综合指导,例如关注领域("关注编码风格偏好")、需要原样保留的内容,或希望在整个存储中应用的输出约定。该流水线是对输入的综合处理,而不是应用于存储文本的编辑器,因此针对特定行的命令式指令("将句子 X 改为 Y"、"修正 Z 部分中的计数")通常不会产生任何变化。要对单个记忆进行有针对性的编辑,请直接在输出存储上使用 Memory Stores API。
梦境异步运行,通常需要几分钟到几小时,取决于输入记录的数量。通过 ID 轮询梦境以检查状态:
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 | 梦境已成功创建并排队。 |
running | 流水线正在处理中。usage 会随着工作进展而更新。 |
completed | 成功完成。outputs[] 的值是新的记忆存储。 |
failed | 梦境运行因错误而结束。输出记忆存储保持原样,保留失败前已写入的内容。 |
canceled | 梦境运行已取消。输出记忆存储保持原样。 |
一旦梦境处于 running 状态,其 session_id 字段会指向运行流水线的底层会话。您可以流式传输该会话的事件,以实时观察梦境正在读取和写入的内容。当梦境达到终止状态时,该会话会被归档(而非删除),因此之后仍可查看记录。
当 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},
],
)梦境本身永远不会删除或修改其输入。在 failed 或 canceled 状态下,输出存储会保留部分内容,以便您检查停止前已生成的内容;如果不需要,可通过 Memory Stores API 将其清理。
当梦境处于 pending 或 running 状态时,400 保护适用于归档梦境本身,而非其存储。在运行中途归档或删除输入记忆存储(或删除输入会话)将导致梦境失败,并返回 input_memory_store_unavailable 或 input_session_unavailable。
取消操作会立即将 pending 或 running 状态的梦境变为 canceled。取消一个已经处于 canceled 状态的梦境是幂等的空操作;取消 completed 或 failed 状态的梦境会返回 400。
取消后,梦境的 usage 字段可能会在进行中的工作收尾期间继续更新几秒钟。如果您需要最终计数,请轮询梦境直到 usage 稳定。
client.beta.dreams.cancel(dream.id)归档操作会在已达到终止状态(completed、failed 或 canceled)的梦境上设置 archived_at;status 保持不变。已归档的梦境会从默认列表响应中排除,但仍可通过 ID 读取。归档一个已归档的梦境是幂等的空操作。归档 pending 或 running 状态的梦境会返回 400;请先取消它。没有取消归档的操作。
client.beta.dreams.archive(dream.id)归档梦境不会影响其输出记忆存储;请通过 Memory Stores API 单独管理。
返回工作区中所有未归档的梦境,按最新优先排序。使用 limit(默认 20,最大 100)和 page 游标进行分页。传入 include_archived=true 以包含已归档的梦境。
for listed_dream in client.beta.dreams.list(limit=20):
print(listed_dream.id, listed_dream.status)以下是可能出现的梦境错误的非详尽列表。
error.type | 发生时机 |
|---|---|
timeout | 流水线超出了其运行时间预算。 |
internal_error | 未分类的流水线故障。 |
memory_store_org_limit_exceeded | 在流水线配置工作存储时,您的组织达到了记忆存储上限。 |
input_memory_store_too_large | 输入记忆存储超出了流水线的大小限制。 |
input_memory_store_unavailable | 输入记忆存储在梦境创建后被归档或删除。 |
input_session_unavailable | 输入会话在梦境创建后被删除。 |
梦境按您所选模型的标准 API 令牌费率计费;资源上的 usage 会报告确切的总量。成本大致与输入会话的数量和长度呈线性关系。建议先从一小批会话开始,在对整理质量满意后再扩大规模。
| 限制 | 值 |
|---|---|
| 每次梦境的会话数 | 100 |
instructions 长度 | 4,096 个字符 |
| 支持的模型 | claude-fable-5、claude-opus-4-8、claude-opus-4-7、claude-sonnet-5、claude-sonnet-4-6 |
在此功能处于研究预览期间,梦境创建适用默认速率限制。如果您需要更高的限制,请联系支持团队。
Was this page helpful?