Sessions and memory

メモリの概要

OpenClaw は、エージェントのワークスペース(デフォルトは ~/.openclaw/workspace)にプレーンな Markdown ファイルを書き込むことで情報を記憶します。モデルが記憶するのはディスクに保存された内容だけであり、隠れた状態はありません。

仕組み

エージェントには、メモリに関連するファイルが 3 つあります。

  • MEMORY.md — 長期メモリ。永続的な事実、設定、決定事項です。セッション開始時に読み込まれます。
  • memory/YYYY-MM-DD.md(または memory/YYYY-MM-DD-<slug>.md)— デイリーノート。 継続中のコンテキストと観察事項です。日付のみの /new または /reset では、今日と昨日の日付付きノートが自動的に読み込まれます。バンドルされたセッションメモリフックによって書き込まれるものなど、スラッグ付きのバリアントも、日付のみのファイルと併せて取得されます。
  • DREAMS.md(任意)— 人間によるレビュー用のドリームダイアリーと Dreaming スイープの要約です。根拠に基づく履歴バックフィルのエントリも含まれます。

保存先の使い分け

MEMORY.md は、コンパクトに整理されたレイヤーです。セッション開始時に利用できるべき永続的な事実、設定、継続的な決定事項、短い要約を格納します。生のトランスクリプト、日次ログ、網羅的なアーカイブではありません。

memory/YYYY-MM-DD.md ファイルは作業用レイヤーです。詳細なデイリーノート、観察事項、セッション要約、後から役立つ可能性のある生のコンテキストを格納します。これらは memory_searchmemory_get 用にインデックス化されますが、毎ターンのブートストラッププロンプトには挿入されません。

時間の経過とともに、エージェントはデイリーノートから有用な内容を抽出して MEMORY.md にまとめ、古くなった長期エントリを削除します。生成されたワークスペース指示と Heartbeat フローがこれを定期的に実行するため、細部ごとに MEMORY.md を手動編集する必要はありません。

MEMORY.md がブートストラップファイルの予算を超えて大きくなると、OpenClaw はディスク上のファイルをそのまま保持しますが、コンテキストに挿入するコピーを切り詰めます。これは、詳細な内容を memory/*.md に移し、MEMORY.md には永続的な要約だけを残すか、より多くのプロンプト予算を使用する場合はブートストラップ上限を引き上げるべきという合図です。生のサイズと挿入後のサイズ、および切り詰め状態を確認するには、/context list/context detail、または openclaw doctor を使用します。

コーディングアシスタントからのインポート

Control UI では、Codex と Claude Code の既存のローカルメモリをインポートできます。 SettingsImport Memory を開き、保存先のエージェントを選択し、検出されたファイルを確認してからインポートを確定します。OpenClaw がコピーするのは Markdown メモリだけです。

  • Codex: ~/.codex/memories(または CODEX_HOME/memories)配下の統合済み MEMORY.md ファイルと memory_summary.md ファイル。生のロールアウトファイルとトランスクリプトファイルはインポートされません。
  • Claude Code: ~/.claude/projects/*/memory 配下にある各プロジェクトの自動メモリディレクトリ内の Markdown ファイルと、存在する場合はユーザーが設定した autoMemoryDirectory。プロジェクト指示、セッション、設定、認証情報は、このメモリ専用操作の対象に含まれません。

インポートされたファイルは、選択したエージェントのワークスペース内にある memory/imports/codex/memory/imports/claude-code/ の下で、個別のまま保持されます。これらは memory_search 用にインデックス化され、memory_get から利用できますが、エージェントのブートストラップ MEMORY.md には統合されません。コピー元のファイルは変更されません。

プレビューには保存先の競合が表示されます。それらのファイルを置き換えるには Replace existing imports を有効にします。適用時には検証済みのインポート前バックアップが作成され、上書きされたファイルの項目別コピーが移行レポートに保存されます。

アクションに影響するメモリ

ほとんどのメモリは通常の Markdown ノートです。中には、エージェントが後から行うべきことに影響するものもあります。その場合は、事実だけでなく、そのメモに基づいていつ安全に行動できるかも記録してください。

次の内容を含むメモでは、そのアクション境界を記録します。

  • 承認または権限の要件、
  • 一時的な制約、
  • 別のセッション、スレッド、または人物への引き継ぎ、
  • 有効期限の条件、
  • 安全に行動できるタイミング、
  • 情報源または所有者の権限、
  • 魅力的に見えるアクションを避けるための指示。

アクションに影響する有用なメモでは、次の点を明確にします。

  • 将来の動作を何が変えるのか、
  • いつ、またはどの条件で適用されるのか、
  • いつ失効するのか、または何によって行動可能になるのか、
  • エージェントが何を避けるべきか、
  • 信頼性や権限に影響する場合、情報源または所有者が誰か。

メモリは承認に関するコンテキストを保持できますが、ポリシーを強制するものではありません。厳格な運用制御には、OpenClaw の承認設定、サンドボックス化、スケジュールされたタスクを使用してください。

例:

md
API の移行は別のセッションで設計されています。今後のターンでは、このスレッドから API 実装を編集しないでください。移行計画が確定するまでは、ここで得た知見を設計入力としてのみ使用してください。

別の例:

md
信頼できない情報源からのレポートは、昇格前にレビューが必要です。今後のターンでは、それを証拠としてのみ扱ってください。信頼できるレビュアーが内容を確認するまでは、永続的なメモリとして保存しないでください。

これはすべてのメモリに必須のスキーマではありません。単純な事実は簡潔なままで構いません。タイミング、権限、有効期限、または安全に行動できるコンテキストが失われることで、後からエージェントが誤った行動を取る可能性がある場合に、アクションに影響する境界を使用してください。

