メインコンテンツへスキップ

メモリー設定リファレンス

このページでは、OpenClaw のメモリー検索に関するすべての設定項目を一覧化しています。概念的な概要については、以下を参照してください。
  • Memory Overview — メモリーの仕組み
  • Builtin Engine — デフォルトの SQLite バックエンド
  • QMD Engine — ローカルファーストのサイドカー
  • Memory Search — 検索パイプラインとチューニング
  • Active Memory — 対話セッション向けのメモリーサブエージェントの有効化
特に明記がない限り、すべてのメモリー検索設定は openclaw.jsonagents.defaults.memorySearch 配下にあります。 Active Memory の機能トグルとサブエージェント設定を探している場合は、 memorySearch ではなく plugins.entries.active-memory 配下にあります。 Active Memory は 2 段階のゲートモデルを使用します。
  1. Plugin が有効であり、現在のエージェント ID を対象にしていること
  2. リクエストが、対象となる対話型の永続チャットセッションであること
アクティベーションモデル、 Plugin が所有する設定、トランスクリプトの永続化、安全なロールアウトパターンについては、 Active Memory を参照してください。

プロバイダー選択

KeyTypeDefaultDescription
providerstring自動検出埋め込みアダプター ID: openaigeminivoyagemistralbedrockollamalocal
modelstringプロバイダーのデフォルト埋め込みモデル名
fallbackstring"none"プライマリーが失敗したときのフォールバックアダプター ID
enabledbooleantrueメモリー検索を有効または無効にする

自動検出順序

provider が設定されていない場合、OpenClaw は利用可能な最初のものを選択します。
  1. localmemorySearch.local.modelPath が設定されており、そのファイルが存在する場合。
  2. openai — OpenAI キーを解決できる場合。
  3. gemini — Gemini キーを解決できる場合。
  4. voyage — Voyage キーを解決できる場合。
  5. mistral — Mistral キーを解決できる場合。
  6. bedrock — AWS SDK の認証情報チェーンが解決される場合(インスタンスロール、アクセスキー、プロファイル、SSO、web identity、または共有 config)。
ollama はサポートされていますが自動検出はされません(明示的に設定してください)。

API キー解決

リモート埋め込みには API キーが必要です。Bedrock は代わりに AWS SDK のデフォルト 認証情報チェーンを使用します(インスタンスロール、SSO、アクセスキー)。
ProviderEnv varConfig key
OpenAIOPENAI_API_KEYmodels.providers.openai.apiKey
GeminiGEMINI_API_KEYmodels.providers.google.apiKey
VoyageVOYAGE_API_KEYmodels.providers.voyage.apiKey
MistralMISTRAL_API_KEYmodels.providers.mistral.apiKey
BedrockAWS 認証情報チェーンAPI キー不要
OllamaOLLAMA_API_KEY(プレースホルダー)
Codex OAuth は chat/completions のみを対象としており、埋め込み リクエストには使用できません。

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

カスタム OpenAI 互換エンドポイントの使用や、プロバイダーのデフォルトを上書きする場合:
KeyTypeDescription
remote.baseUrlstringカスタム API ベース URL
remote.apiKeystringAPI キーを上書き
remote.headersobject追加の HTTP ヘッダー(プロバイダーのデフォルトとマージされる)
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai",
        model: "text-embedding-3-small",
        remote: {
          baseUrl: "https://api.example.com/v1/",
          apiKey: "YOUR_KEY",
        },
      },
    },
  },
}

Gemini 固有の設定

KeyTypeDefaultDescription
modelstringgemini-embedding-001gemini-embedding-2-preview もサポート
outputDimensionalitynumber3072Embedding 2 では 768、1536、または 3072
モデルまたは outputDimensionality を変更すると、自動的に完全再インデックスがトリガーされます。

Bedrock 埋め込み設定

Bedrock は AWS SDK のデフォルト認証情報チェーンを使用します — API キーは不要です。 OpenClaw が Bedrock 対応のインスタンスロールを持つ EC2 上で動作している場合は、 プロバイダーとモデルを設定するだけです。
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "bedrock",
        model: "amazon.titan-embed-text-v2:0",
      },
    },
  },
}
KeyTypeDefaultDescription
modelstringamazon.titan-embed-text-v2:0任意の Bedrock 埋め込みモデル ID
outputDimensionalitynumberモデルのデフォルトTitan V2 では 256、512、または 1024

サポートされるモデル

以下のモデルがサポートされています(ファミリー検出と次元数の デフォルト付き)。
Model IDProviderDefault DimsConfigurable Dims
amazon.titan-embed-text-v2:0Amazon1024256、512、1024
amazon.titan-embed-text-v1Amazon1536
amazon.titan-embed-g1-text-02Amazon1536
amazon.titan-embed-image-v1Amazon1024
amazon.nova-2-multimodal-embeddings-v1:0Amazon1024256、384、1024、3072
cohere.embed-english-v3Cohere1024
cohere.embed-multilingual-v3Cohere1024
cohere.embed-v4:0Cohere1536256-1536
twelvelabs.marengo-embed-3-0-v1:0TwelveLabs512
twelvelabs.marengo-embed-2-7-v1:0TwelveLabs1024
スループット接尾辞付きのバリアント(例: amazon.titan-embed-text-v1:2:8k)は、 ベースモデルの設定を継承します。

