Technical reference

メモリ設定リファレンス

このページでは、OpenClaw メモリ検索のすべての設定項目を一覧します。概念的な概要については、次を参照してください。

特に記載がない限り、すべてのメモリ検索設定は openclaw.jsonagents.defaults.memorySearch 配下にあります。


プロバイダーの選択

キー デフォルト 説明
provider string "openai" bedrockdeepinfrageminigithub-copilotlocalmistralollamaopenaiopenai-compatiblevoyage などの埋め込みアダプター ID。api がメモリ埋め込みアダプターまたは OpenAI 互換モデル API を指す、設定済みの models.providers.<id> も指定できます
model string プロバイダーのデフォルト 埋め込みモデル名
fallback string "none" プライマリが失敗した場合のフォールバックアダプター ID
enabled boolean true メモリ検索を有効または無効にします

provider が設定されていない場合、OpenClaw は OpenAI 埋め込みを使用します。Gemini、Voyage、Mistral、DeepInfra、Bedrock、GitHub Copilot、 Ollama、ローカル GGUF モデル、または OpenAI 互換の /v1/embeddings エンドポイントを使用するには、provider を明示的に設定してください。 まだ provider: "auto" となっているレガシー設定は openai に解決されます。

provider が未設定の場合、レガシーの provider: "auto" が存在する場合、または provider: "none" が意図的に FTS のみのモードを選択している場合、埋め込みが利用できなくても、メモリリコールは語彙的な FTS ランキングを引き続き使用できます。

明示的な非ローカルプロバイダーは失敗時に閉じます。memorySearch.provider に OpenAI、Gemini、Voyage、Mistral、 Bedrock、GitHub Copilot、DeepInfra、Ollama、LM Studio、または OpenAI 互換の カスタムプロバイダーなど、具体的なリモートバックエンドのプロバイダーを設定し、そのプロバイダーが実行時に利用できない場合、memory_search は黙って FTS のみのリコールを使用する代わりに、利用不可の結果を返します。 プロバイダーまたは認証設定を修正するか、到達可能なプロバイダーに切り替えるか、意図的に FTS のみのリコールを使いたい場合は provider: "none" を設定してください。

カスタムプロバイダー ID

memorySearch.provider は、ollama などのメモリ専用プロバイダーアダプター、または openai-responses / openai-completions などの OpenAI 互換モデル API 用に、カスタムの models.providers.<id> エントリを指すことができます。OpenClaw は、エンドポイント、認証、モデルプレフィックス処理のためにカスタムプロバイダー ID を保持しながら、埋め込みアダプター用にそのプロバイダーの api 所有者を解決します。これにより、マルチ GPU またはマルチホスト構成で、メモリ埋め込みを特定のローカルエンドポイントに専用化できます。

json5
{  models: {    providers: {      "ollama-5080": {        api: "ollama",        baseUrl: "http://gpu-box.local:11435",        apiKey: "ollama-local",        models: [{ id: "qwen3-embedding:0.6b" }],      },    },  },  agents: {    defaults: {      memorySearch: {        provider: "ollama-5080",        model: "qwen3-embedding:0.6b",      },    },  },}

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

リモートエンドポイント設定

グローバルな OpenAI チャット認証情報を継承すべきでない、汎用の OpenAI 互換 /v1/embeddings サーバーには provider: "openai-compatible" を使用します。

remote.baseUrlstring

カスタム API ベース URL。

remote.apiKeystring

API キーを上書きします。

remote.headersobject

追加の HTTP ヘッダー(プロバイダーのデフォルトとマージ)。

json5
{  agents: {    defaults: {      memorySearch: {        provider: "openai-compatible",        model: "text-embedding-3-small",        remote: {          baseUrl: "https://api.example.com/v1/",          apiKey: "YOUR_KEY",        },      },    },  },}

プロバイダー固有の設定

Gemini
キー デフォルト 説明
model string gemini-embedding-001 gemini-embedding-2-preview もサポート
outputDimensionality number 3072 Embedding 2 の場合: 768、1536、または 3072
OpenAI 互換の入力タイプ

OpenAI 互換の埋め込みエンドポイントは、プロバイダー固有の input_type リクエストフィールドにオプトインできます。これは、クエリ埋め込みとドキュメント埋め込みで異なるラベルを必要とする非対称埋め込みモデルに有用です。