推論された短期間のフォローアップには、コミットメントを使用します。 正確なリマインダー、時間指定の確認、定期的な作業には、スケジュールされたタスクを使用します。どちらの方法でも、その周辺にある永続的なコンテキストはメモリに要約できます。

推論されたコミットメント

将来のフォローアップの中には、永続的な事実ではないものもあります。明日面接があると述べた場合、有用なメモリは「これを MEMORY.md に永久保存する」ことではなく、「面接後に状況を確認する」ことかもしれません。

コミットメントは、そのような場合に使用する、オプトイン式で短期間有効なフォローアップメモリです。OpenClaw は非表示のバックグラウンド処理でこれを推論し、同じエージェントとチャンネルに範囲を限定し、期限に達した確認を Heartbeat 経由で配信します。明示的なリマインダーには、引き続きスケジュールされたタスクを使用します。

メモリツール

エージェントには、メモリを操作するためのツールが 2 つあります。

  • memory_search — 元の表現と異なる場合でも、セマンティック検索を使用して関連するノートを検索します。
  • memory_get — 特定のメモリファイルまたは行範囲を読み取ります。

どちらのツールも、アクティブなメモリ Plugin(デフォルト: memory-core)によって提供されます。

メモリ検索

埋め込みプロバイダーが設定されている場合、memory_search はハイブリッド検索を使用します。ベクトル類似度(意味的な類似性)とキーワード照合(ID やコードシンボルなどの完全一致する用語)を組み合わせます。サポートされている任意のプロバイダーの API キーがあれば、すぐに使用できます。

検索の仕組み、調整オプション、プロバイダーの設定については、メモリ検索を参照してください。

メモリバックエンド

ナレッジ Wiki レイヤー

永続的なメモリを生のノートではなく、保守されたナレッジベースのように機能させたい場合は、バンドルされている memory-wiki Plugin を使用します。これは、決定論的なページ構造、構造化された主張と証拠、矛盾と鮮度の追跡、生成されたダッシュボード、コンパイル済みダイジェスト、Wiki ネイティブツール(wiki_statuswiki_searchwiki_getwiki_applywiki_lint)を備えた Wiki Vault に、永続的な知識をコンパイルします。

memory-wiki はアクティブなメモリ Plugin を置き換えません。想起、昇格、Dreaming は引き続きアクティブなメモリ Plugin が管理します。memory-wiki は、その隣に出典情報が豊富なナレッジレイヤーを追加します。

メモリの自動フラッシュ

Compactionによって会話が要約される前に、OpenClaw は重要なコンテキストをメモリファイルに保存するようエージェントへ促す、非表示のターンを実行します。これはデフォルトで有効です。無効にするには agents.defaults.compaction.memoryFlush.enabled: false を設定します。

この整理用ターンをローカルモデルで実行するには、メモリフラッシュターンだけに適用される明示的なオーバーライドを設定します(アクティブなセッションのモデルフォールバックチェーンは継承されません)。

json
{  "agents": {    "defaults": {      "compaction": {        "memoryFlush": {          "model": "ollama/qwen3:8b"        }      }    }  }}

Dreaming

Dreaming は、メモリを統合するための任意のバックグラウンド処理です。短期的な想起シグナルを収集し、候補を採点して、条件を満たした項目だけを長期メモリ(MEMORY.md)へ昇格させます。

  • オプトイン: デフォルトでは無効です。
  • スケジュール実行: 有効にすると、memory-core が完全な Dreaming スイープ用の定期的な Cron ジョブを 1 つ自動管理します。
  • しきい値あり: 昇格には、スコア、想起頻度、クエリ多様性の各ゲートを通過する必要があります。
  • レビュー可能: フェーズ要約とダイアリーエントリが、人間によるレビュー用に DREAMS.md へ書き込まれます。

フェーズの動作、採点シグナル、ドリームダイアリーの詳細については、Dreamingを参照してください。

根拠に基づくバックフィルとライブ昇格

Dreaming システムには、関連する 2 つのレビューレーンがあります。

  • ライブ Dreaming は、memory/.dreams/ 配下の短期 Dreaming ストアを使用します。通常のディープフェーズはこれを基に、何を MEMORY.md へ昇格させるかを決定します。
  • 根拠に基づくバックフィル は、履歴 memory/YYYY-MM-DD.md ノートを独立した日次ファイルとして読み取り、構造化されたレビュー出力を DREAMS.md へ書き込みます。

根拠に基づくバックフィルは、MEMORY.md を手動編集せずに、古いノートを再処理して、システムが何を永続的と判断するかを確認する場合に役立ちます。

bash
openclaw memory rem-backfill --path ./memory --stage-short-term

--stage-short-term フラグは、根拠に基づく永続的な候補を、通常のディープフェーズですでに使用されている同じ短期 Dreaming ストアへステージングします。直接昇格させることはありません。したがって、次のようになります。

  • DREAMS.md は、人間向けのレビュー画面のままです。
  • 短期ストアは、機械向けのランキング画面のままです。
  • MEMORY.md は、引き続きディープ昇格によってのみ書き込まれます。

通常のダイアリーエントリや通常の想起状態に影響を与えずに再処理を取り消すには、次を実行します。

bash
openclaw memory rem-backfill --rollbackopenclaw memory rem-backfill --rollback-short-term

CLI

bash
openclaw memory status          # インデックスの状態とプロバイダーを確認openclaw memory search "query"  # コマンドラインから検索openclaw memory index --force   # インデックスを再構築

関連情報

Was this useful?
On this page

On this page