認証

Bedrock 認証は、標準の AWS SDK 認証情報解決順序を使用します。
  1. 環境変数(AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY
  2. SSO トークンキャッシュ
  3. Web identity token 認証情報
  4. 共有認証情報ファイルと config ファイル
  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

ローカル埋め込み設定

KeyTypeDefaultDescription
local.modelPathstring自動ダウンロードGGUF モデルファイルへのパス
local.modelCacheDirstringnode-llama-cpp のデフォルトダウンロード済みモデルのキャッシュディレクトリ
デフォルトモデル: embeddinggemma-300m-qat-Q8_0.gguf(約 0.6 GB、自動ダウンロード)。 ネイティブビルドが必要です: pnpm approve-builds を実行し、その後 pnpm rebuild node-llama-cpp を実行してください。

ハイブリッド検索設定

すべて memorySearch.query.hybrid 配下です。
KeyTypeDefaultDescription
enabledbooleantrueハイブリッド BM25 + ベクトル検索を有効にする
vectorWeightnumber0.7ベクトルスコアの重み(0-1)
textWeightnumber0.3BM25 スコアの重み(0-1)
candidateMultipliernumber4候補プールサイズの倍率

MMR(多様性)

KeyTypeDefaultDescription
mmr.enabledbooleanfalseMMR 再ランキングを有効にする
mmr.lambdanumber0.70 = 最大多様性、1 = 最大関連性

時間減衰(新しさ)

KeyTypeDefaultDescription
temporalDecay.enabledbooleanfalse新しさブーストを有効にする
temporalDecay.halfLifeDaysnumber30N 日ごとにスコアが半減する
エバーグリーンファイル(MEMORY.mdmemory/ 内の日付なしファイル)は減衰しません。

完全な例

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

追加のメモリーパス

KeyTypeDescription
extraPathsstring[]インデックス対象にする追加のディレクトリまたはファイル
{
  agents: {
    defaults: {
      memorySearch: {
        extraPaths: ["../team-docs", "/srv/shared-notes"],
      },
    },
  },
}
パスには絶対パスまたは workspace 相対パスを指定できます。ディレクトリは .md ファイルを再帰的にスキャンします。symlink の扱いはアクティブなバックエンドに依存します。 builtin engine は symlink を無視し、QMD は基盤となる QMD scanner の動作に従います。 エージェントスコープのクロスエージェントトランスクリプト検索には、 memory.qmd.paths ではなく agents.list[].memorySearch.qmd.extraCollections を使用してください。 これらの追加コレクションは同じ { path, name, pattern? } 形式に従いますが、 エージェントごとにマージされ、パスが現在の workspace 外を指す場合でも、 明示的な共有名を保持できます。 同じ解決済みパスが memory.qmd.pathsmemorySearch.qmd.extraCollections の両方に現れた場合、QMD は最初のエントリを保持し、 重複はスキップします。

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

Gemini Embedding 2 を使用して、Markdown と一緒に画像や音声もインデックスします。
KeyTypeDefaultDescription
multimodal.enabledbooleanfalseマルチモーダルインデックス作成を有効にする
multimodal.modalitiesstring[]["image"]["audio"]、または ["all"]
multimodal.maxFileBytesnumber10000000インデックス作成対象の最大ファイルサイズ
extraPaths 内のファイルにのみ適用されます。デフォルトのメモリールートは引き続き Markdown のみです。 gemini-embedding-2-preview が必要です。fallback"none" でなければなりません。 サポートされる形式: .jpg.jpeg.png.webp.gif.heic.heif (画像)、.mp3.wav.ogg.opus.m4a.aac.flac(音声)。

埋め込みキャッシュ

KeyTypeDefaultDescription
cache.enabledbooleanfalseSQLite にチャンク埋め込みをキャッシュする
cache.maxEntriesnumber50000キャッシュする埋め込みの最大数
再インデックス時やトランスクリプト更新時に、変更されていないテキストの再埋め込みを防ぎます。

バッチインデックス作成

KeyTypeDefaultDescription
remote.batch.enabledbooleanfalseバッチ埋め込み API を有効にする
remote.batch.concurrencynumber2並列バッチジョブ数
remote.batch.waitbooleantrueバッチ完了を待機する
remote.batch.pollIntervalMsnumberポーリング間隔
remote.batch.timeoutMinutesnumberバッチのタイムアウト
openaigeminivoyage で利用できます。OpenAI のバッチは通常、 大規模なバックフィルで最も高速かつ低コストです。

セッションメモリー検索(experimental)

セッショントランスクリプトをインデックスし、memory_search 経由で表示します。
KeyTypeDefaultDescription
experimental.sessionMemorybooleanfalseセッションインデックス作成を有効にする
sourcesstring[]["memory"]トランスクリプトを含めるには "sessions" を追加する
sync.sessions.deltaBytesnumber100000再インデックスのバイト閾値
sync.sessions.deltaMessagesnumber50再インデックスのメッセージ閾値
セッションインデックス作成は opt-in で、非同期に実行されます。結果は多少 古くなる場合があります。セッションログはディスク上にあるため、ファイルシステムアクセスを信頼境界として扱ってください。

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

KeyTypeDefaultDescription
store.vector.enabledbooleantrueベクトルクエリに sqlite-vec を使用する
store.vector.extensionPathstringbundledsqlite-vec パスを上書きする
sqlite-vec が利用できない場合、OpenClaw は自動的にインプロセスのコサイン 類似度へフォールバックします。

インデックスストレージ

KeyTypeDefaultDescription
store.pathstring~/.openclaw/memory/{agentId}.sqliteインデックスの場所({agentId} トークンをサポート)
store.fts.tokenizerstringunicode61FTS5 トークナイザー(unicode61 または trigram

QMD バックエンド設定

有効にするには memory.backend = "qmd" を設定します。すべての QMD 設定は memory.qmd 配下にあります。
KeyTypeDefaultDescription
commandstringqmdQMD 実行ファイルパス
searchModestringsearch検索コマンド: searchvsearchquery
includeDefaultMemorybooleantrueMEMORY.md + memory/**/*.md を自動インデックスする
paths[]array追加パス: { name, path, pattern? }
sessions.enabledbooleanfalseセッショントランスクリプトをインデックスする
sessions.retentionDaysnumberトランスクリプト保持期間
sessions.exportDirstringエクスポートディレクトリ
OpenClaw は現在の QMD コレクションと MCP クエリ形式を優先しますが、 必要に応じてレガシーの --mask コレクションフラグや古い MCP ツール名にフォールバックすることで、 古い QMD リリースも引き続き動作させます。 QMD モデルの上書きは OpenClaw config ではなく QMD 側に留まります。QMD のモデルを グローバルに上書きする必要がある場合は、Gateway ランタイム環境で QMD_EMBED_MODELQMD_RERANK_MODELQMD_GENERATE_MODEL などの環境変数を設定してください。

更新スケジュール

KeyTypeDefaultDescription
update.intervalstring5m更新間隔
update.debounceMsnumber15000ファイル変更のデバウンス
update.onBootbooleantrue起動時に更新する
update.waitForBootSyncbooleanfalse更新完了まで起動をブロックする
update.embedIntervalstring埋め込み用の別個の実行間隔
update.commandTimeoutMsnumberQMD コマンドのタイムアウト
update.updateTimeoutMsnumberQMD 更新処理のタイムアウト
update.embedTimeoutMsnumberQMD 埋め込み処理のタイムアウト

制限

KeyTypeDefaultDescription
limits.maxResultsnumber6最大検索結果数
limits.maxSnippetCharsnumberスニペット長の上限制限
limits.maxInjectedCharsnumber注入する総文字数の上限制限
limits.timeoutMsnumber4000検索タイムアウト

スコープ

どのセッションが QMD 検索結果を受け取れるかを制御します。スキーマは session.sendPolicy と同じです。
{
  memory: {
    qmd: {
      scope: {
        default: "deny",
        rules: [{ action: "allow", match: { chatType: "direct" } }],
      },
    },
  },
}
同梱のデフォルトでは、グループを引き続き拒否しつつ、 ダイレクトセッションとチャネルセッションを許可します。 デフォルトは DM のみです。match.keyPrefix は正規化された session key に一致し、 match.rawKeyPrefixagent:<id>: を含む生のキーに一致します。

引用

memory.citations はすべてのバックエンドに適用されます。
ValueBehavior
auto(デフォルト)スニペットに Source: <path#line> フッターを含める
on常にフッターを含める
offフッターを省略する(パスは引き続き内部的にエージェントへ渡される)

完全な 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(experimental)

Dreaming は agents.defaults.memorySearch ではなく、 plugins.entries.memory-core.config.dreaming 配下で設定します。 Dreaming は 1 回のスケジュールされたスイープとして実行され、内部の light / deep / REM フェーズを 実装詳細として使用します。 概念上の動作とスラッシュコマンドについては、Dreaming を参照してください。

ユーザー設定

KeyTypeDefaultDescription
enabledbooleanfalseDreaming 全体を有効または無効にする
frequencystring0 3 * * *完全な Dreaming スイープの任意の Cron 実行間隔

{
  plugins: {
    entries: {
      "memory-core": {
        config: {
          dreaming: {
            enabled: true,
            frequency: "0 3 * * *",
          },
        },
      },
    },
  },
}
注:
  • Dreaming はマシン state を memory/.dreams/ に書き込みます。
  • Dreaming は人間が読めるナラティブ出力を DREAMS.md(または既存の dreams.md)に書き込みます。
  • light / deep / REM フェーズのポリシーと閾値は内部動作であり、ユーザー向け設定ではありません。