Claude Platform Docs
Managed Agents永続メモリの構築

ドリーム

Claude に過去のセッションを振り返らせ、エージェントのメモリを整理し、新たなインサイトを引き出します。

エージェントは作業中にメモリストアへ書き込みを行いますが、これらの書き込みはローカルかつ増分的なものです。多くのセッションを経ると、メモリストアには重複、矛盾、古くなったエントリが蓄積されていきます。

「Dreams」(ドリーム) を使うと、Claude がそれを整理できます。ドリームは既存のメモリストアを過去のセッションのトランスクリプトとあわせて読み込み、再編成された新しいメモリストアを生成します。重複は統合され、古くなったエントリや矛盾するエントリは最新の値に置き換えられ、新たなインサイトが引き出されます。

入力ストアは決して変更されないため、出力を確認し、結果が気に入らなければ破棄することができます。

仕組み

ドリームは、以下を入力として受け取る非同期ジョブです。

  • 既存のメモリストア: Claude が検証、重複排除、再編成を行う対象のストア
  • 1〜100 件のセッション: Claude がパターンやインサイトを掘り起こし、出力に組み込むための過去のトランスクリプト

ドリームは、入力とは別の出力メモリストアを生成します。出力ストアの 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-opus-5claude-fable-5claude-opus-4-8claude-opus-4-7claude-sonnet-5claude-sonnet-4-6 がサポートされています。オプションで instructions を渡してドリーミングプロセスを誘導することもできます。instructions で誘導するを参照してください。

レスポンスは 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_read_input_tokens": 0,
    "cache_creation_input_tokens": 0
  },
  "error": null
}

instructions で誘導する

オプションの 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 フィールドはパイプラインを実行している基盤のセッションを指します。そのセッションのイベントをストリーミングすることで、ドリームが何を読み書きしているかをリアルタイムで観察できます。ドリームが終了状態に達すると、セッションは(削除ではなく)アーカイブされるため、トランスクリプトはその後も引き続き利用可能です。

出力を使用する

statuscompleted に達すると、outputs[] 内の memory_store エントリは完全にデータが投入されたストアを参照します。これはワークスペース内の通常のメモリストアです。Memory Stores API または Console で確認したうえで、次のいずれかを行います。

# dream が終了すると、出力には再構築されたメモリストアが保持されます
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 のドリームを即座に canceled に移行させます。すでに canceled のドリームをキャンセルすることは冪等な no-op です。completed または failed のドリームをキャンセルすると 400 が返されます。

client.beta.dreams.cancel(dream.id)

ドリームをアーカイブする

アーカイブは、終了状態(completedfailed、または canceled)に達したドリームに archived_at を設定します。status は変更されません。アーカイブされたドリームはデフォルトのリストレスポンスから除外されますが、ID による読み取りは引き続き可能です。すでにアーカイブ済みのドリームをアーカイブすることは冪等な no-op です。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-opus-5claude-fable-5claude-opus-4-8claude-opus-4-7claude-sonnet-5claude-sonnet-4-6

この機能がリサーチプレビューである間、ドリームの作成にはデフォルトのレート制限が適用されます。より高い制限が必要な場合はサポートにお問い合わせください。

Was this page helpful?