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(任意)— 人間によるレビュー用の Dream Diary と 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 は、これらのフォローアップを 抽出したり配信したりしなくなりました。将来のアクションには スケジュールされたタスクを使用してください。既存の保存済み 行を調査または破棄するために、従来の openclaw commitments コマンドは引き続き利用できます。

メモリツール

エージェントには、メモリを操作するためのツールが 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 に書き込まれます。

フェーズの動作、スコアリングシグナル、Dream Diary の詳細については、 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