OpenClawの最高の自動化は、過去の決定がアクセス可能な状態にあって初めて機能します。OpenClawのドキュメントには明確に記載されています。メモリとは、エージェントが意図的に読み書きしなければならない単なるMarkdownです。このガイドでは、ファイルレイアウト、自動メモリフラッシュ、ベクトルインデックス作成、そして新しいQMDバックエンドに関する最新の公式ガイダンスを抽出し、openclaw memory managementが当て推量でなくなるようにします。
TL;DR
- メモリはプレーンなMarkdownに存在します。日々のログは
memory/YYYY-MM-DD.mdに、整理された長期的な事実はMEMORY.mdに保存されます。エージェントは起動時に今日と昨日の分を読み込み、MEMORY.mdはプライベートなセッションでのみ開くべきです。 - コンテキストの圧縮が始まる前に、OpenClawはサイレントなメモリフラッシュターンをトリガーします(デフォルトは
softThresholdTokens = 4000、reserveTokensFloor = 20000)。これにより、エージェントはNO_REPLYによるノイズ抑制を伴って、永続的なメモを保持できます。 - ベクトルメモリ検索は、埋め込みプロバイダーを自動的に選択し(
local → OpenAI → Gemini → Voyage → Mistral)、APIキーがない場合はフォールバックできます。memorySearch.provider = "local"またはOllamaを使用することで、すべてをローカルに保つことができます。 - 高負荷な保持には、QMDサイドカーが利用可能になりました。OpenClawはBun + node-llama-cppプロセスを管理し、Markdownとオプションの追加パスをインデックス化し、QMDが利用できない場合は組み込みのSQLiteインデクサーにフォールバックできます。
- 運用上の健全性も依然として重要です。メモリ検索の範囲をDMコンテキストに限定し、
openclaw statusでフラッシュログを監視し、サイレントなハウスキーピングが実行できるようにワークスペースを書き込み可能に保ちます。
OpenClawが実際にメモリを保存する方法
OpenClawのメモリモデルは意図的にシンプルに作られています。すべてがエージェントのワークスペース(デフォルトでは~/.openclaw/workspace)内のMarkdownです。
- 日々のコンテキスト(
memory/YYYY-MM-DD.md)は追記専用で、生のトランスクリプト、状態、To-Doを記録するためのものです。継続性を保つため、各セッションの開始時に当日と前日の分を読み込みます。 - 整理されたメモリ(
MEMORY.md)はオプションであり、グループコンテキストで長期的な事実が漏洩するのを避けるため、プライベート/メインセッションでのみ開くべきです。 - ドキュメントでは明確に警告されています。「これを覚えておいて」と誰かが言っても、モデルの潜在的な状態を信用せず、書き留めてください。これにより、再起動や圧縮を越えてメモリの一貫性が保たれます。
圧縮前の自動メモリフラッシュ
OpenClawはトークンの使用状況を監視し、セッションが圧縮のしきい値に近づくと、サイレントターンを挿入します。これにより、エージェントは切り捨てが発生する前に永続的なメモをディスクにダンプできます。
agents.defaults.compaction.memoryFlushによって制御されます(デフォルトで有効)。- デフォルトのしきい値:
softThresholdTokens = 4000、reserveTokensFloor = 20000。contextWindow - reserveTokensFloor - softThresholdTokensを超えると、圧縮サイクルごとに1回フラッシュが実行されます。 - フラッシュターンには、エージェントに
memory/YYYY-MM-DD.mdへの書き込みを指示し、保存するものがなければNO_REPLYで応答するように促すシステムプロンプトとユーザープロンプトの両方が含まれています。そのため、ユーザーがこのハウスキーピングを目にすることはありません。 - フラッシュにはワークスペースが書き込み可能である必要があります。
workspaceAccess: "ro"でサンドボックス化すると、このイベントはスキップされます。フラッシュが実行されていない疑いがある場合は、openclaw statusまたは/statusを確認してください。
ベクトルメモリ検索とプロバイダーの選択
OpenClawのメモリプラグイン(デフォルトではmemory-core)はMarkdownをインデックス化し、エージェントがセマンティックリコールを実行できるようにします。
- プロバイダーの自動選択:ゲートウェイはまず
local(ローカルモデルのパスが存在する場合)を試し、次にopenai、gemini、voyage、mistralを試します。どの認証情報も解決されない場合、メモリ検索は設定されるまで無効のままになります。 - ローカル優先のオプション:ホストされたAPIを避けるには、
memorySearch.provider = "local"または"ollama"に設定します。Ollamaモードは、自身のノード上の/api/embeddingsにアクセスします。必要であれば、プレースホルダーのAPIキーがローカルポリシーを満たします。 - 追加コンテンツ:
memorySearch.extraPathsを使用すると、デフォルトのmemory/**/*.mdツリー外のMarkdown(およびGemini embedding 2では、選択した画像/音声)を取り込むことができます。 - スコープ制御:メモリ検索の結果は、
memorySearch.scopeで許可されたセッションでのみ表示されます。デフォルトはDMのみです。意図的に共有リコールが必要な場合を除き、グループチャネルは拒否してください。
大規模なメモリアーカイブのためのQMDサイドカー
より豊富なランキングやマルチモーダルリコールを必要とするチームのために、OpenClawはインデックス作成をQMDに引き渡すことができます。QMDは、BM25 + ベクトル + 再ランキングを組み合わせたオープンソースのBunサイドカーです。
memory.backend = "qmd"でオプトインします。OpenClawは~/.openclaw/agents/<id>/qmd/の下でサイドカーを管理し、qmd update/qmd embedを処理し、QMDが失敗した場合は組み込みのSQLiteインデクサーで再試行します。- 要件:
qmdCLIを別途インストールし、Bunと拡張機能サポート付きのSQLiteビルドが存在することを確認し(Homebrewのsqliteで動作します)、macOS/LinuxまたはWSL2で実行します。 - QMDコレクションには、
MEMORY.md、memory/**/*.md、追加のディレクトリ、さらにはmemory.qmd.sessions.enabled = trueの場合にはサニタイズされたセッショントランスクリプトを含めることができます。 - 検索は
qmd search --json(デフォルト)経由で実行され、ビルドがフラグを拒否した場合はqmd queryにフォールバックします。最初のクエリでGGUFモデルがダウンロードされる場合があります。OpenClawはXDG_CONFIG_HOME/XDG_CACHE_HOMEを自動的に設定するため、キャッシュはエージェント固有のままです。
オペレータープレイブック
- メモリファイルをコードのように扱う:ディスクの問題から回復できるように、ワークスペースと一緒にバージョン管理またはバックアップします。
- サイレントフラッシュを監査する:詳細モードを有効にするか、
openclaw status --allを監視して、圧縮+フラッシュサイクルがいつトリガーされるかを確認します。 - 埋め込みを手頃な価格に保つ:ホストされた埋め込みが高すぎる場合は、
memorySearch.provider = "local"を固定するか、Ollamaを使用します。ドキュメントでは、リモートプロバイダーがそれぞれのキーに対して請求することが強調されています。 - 露出を制限する:
memorySearch.scope(グループチャネルを拒否)を厳格化し、偶発的な情報漏洩を防ぐために、長期的なメモはプライベートセッションにのみ保存します。 - QMDが有効な場合はウォームアップする:アップグレード後、エージェントのXDGディレクトリ下で
qmd update && qmd embedを実行して、最初のライブクエリが自動化をブロックしないようにします。
結論
最新のOpenClawドキュメントでは、メモリ管理が簡単になります。Markdownファイルを整理し、圧縮前に自動フラッシュを実行させ、明示的なプロバイダーでベクトル検索を設定し、より豊富なリコールが必要になったらQMDに移行します。これらの制御を導入することで、長時間実行されるエージェントは、秘密情報を漏洩したり、埋め込みの予算を使い果たしたりすることなく、コンテキストを維持できます。
AI受付を数分で稼働。
眠らないAIでフロントデスクを拡張しましょう。Solveaは複数チャネルの問い合わせに対応し、予約を自動でカレンダーに登録し、24時間機会損失を防ぎます。
よくある質問
プロジェクトの途中でOpenClawがコンテキストを失わないようにするにはどうすればよいですか?
圧縮前のフラッシュがmemory/YYYY-MM-DD.mdに書き込めるように、ワークスペースが書き込み可能であることを確認し、潜在的なリコールを期待するのではなく、重要な詳細を追加するようにエージェントに指示してください。圧縮とメモリフラッシュはセーフティネットであり、明示的なメモの代わりにはなりません。
ホストされた埋め込みに料金を支払わずにメモリ検索を実行できますか?
はい。デバイス上で実行するには、memorySearch.provider = "local"(node-llama-cpp)または"ollama"に設定します。OpenAI/Geminiの請求を回避しながら、共有Markdown用にextraPathsを追加することもできます。
QMDバックエンドはいつ有効にすべきですか?
メモリセットが単純なMarkdownの埋め込みを超えて大きくなった場合(例:数万のスニペット、数GBのアーカイブ、またはより高い精度のためにBM25 + 再ランキングが必要な場合)にQMDを使用します。QMDが利用できない場合、OpenClawは自動的に組み込みのインデクサーにフォールバックするため、安全に試すことができます。