キー デフォルト 説明
inputType string 未設定 クエリ埋め込みとドキュメント埋め込みで共有する input_type
queryInputType string 未設定 クエリ時の input_type; inputType を上書き
documentInputType string 未設定 インデックス/ドキュメントの input_type; inputType を上書き
json5
{  agents: {    defaults: {      memorySearch: {        provider: "openai-compatible",        remote: {          baseUrl: "https://embeddings.example/v1",          apiKey: "${EMBEDDINGS_API_KEY}",        },        model: "asymmetric-embedder",        queryInputType: "query",        documentInputType: "passage",      },    },  },}

これらの値を変更すると、プロバイダーバッチインデックス作成の埋め込みキャッシュ ID に影響します。上流モデルがラベルを異なるものとして扱う場合は、メモリの再インデックスを行ってください。

Bedrock

Bedrock 埋め込み設定

Bedrock は AWS SDK のデフォルト認証情報チェーンを使用します。API キーは不要です。OpenClaw が Bedrock 対応のインスタンスロールを持つ EC2 上で実行されている場合は、プロバイダーとモデルを設定するだけです。

json5
{  agents: {    defaults: {      memorySearch: {        provider: "bedrock",        model: "amazon.titan-embed-text-v2:0",      },    },  },}
キー デフォルト 説明
model string amazon.titan-embed-text-v2:0 任意の Bedrock 埋め込みモデル ID
outputDimensionality number モデルのデフォルト Titan V2 の場合: 256、512、または 1024

サポートされているモデル(ファミリー検出と次元数のデフォルトを含む):

