Technical reference

メモリ設定リファレンス

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

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


プロバイダーの選択

キー デフォルト 説明
provider string 自動検出 bedrockdeepinfrageminigithub-copilotlocalmistralollamaopenaivoyage などの埋め込みアダプター ID。api がそれらのアダプターのいずれかを指す設定済みの models.providers.<id> も指定できます
model string プロバイダーのデフォルト 埋め込みモデル名
fallback string "none" プライマリが失敗したときのフォールバックアダプター ID
enabled boolean true メモリ検索を有効または無効にする

自動検出の順序

provider が設定されていない場合、OpenClaw は最初に利用可能なものを選択します。

  • local

    memorySearch.local.modelPath が設定され、ファイルが存在する場合に選択されます。

  • github-copilot

    GitHub Copilot トークンを解決できる場合に選択されます(環境変数または認証プロファイル)。

  • openai

    OpenAI キーを解決できる場合に選択されます。

  • gemini

    Gemini キーを解決できる場合に選択されます。

  • voyage

    Voyage キーを解決できる場合に選択されます。

  • mistral

    Mistral キーを解決できる場合に選択されます。

  • deepinfra

    DeepInfra キーを解決できる場合に選択されます。

  • bedrock

    AWS SDK の認証情報チェーンを解決できる場合に選択されます(インスタンスロール、アクセスキー、プロファイル、SSO、Web ID、共有設定)。

  • ollama はサポートされていますが、自動検出されません(明示的に設定してください)。

    カスタムプロバイダー ID

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

    {
      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 互換エンドポイント、またはプロバイダーのデフォルトを上書きする場合:

    remote.baseUrlstring

    カスタム API ベース URL。

    remote.apiKeystring

    API キーを上書きします。

    remote.headersobject

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

    {
      agents: {
        defaults: {
          memorySearch: {
            provider: "openai",
            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_typeinputType を上書きします
    documentInputType string 未設定 インデックス/ドキュメントの input_typeinputType を上書きします
    {
      agents: {
        defaults: {
          memorySearch: {
            provider: "openai",
            remote: {
              baseUrl: "https://embeddings.example/v1",
              apiKey: "env:EMBEDDINGS_API_KEY",
            },
            model: "asymmetric-embedder",
            queryInputType: "query",
            documentInputType: "passage",
          },
        },
      },
    }
    

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

    Bedrock

    Bedrock 埋め込み設定

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

    {
      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

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

    モデル 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 ID トークン認証情報
    4. 共有認証情報ファイルと設定ファイル
    5. ECS または EC2 メタデータ認証情報

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

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

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

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

    arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0
    
    ローカル (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 を使用します。

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

    providerauto の場合、local.modelPath が既存のローカルファイルを指しているときにのみ local が選択されます。hf: および HTTP(S) モデル参照は provider: "local" で明示的に使用できますが、モデルがディスク上で利用可能になる前に auto がローカルを選択することはありません。

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

    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 (多様性)

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

    時間減衰 (新しさ)

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

    Evergreen ファイル (MEMORY.mdmemory/ 内の日付なしファイル) は減衰されません。

    完全な例

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

    追加メモリパス

    キー 説明
    extraPaths string[] インデックス作成対象にする追加のディレクトリまたはファイル
    {
      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 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 パスを上書き

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


    インデックスストレージ

    キー デフォルト 説明
    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 埋め込みメンテナンスを実行しません。vsearchquery は引き続き QMD ベクトルの準備状況と埋め込みを必要とします。

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

    更新スケジュール
    キー デフォルト 説明
    update.interval string 5m 更新間隔
    update.debounceMs number 15000 ファイル変更のデバウンス
    update.onBoot boolean true 長期稼働の QMD マネージャーが開いたときに更新する。オプトインの起動時更新も制御
    update.startup string off 任意の Gateway 起動時更新: 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 と同じスキーマです。

    {
      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 フッターを省略する(パスは内部的にエージェントへ渡される)

    QMD のブート更新は、Gateway 起動中にワンショットのサブプロセスパスを使用します。長期稼働の QMD マネージャーは、メモリ検索が対話的な使用のために開かれたとき、通常のファイルウォッチャーとインターバルタイマーを引き続き所有します。

    完全な QMD 例

    {
      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 サブエージェントモデル上書き

    {
      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",
              },
            },
          },
        },
      },
    }
    

    関連