Sessions and memory

組み込みメモリエンジン

組み込みエンジンはデフォルトのメモリバックエンドです。メモリインデックスを エージェントごとの SQLite データベースに保存し、はじめるための追加依存関係は不要です。

提供するもの

  • FTS5 全文インデックス(BM25 スコアリング)によるキーワード検索
  • 対応プロバイダーの埋め込みによるベクトル検索
  • 最良の結果を得るために両方を組み合わせるハイブリッド検索
  • 中国語、日本語、韓国語向けの trigram トークン化によるCJK 対応
  • データベース内ベクトルクエリ向けの sqlite-vec アクセラレーション(任意)。

はじめに

OpenAI、Gemini、Voyage、Mistral、DeepInfra の API キーがある場合、組み込み エンジンが自動検出してベクトル検索を有効にします。設定は不要です。

プロバイダーを明示的に設定するには:

{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai",
      },
    },
  },
}

埋め込みプロバイダーがない場合、利用できるのはキーワード検索のみです。

組み込みのローカル埋め込みプロバイダーを強制するには、任意の node-llama-cpp ランタイムパッケージを OpenClaw の隣にインストールし、local.modelPath が GGUF ファイルを指すようにします:

{
  agents: {
    defaults: {
      memorySearch: {
        provider: "local",
        fallback: "none",
        local: {
          modelPath: "~/.node-llama-cpp/models/embeddinggemma-300m-qat-Q8_0.gguf",
        },
      },
    },
  },
}

対応する埋め込みプロバイダー

プロバイダー ID 自動検出 注記
OpenAI openai はい デフォルト: text-embedding-3-small
Gemini gemini はい マルチモーダル(画像 + 音声)対応
Voyage voyage はい
Mistral mistral はい
DeepInfra deepinfra はい デフォルト: BAAI/bge-m3
Ollama ollama いいえ ローカル。明示的に設定
Local local はい(最初) 任意の node-llama-cpp ランタイム

自動検出は、API キーを解決できる最初のプロバイダーを、表示された 順序で選びます。上書きするには memorySearch.provider を設定します。

インデックス作成の仕組み

OpenClaw は MEMORY.mdmemory/*.md をチャンク(約 400 トークン、 80 トークンのオーバーラップ)に分割してインデックス化し、エージェントごとの SQLite データベースに保存します。

  • インデックスの場所: ~/.openclaw/memory/<agentId>.sqlite
  • ストレージメンテナンス: SQLite WAL サイドカーは、定期チェックポイントと シャットダウン時チェックポイントで制限されます。
  • ファイル監視: メモリファイルの変更により、デバウンスされた再インデックス(1.5 秒)がトリガーされます。
  • 自動再インデックス: 埋め込みプロバイダー、モデル、またはチャンク設定が 変更されると、インデックス全体が自動的に再構築されます。
  • オンデマンド再インデックス: openclaw memory index --force

使用する場面

組み込みエンジンはほとんどのユーザーに適した選択肢です:

  • 追加依存関係なしで、そのまま動作します。
  • キーワード検索とベクトル検索を適切に処理します。
  • すべての埋め込みプロバイダーに対応しています。
  • ハイブリッド検索は、両方の検索アプローチの長所を組み合わせます。

再ランキング、クエリ拡張、またはワークスペース外のディレクトリをインデックス化する必要がある場合は、 QMD への切り替えを検討してください。

自動ユーザーモデリングを備えたセッション横断メモリが必要な場合は、 Honcho を検討してください。

トラブルシューティング

メモリ検索が無効ですか? openclaw memory status を確認してください。プロバイダーが 検出されない場合は、明示的に設定するか API キーを追加してください。

ローカルプロバイダーが検出されませんか? ローカルパスが存在することを確認し、次を実行します:

openclaw memory status --deep --agent main
openclaw memory index --force --agent main

スタンドアロンの CLI コマンドと Gateway は、どちらも同じ local プロバイダー ID を使用します。 プロバイダーが auto に設定されている場合、memorySearch.local.modelPath が既存のローカルファイルを指しているときにのみ、 ローカル埋め込みが最初に考慮されます。

古い結果が表示されますか? 再構築するには openclaw memory index --force を実行してください。まれなエッジケースでは、ウォッチャーが変更を見逃すことがあります。

sqlite-vec が読み込まれませんか? OpenClaw は自動的にプロセス内のコサイン類似度にフォールバックします。 openclaw memory status --deep はローカルベクトルストアを埋め込みプロバイダーとは別に報告するため、 Vector store: unavailable は sqlite-vec の読み込みを示し、Embeddings: unavailable はプロバイダー/認証 またはモデルの準備状態を示します。具体的な読み込みエラーはログで確認してください。

設定

埋め込みプロバイダーのセットアップ、ハイブリッド検索のチューニング(重み、MMR、時間的 減衰)、バッチインデックス作成、マルチモーダルメモリ、sqlite-vec、追加パス、その他すべての 設定項目については、メモリ設定リファレンスを参照してください。

関連