Model 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 認証情報解決順序を使用します。

  1. 環境変数(AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY
  2. SSO トークンキャッシュ
  3. Web アイデンティティトークン認証情報
  4. 共有認証情報ファイルと設定ファイル
  5. ECS または EC2 メタデータ認証情報

リージョンは、AWS_REGIONAWS_DEFAULT_REGIONamazon-bedrock プロバイダーの baseUrl から解決されるか、デフォルトで us-east-1 になります。

IAM 権限: IAM ロールまたはユーザーには次が必要です。

json
{  "Effect": "Allow",  "Action": "bedrock:InvokeModel",  "Resource": "*"}

最小権限にするには、InvokeModel のスコープを特定のモデルに限定します。

Code
arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0
Local (GGUF + llama.cpp)
キー デフォルト 説明
local.modelPath string 自動ダウンロード GGUF モデルファイルへのパス
local.modelCacheDir string node-llama-cpp のデフォルト ダウンロード済みモデルのキャッシュディレクトリ
local.contextSize number | "auto" 4096 埋め込みコンテキストのコンテキストウィンドウサイズ。4096 は一般的なチャンク(128〜512 トークン)をカバーしつつ、重み以外の VRAM を抑えます。制約のあるホストでは 1024〜2048 に下げます。"auto" はモデルの学習時の最大値を使用します。8B+ モデルでは推奨されません(Qwen3-Embedding-8B: 40,960 トークン → 約 32 GB VRAM、4096 では約 8.8 GB)。

まず公式 llama.cpp プロバイダーをインストールします: openclaw plugins install @openclaw/llama-cpp-provider。 デフォルトモデル: embeddinggemma-300m-qat-Q8_0.gguf(約 0.6 GB、自動ダウンロード)。ソースチェックアウトでは、引き続きネイティブビルドの承認が必要です: pnpm approve-builds の後に pnpm rebuild node-llama-cpp

Gateway が使用するものと同じプロバイダーパスを検証するには、スタンドアロン CLI を使用します。

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

ローカル GGUF 埋め込みには provider: "local" を明示的に設定します。hf: と HTTP(S) モデル参照は明示的なローカル設定でサポートされていますが、デフォルトプロバイダーは変更されません。

インライン埋め込みのタイムアウト

sync.embeddingBatchTimeoutSecondsnumber

メモリーインデックス作成中のインライン埋め込みバッチのタイムアウトを上書きします。

未設定の場合はプロバイダーのデフォルトを使用します。localollamalmstudio などのローカル/セルフホストプロバイダーでは 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 (diversity)

キー デフォルト 説明
mmr.enabled boolean false MMR 再ランキングを有効化
mmr.lambda number 0.7 0 = 最大多様性、1 = 最大関連性

Temporal decay (recency)

キー デフォルト 説明
temporalDecay.enabled boolean false 新しさブーストを有効化
temporalDecay.halfLifeDays number 30 N 日ごとにスコアが半減

エバーグリーンファイル(MEMORY.mdmemory/ 内の日付なしファイル)は減衰されません。

完全な例

json5
{  agents: {    defaults: {      memorySearch: {        query: {          hybrid: {            vectorWeight: 0.7,            textWeight: 0.3,            mmr: { enabled: true, lambda: 0.7 },            temporalDecay: { enabled: true, halfLifeDays: 30 },          },        },      },    },  },}

追加メモリパス

キー 説明
extraPaths string[] インデックス対象にする追加のディレクトリまたはファイル
json5
{  agents: {    defaults: {      memorySearch: {        extraPaths: ["../team-docs", "/srv/shared-notes"],      },    },  },}

パスは絶対パスまたはワークスペース相対パスにできます。ディレクトリは .md ファイルを再帰的にスキャンします。シンボリックリンクの扱いは有効なバックエンドによって異なります。組み込みエンジンはシンボリックリンクを無視し、QMD は基盤となる QMD スキャナーの挙動に従います。

エージェントスコープのエージェント横断トランスクリプト検索には、memory.qmd.paths ではなく agents.list[].memorySearch.qmd.extraCollections を使用します。これらの追加コレクションは同じ { path, name, pattern? } 形状に従いますが、エージェントごとにマージされ、パスが現在のワークスペース外を指す場合でも明示的な共有名を保持できます。同じ解決済みパスが memory.qmd.pathsmemorySearch.qmd.extraCollections の両方に現れる場合、QMD は最初のエントリを保持し、重複をスキップします。


マルチモーダルメモリ(Gemini)

Gemini Embedding 2 を使用して、Markdown と一緒に画像と音声をインデックスします。

キー デフォルト 説明
multimodal.enabled boolean false マルチモーダルインデックスを有効にする
multimodal.modalities string[] -- ["image"]["audio"]、または ["all"]
multimodal.maxFileBytes number 10000000 インデックス対象の最大ファイルサイズ

対応形式: .jpg.jpeg.png.webp.gif.heic.heif(画像)、.mp3.wav.ogg.opus.m4a.aac.flac(音声)。


埋め込みキャッシュ

キー デフォルト 説明
cache.enabled boolean true チャンク埋め込みを 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 -- バッチタイムアウト

openaigeminivoyage で利用できます。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 再インデックスのメッセージしきい値

セッショントランスクリプトのヒットも tools.sessions.visibility に従います。デフォルトの tree 可視性では、現在のセッションとそのセッションが生成したセッションだけが公開されます。DM など、別のセッションから同じエージェントの無関係な Gateway ディスパッチセッションを想起するには、意図的に可視性を agent に広げてください(エージェントをまたいだ想起も必要で、エージェント間ポリシーが許可している場合のみ all)。

以下の例では、これらの設定を agents.defaults の下に置いています。1 つのエージェントだけがセッショントランスクリプトをインデックス化して検索すべき場合は、エージェントごとのオーバーライドで同等の memorySearch 設定を適用することもできます。

同じエージェントでの Gateway から DM への想起の場合:

組み込みバックエンド

json5
{  agents: {    defaults: {      memorySearch: {        experimental: { sessionMemory: true },        sources: ["memory", "sessions"],      },    },  },  tools: {    sessions: { visibility: "agent" },  },}

QMD バックエンド

json5
{  agents: {    defaults: {      memorySearch: {        experimental: { sessionMemory: true },        sources: ["memory", "sessions"],      },    },  },  memory: {    backend: "qmd",    qmd: {      sessions: { enabled: true },    },  },  tools: {    sessions: { visibility: "agent" },  },}

QMD を使用する場合、agents.defaults.memorySearch.experimental.sessionMemorysources: ["sessions"] だけでは、トランスクリプトは QMD にエクスポートされません。あわせて memory.qmd.sessions.enabled: true も設定してください。


SQLite ベクトル高速化 (sqlite-vec)

キー デフォルト 説明
store.vector.enabled boolean true ベクトルクエリに sqlite-vec を使用する
store.vector.extensionPath string 同梱 sqlite-vec パスを上書きする

sqlite-vec が利用できない場合、OpenClaw は自動的にプロセス内のコサイン類似度にフォールバックします。


インデックスストレージ

組み込みメモリーインデックスは、各エージェントの OpenClaw SQLite データベース agents/<agentId>/agent/openclaw-agent.sqlite に保存されます。

キー デフォルト 説明
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
rerank boolean -- QMD の再ランキングをスキップするには、QMD 2.1+ で searchMode: "query" とともに false に設定します
includeDefaultMemory boolean true MEMORY.md + memory/**/*.md を自動インデックス化します
paths[] array -- 追加パス: { name, path, pattern? }
sessions.enabled boolean false セッショントランスクリプトを QMD にエクスポートします
sessions.retentionDays number -- トランスクリプトの保持期間
sessions.exportDir string -- エクスポートディレクトリ

searchMode: "search" は語彙/BM25 のみです。OpenClaw はそのモードでは、memory status --deep 中も含め、セマンティックベクトルの準備状況プローブや QMD 埋め込みメンテナンスを実行しません。vsearchquery は引き続き QMD ベクトルの準備状況と埋め込みを必要とします。

rerank: false は QMD の query モードだけを変更し、QMD 2.1 以降が必要です。直接 CLI モードでは OpenClaw は --no-rerank を渡します。mcporter ベースの MCP モードでは、QMD の統合クエリツールに rerank: false を渡します。QMD のデフォルトのクエリ再ランキング動作を使用するには未設定のままにしてください。

OpenClaw は現在の QMD コレクションと MCP クエリ形状を優先しますが、必要に応じて互換性のあるコレクションパターンフラグや古い MCP ツール名を試すことで、古い QMD リリースも動作するようにしています。QMD が複数のコレクションフィルターのサポートを通知している場合、同一ソースのコレクションは 1 つの QMD プロセスで検索されます。古い QMD ビルドでは、コレクションごとの互換パスが維持されます。同一ソースとは、永続メモリーコレクションがまとめてグループ化される一方、セッショントランスクリプトコレクションは別グループのまま残り、ソースの多様化が引き続き両方の入力を持つことを意味します。

更新スケジュール
キー デフォルト 説明
update.interval string 5m 更新間隔
update.debounceMs number 15000 ファイル変更をデバウンス
update.onBoot boolean true 長時間実行される QMD マネージャーが開いたときに更新する。即時の起動時更新をスキップするには false に設定
update.startup string off 任意の gateway 起動時 QMD 初期化: offidle、または 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 検索結果を受信できるかを制御します。session.sendPolicy と同じスキーマです:

json5
{  memory: {    qmd: {      scope: {        default: "deny",        rules: [{ action: "allow", match: { chatType: "direct" } }],      },    },  },}

同梱のデフォルトではダイレクトおよびチャンネルセッションを許可し、グループは引き続き拒否します。

デフォルトは DM のみです。match.keyPrefix は正規化されたセッションキーに一致します。match.rawKeyPrefixagent:<id>: を含む生キーに一致します。

引用

memory.citations はすべてのバックエンドに適用されます:

動作
auto (デフォルト) スニペットに Source: <path#line> フッターを含める
on 常にフッターを含める
off フッターを省略する (パスは内部的に agent に渡されます)

gateway 起動時 QMD 初期化が有効な場合、OpenClaw は対象エージェントに対してのみ QMD を起動します。update.onBoot が true で、interval/embed メンテナンスが構成されていない場合、startup は起動時更新用にワンショットマネージャーを使用し、それを閉じます。update または embed interval が構成されている場合、startup は長時間実行される QMD マネージャーを開き、watcher と interval timer を所有できるようにします。update.onBoot: false は即時の起動時更新のみをスキップします。

完全な QMD 例

json5
{  memory: {    backend: "qmd",    citations: "auto",    qmd: {      includeDefaultMemory: true,      update: { interval: "5m", debounceMs: 15000 },      limits: { maxResults: 6, timeoutMs: 4000 },      scope: {        default: "deny",        rules: [{ action: "allow", match: { chatType: "direct" } }],      },      paths: [{ name: "docs", path: "~/notes", pattern: "**/*.md" }],    },  },}

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 サブエージェントモデル上書き
phases.deep.maxPromotedSnippetTokens number 160 MEMORY.md に昇格された各短期 recall スニペットから保持される推定最大トークン数。来歴メタデータは表示されたままです

json5
{  plugins: {    entries: {      "memory-core": {        subagent: {          allowModelOverride: true,          allowedModels: ["anthropic/claude-sonnet-4-6"],        },        config: {          dreaming: {            enabled: true,            frequency: "0 3 * * *",            model: "anthropic/claude-sonnet-4-6",          },        },      },    },  },}

関連

Was this useful?
On this page

On this page