このページでは、OpenClaw のメモリ検索に関するすべての設定項目を一覧します。概念的な概要については、以下を参照してください。Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
メモリの概要
メモリの仕組み。
組み込みエンジン
デフォルトの SQLite バックエンド。
QMD エンジン
ローカルファーストのサイドカー。
メモリ検索
検索パイプラインとチューニング。
Active memory
対話型セッション用のメモリサブエージェント。
openclaw.json の agents.defaults.memorySearch 配下にあります。
active memory 機能の切り替えとサブエージェント設定を探している場合、それは
memorySearch ではなく plugins.entries.active-memory 配下にあります。Active memory は 2 つのゲートモデルを使用します。- Plugin が有効化され、現在のエージェント ID を対象にしている必要がある
- リクエストが対象となる対話型の永続チャットセッションである必要がある
プロバイダーの選択
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
provider | string | 自動検出 | bedrock、deepinfra、gemini、github-copilot、local、mistral、ollama、openai、voyage などの埋め込みアダプター ID。api がそれらのアダプターのいずれかを指す設定済みの models.providers.<id> も指定できます |
model | string | プロバイダーのデフォルト | 埋め込みモデル名 |
fallback | string | "none" | プライマリが失敗したときのフォールバックアダプター ID |
enabled | boolean | true | メモリ検索を有効または無効にする |
自動検出の順序
provider が設定されていない場合、OpenClaw は最初に利用可能なものを選択します。
ollama はサポートされていますが、自動検出されません(明示的に設定してください)。
カスタムプロバイダー ID
memorySearch.provider はカスタム models.providers.<id> エントリを指すことができます。OpenClaw は埋め込みアダプター用にそのプロバイダーの api 所有者を解決しつつ、エンドポイント、認証、モデルプレフィックス処理にはカスタムプロバイダー ID を保持します。これにより、マルチ GPU またはマルチホスト構成で、特定のローカルエンドポイントにメモリ埋め込みを専用化できます。
API キーの解決
リモート埋め込みには API キーが必要です。Bedrock は代わりに AWS SDK のデフォルト認証情報チェーンを使用します(インスタンスロール、SSO、アクセスキー)。| プロバイダー | 環境変数 | 設定キー |
|---|---|---|
| Bedrock | AWS 認証情報チェーン | API キーは不要 |
| DeepInfra | DEEPINFRA_API_KEY | models.providers.deepinfra.apiKey |
| Gemini | GEMINI_API_KEY | models.providers.google.apiKey |
| GitHub Copilot | COPILOT_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKEN | デバイスログインによる認証プロファイル |
| Mistral | MISTRAL_API_KEY | models.providers.mistral.apiKey |
| Ollama | OLLAMA_API_KEY(プレースホルダー) | — |
| OpenAI | OPENAI_API_KEY | models.providers.openai.apiKey |
| Voyage | VOYAGE_API_KEY | models.providers.voyage.apiKey |
Codex OAuth はチャット/補完のみを対象としており、埋め込みリクエストには使用できません。
リモートエンドポイント設定
カスタム OpenAI 互換エンドポイント、またはプロバイダーのデフォルトを上書きする場合:カスタム API ベース URL。
API キーを上書きします。
追加の HTTP ヘッダー(プロバイダーのデフォルトとマージされます)。
プロバイダー固有の設定
Gemini
Gemini
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
model | string | gemini-embedding-001 | gemini-embedding-2-preview もサポートします |
outputDimensionality | number | 3072 | Embedding 2 の場合: 768、1536、または 3072 |
OpenAI 互換の入力タイプ
OpenAI 互換の入力タイプ
OpenAI 互換の埋め込みエンドポイントでは、プロバイダー固有の
これらの値を変更すると、プロバイダーのバッチインデックス作成における埋め込みキャッシュの同一性に影響します。上流モデルがラベルを異なるものとして扱う場合は、メモリの再インデックスを行う必要があります。
input_type リクエストフィールドを使用できます。これは、クエリ埋め込みとドキュメント埋め込みに異なるラベルを必要とする非対称埋め込みモデルで便利です。| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
inputType | string | 未設定 | クエリ埋め込みとドキュメント埋め込みで共有する input_type |
queryInputType | string | 未設定 | クエリ時の input_type。inputType を上書きします |
documentInputType | string | 未設定 | インデックス/ドキュメントの input_type。inputType を上書きします |
Bedrock
Bedrock
Bedrock 埋め込み設定
Bedrock は AWS SDK のデフォルト認証情報チェーンを使用します。API キーは不要です。OpenClaw が Bedrock 対応のインスタンスロールを持つ EC2 上で動作している場合は、プロバイダーとモデルを設定するだけです。| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
model | string | amazon.titan-embed-text-v2:0 | 任意の Bedrock 埋め込みモデル ID |
outputDimensionality | number | モデルのデフォルト | Titan V2 の場合: 256、512、または 1024 |
| モデル ID | プロバイダー | デフォルト次元 | 設定可能な次元 |
|---|---|---|---|
amazon.titan-embed-text-v2:0 | Amazon | 1024 | 256、512、1024 |
amazon.titan-embed-text-v1 | Amazon | 1536 | — |
amazon.titan-embed-g1-text-02 | Amazon | 1536 | — |
amazon.titan-embed-image-v1 | Amazon | 1024 | — |
amazon.nova-2-multimodal-embeddings-v1:0 | Amazon | 1024 | 256、384、1024、3072 |
cohere.embed-english-v3 | Cohere | 1024 | — |
cohere.embed-multilingual-v3 | Cohere | 1024 | — |
cohere.embed-v4:0 | Cohere | 1536 | 256-1536 |
twelvelabs.marengo-embed-3-0-v1:0 | TwelveLabs | 512 | — |
twelvelabs.marengo-embed-2-7-v1:0 | TwelveLabs | 1024 | — |
amazon.titan-embed-text-v1:2:8k)は、ベースモデルの設定を継承します。認証: Bedrock 認証は標準の AWS SDK 認証情報解決順序を使用します。- 環境変数(
AWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEY) - SSO トークンキャッシュ
- Web ID トークン認証情報
- 共有認証情報ファイルと設定ファイル
- ECS または EC2 メタデータ認証情報
AWS_REGION、AWS_DEFAULT_REGION、amazon-bedrock プロバイダーの baseUrl から解決されるか、デフォルトで us-east-1 になります。IAM 権限: IAM ロールまたはユーザーには次が必要です。InvokeModel のスコープを特定のモデルに限定します。ローカル (GGUF + node-llama-cpp)
ローカル (GGUF + node-llama-cpp)
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
local.modelPath | string | 自動ダウンロード | GGUF モデルファイルへのパス |
local.modelCacheDir | string | node-llama-cpp のデフォルト | ダウンロードされたモデルのキャッシュディレクトリ |
local.contextSize | number | "auto" | 4096 | 埋め込みコンテキストのコンテキストウィンドウサイズ。4096 は非重み VRAM を抑えつつ、一般的なチャンク (128–512 トークン) をカバーします。制約のあるホストでは 1024–2048 まで下げてください。"auto" はモデルの訓練時の最大値を使用します。8B+ モデルでは推奨されません (Qwen3-Embedding-8B: 40 960 トークン → 4096 で約 8.8 GB に対し、約 32 GB VRAM)。 |
embeddinggemma-300m-qat-Q8_0.gguf (約 0.6 GB、自動ダウンロード)。ソースチェックアウトでは、引き続きネイティブビルドの承認が必要です: pnpm approve-builds の後に pnpm rebuild node-llama-cpp。Gateway が使用するものと同じプロバイダーパスを検証するには、スタンドアロン CLI を使用します。provider が auto の場合、local.modelPath が既存のローカルファイルを指しているときにのみ local が選択されます。hf: および HTTP(S) モデル参照は provider: "local" で明示的に使用できますが、モデルがディスク上で利用可能になる前に auto がローカルを選択することはありません。インライン埋め込みタイムアウト
メモリのインデックス作成中に、インライン埋め込みバッチのタイムアウトを上書きします。未設定の場合はプロバイダーのデフォルトが使用されます。
local、ollama、lmstudio などのローカル/セルフホストプロバイダーでは 600 秒、ホスト型プロバイダーでは 120 秒です。ローカルの CPU バウンドな埋め込みバッチが正常だが遅い場合は、この値を増やしてください。ハイブリッド検索設定
すべてmemorySearch.query.hybrid の下にあります。
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled | boolean | true | ハイブリッド BM25 + ベクトル検索を有効化 |
vectorWeight | number | 0.7 | ベクトルスコアの重み (0-1) |
textWeight | number | 0.3 | BM25 スコアの重み (0-1) |
candidateMultiplier | number | 4 | 候補プールサイズの乗数 |
- MMR (多様性)
- 時間減衰 (新しさ)
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
mmr.enabled | boolean | false | MMR 再ランキングを有効化 |
mmr.lambda | number | 0.7 | 0 = 最大の多様性、1 = 最大の関連性 |
完全な例
追加メモリパス
| キー | 型 | 説明 |
|---|---|---|
extraPaths | string[] | インデックス作成対象にする追加のディレクトリまたはファイル |
.md ファイルを対象に再帰的にスキャンされます。シンボリックリンクの扱いは有効なバックエンドによって異なります。組み込みエンジンはシンボリックリンクを無視しますが、QMD は基盤となる QMD スキャナーの動作に従います。
エージェントスコープのクロスエージェントトランスクリプト検索には、memory.qmd.paths ではなく agents.list[].memorySearch.qmd.extraCollections を使用してください。これらの追加コレクションは同じ { path, name, pattern? } 形式に従いますが、エージェントごとにマージされ、パスが現在のワークスペース外を指している場合に明示的な共有名を保持できます。同じ解決済みパスが memory.qmd.paths と memorySearch.qmd.extraCollections の両方に現れる場合、QMD は最初のエントリを保持し、重複をスキップします。
マルチモーダルメモリ (Gemini)
Gemini Embedding 2 を使用して、Markdown と並べて画像と音声をインデックス作成します。| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
multimodal.enabled | boolean | false | マルチモーダルインデックス作成を有効化 |
multimodal.modalities | string[] | — | ["image"]、["audio"]、または ["all"] |
multimodal.maxFileBytes | number | 10000000 | インデックス作成対象の最大ファイルサイズ |
extraPaths 内のファイルにのみ適用されます。デフォルトのメモリルートは Markdown のみに限定されます。gemini-embedding-2-preview が必要です。fallback は "none" でなければなりません。.jpg, .jpeg, .png, .webp, .gif, .heic, .heif (画像); .mp3, .wav, .ogg, .opus, .m4a, .aac, .flac (音声)。
埋め込みキャッシュ
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
cache.enabled | boolean | false | チャンク埋め込みを SQLite にキャッシュ |
cache.maxEntries | number | 50000 | キャッシュされる埋め込みの最大数 |
バッチインデックス作成
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
remote.nonBatchConcurrency | number | 4 | 並列インライン埋め込み |
remote.batch.enabled | boolean | false | バッチ埋め込み API を有効化 |
remote.batch.concurrency | number | 2 | 並列バッチジョブ |
remote.batch.wait | boolean | true | バッチ完了を待機 |
remote.batch.pollIntervalMs | number | — | ポーリング間隔 |
remote.batch.timeoutMinutes | number | — | バッチタイムアウト |
openai, gemini, voyage で利用できます。大規模なバックフィルでは、OpenAI バッチが通常最速で最も低コストです。
remote.nonBatchConcurrency は、ローカル/セルフホストのプロバイダー、およびプロバイダーのバッチ API が有効でない場合のホスト型プロバイダーで使用されるインライン埋め込み呼び出しを制御します。Ollama は、小さめのローカルホストに過負荷をかけないよう、非バッチインデックス作成ではデフォルトで 1 になります。より大きなマシンでは高い値を設定してください。
これは、インライン埋め込み呼び出しのタイムアウトを制御する sync.embeddingBatchTimeoutSeconds とは別です。
セッションメモリ検索 (実験的)
セッショントランスクリプトをインデックス化し、memory_search 経由で表示します。
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
experimental.sessionMemory | boolean | false | セッションインデックス作成を有効化 |
sources | string[] | ["memory"] | トランスクリプトを含めるには "sessions" を追加 |
sync.sessions.deltaBytes | number | 100000 | 再インデックス作成のバイトしきい値 |
sync.sessions.deltaMessages | number | 50 | 再インデックス作成のメッセージしきい値 |
SQLite ベクトル高速化 (sqlite-vec)
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
store.vector.enabled | boolean | true | ベクトルクエリに sqlite-vec を使用 |
store.vector.extensionPath | string | 同梱 | sqlite-vec パスを上書き |
インデックスストレージ
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
store.path | string | ~/.openclaw/memory/{agentId}.sqlite | インデックスの場所 ({agentId} トークンをサポート) |
store.fts.tokenizer | string | unicode61 | FTS5 トークナイザー (unicode61 または trigram) |
QMD バックエンド設定
有効にするにはmemory.backend = "qmd" を設定します。すべての QMD 設定は memory.qmd の下にあります。
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
command | string | qmd | QMD 実行可能ファイルのパス。サービスの PATH がシェルと異なる場合は絶対パスを設定 |
searchMode | string | search | 検索コマンド: search, vsearch, query |
includeDefaultMemory | boolean | true | MEMORY.md + memory/**/*.md を自動インデックス化 |
paths[] | array | — | 追加パス: { name, path, pattern? } |
sessions.enabled | boolean | false | セッショントランスクリプトをインデックス化 |
sessions.retentionDays | number | — | トランスクリプトの保持期間 |
sessions.exportDir | string | — | エクスポートディレクトリ |
searchMode: "search" は字句/BM25 のみです。OpenClaw はそのモードでは、memory status --deep の実行中も含め、セマンティックベクトルの準備状況プローブや QMD 埋め込みメンテナンスを実行しません。vsearch と query は引き続き QMD ベクトルの準備状況と埋め込みを必要とします。
OpenClaw は現在の QMD コレクションと MCP クエリ形式を優先しますが、必要に応じて互換性のあるコレクションパターンフラグや古い MCP ツール名を試すことで、古い QMD リリースも動作し続けるようにしています。QMD が複数のコレクションフィルター対応を通知する場合、同一ソースのコレクションは 1 つの QMD プロセスで検索されます。古い QMD ビルドでは、コレクションごとの互換性パスが維持されます。同一ソースとは、永続メモリコレクションがまとめてグループ化される一方で、セッショントランスクリプトコレクションは別グループのままになり、ソースの多様化で両方の入力が引き続き使われることを意味します。
QMD モデルの上書きは OpenClaw 設定ではなく QMD 側に残ります。QMD のモデルをグローバルに上書きする必要がある場合は、Gateway ランタイム環境で
QMD_EMBED_MODEL、QMD_RERANK_MODEL、QMD_GENERATE_MODEL などの環境変数を設定してください。更新スケジュール
更新スケジュール
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
update.interval | string | 5m | 更新間隔 |
update.debounceMs | number | 15000 | ファイル変更のデバウンス |
update.onBoot | boolean | true | 長期稼働の QMD マネージャーが開いたときに更新する。オプトインの起動時更新も制御 |
update.startup | string | off | 任意の Gateway 起動時更新: off、idle、または immediate |
update.startupDelayMs | number | 120000 | startup: "idle" 更新が実行されるまでの遅延 |
update.waitForBootSync | boolean | false | 初回更新が完了するまでマネージャーのオープンをブロック |
update.embedInterval | string | — | 個別の埋め込み周期 |
update.commandTimeoutMs | number | — | QMD コマンドのタイムアウト |
update.updateTimeoutMs | number | — | QMD 更新操作のタイムアウト |
update.embedTimeoutMs | number | — | QMD 埋め込み操作のタイムアウト |
制限
制限
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
limits.maxResults | number | 6 | 最大検索結果数 |
limits.maxSnippetChars | number | — | スニペット長を制限 |
limits.maxInjectedChars | number | — | 注入される合計文字数を制限 |
limits.timeoutMs | number | 4000 | 検索タイムアウト |
スコープ
スコープ
どのセッションが QMD 検索結果を受け取れるかを制御します。同梱のデフォルトでは、グループは引き続き拒否しながら、ダイレクトセッションとチャンネルセッションを許可します。デフォルトは DM のみです。
session.sendPolicy と同じスキーマです。match.keyPrefix は正規化されたセッションキーに一致します。match.rawKeyPrefix は agent:<id>: を含む生のキーに一致します。引用
引用
memory.citations はすべてのバックエンドに適用されます。| 値 | 動作 |
|---|---|
auto (デフォルト) | スニペットに Source: <path#line> フッターを含める |
on | 常にフッターを含める |
off | フッターを省略する(パスは内部的にエージェントへ渡される) |
完全な QMD 例
Dreaming
Dreaming はagents.defaults.memorySearch ではなく、plugins.entries.memory-core.config.dreaming の下で設定します。
Dreaming は 1 つのスケジュールされたスイープとして実行され、実装の詳細として内部の light/deep/REM フェーズを使用します。
概念的な動作とスラッシュコマンドについては、Dreaming を参照してください。
ユーザー設定
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled | boolean | false | Dreaming 全体を有効または無効にする |
frequency | string | 0 3 * * * | 完全な Dreaming スイープの任意の Cron 周期 |
model | string | デフォルトモデル | 任意の Dream Diary サブエージェントモデル上書き |
例
- Dreaming はマシン状態を
memory/.dreams/に書き込みます。 - Dreaming は人間が読めるナラティブ出力を
DREAMS.md(または既存のdreams.md)に書き込みます。 dreaming.modelは既存の Plugin サブエージェント信頼ゲートを使用します。有効にする前にplugins.entries.memory-core.subagent.allowModelOverride: trueを設定してください。- Dream Diary は、設定されたモデルが利用できない場合、セッションのデフォルトモデルで 1 回再試行します。信頼または許可リストの失敗はログに記録され、黙って再試行されることはありません。
- light/deep/REM フェーズのポリシーとしきい値は内部動作であり、ユーザー向け設定ではありません。