Technical reference
メモリ設定リファレンス
このページでは、OpenClaw のメモリ検索に関するすべての設定項目を一覧にしています。概念的な概要については、以下を参照してください。
メモリの仕組み。
デフォルトの SQLite バックエンド。
ローカル優先のサイドカー。
検索パイプラインと調整。
対話型セッション用のメモリサブエージェント。
特に記載がない限り、メモリ検索のすべての設定は openclaw.json(またはエージェントごとの agents.list[].memorySearch オーバーライド)内の agents.defaults.memorySearch にあります。
プロバイダーの選択
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled |
boolean |
true |
メモリ検索を有効または無効にする |
provider |
string |
"openai" |
bedrock、deepinfra、gemini、github-copilot、local、mistral、ollama、openai、openai-compatible、voyage などの埋め込みアダプター ID。api がメモリ埋め込みアダプターまたは OpenAI 互換モデル API を指す、設定済みの models.providers.<id> を指定することもできます |
model |
string |
プロバイダーのデフォルト | 埋め込みモデル名 |
fallback |
string |
"none" |
プライマリが失敗した場合のフォールバックアダプター ID |
provider が設定されていない場合、OpenClaw は OpenAI の埋め込みを使用します。Bedrock、DeepInfra、Gemini、GitHub Copilot、Mistral、Ollama、Voyage、ローカル GGUF モデル、または OpenAI 互換の /v1/embeddings エンドポイントを使用するには、provider を明示的に設定してください。provider: "auto" が残っているレガシー設定は、openai として解決されます。
provider が未設定の場合、レガシーの provider: "auto" が存在する場合、または provider: "none" で意図的に FTS 専用モードを選択している場合、埋め込みが利用できなくても、メモリの想起では語彙ベースの FTS ランキングを引き続き使用できます。
明示的に指定された非ローカルプロバイダーはフェイルクローズします。memorySearch.provider に Bedrock、DeepInfra、Gemini、GitHub Copilot、LM Studio、Mistral、Ollama、OpenAI、Voyage、または OpenAI 互換のカスタムプロバイダーなど、リモートバックエンドを使用する具体的なプロバイダーを設定し、そのプロバイダーが実行時に利用できない場合、memory_search は暗黙的に FTS 専用の想起を使用せず、利用不可の結果を返します。プロバイダーまたは認証の設定を修正するか、到達可能なプロバイダーに切り替えるか、意図的に FTS 専用の想起を使用する場合は provider: "none" を設定してください。
カスタムプロバイダー ID
memorySearch.provider は、ollama などのメモリ固有プロバイダーアダプター、または openai-responses / openai-completions などの OpenAI 互換モデル API 用のカスタム models.providers.<id> エントリを指すことができます。OpenClaw は、エンドポイント、認証、モデルプレフィックスの処理用にカスタムプロバイダー ID を維持しながら、埋め込みアダプターについてそのプロバイダーの api 所有者を解決します。これにより、複数 GPU または複数ホストの構成で、メモリ埋め込み専用の特定のローカルエンドポイントを使用できます。
{ models: { providers: { "ollama-5080": { api: "ollama", baseUrl: "http://gpu-box.local:11435", apiKey: "ollama-local", models: [{ id: "qwen3-embedding:0.6b", name: "Qwen3 Embedding 0.6B" }], }, }, }, agents: { defaults: { memorySearch: { provider: "ollama-5080", model: "qwen3-embedding:0.6b", }, }, },}API キーの解決
リモート埋め込みには API キーが必要です。ただし、Bedrock は代わりに AWS SDK のデフォルト認証情報チェーン(インスタンスロール、SSO、アクセスキー、または Bedrock API キー)を使用します。
| プロバイダー | 環境変数 | 設定キー |
|---|---|---|
| Bedrock | AWS 認証情報チェーン、または AWS_BEARER_TOKEN_BEDROCK |
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.apiKeystringAPI キーをオーバーライドします。
remote.headersobject追加の HTTP ヘッダー(プロバイダーのデフォルトとマージされます)。
{ 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 をオーバーライドします |
{ 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 のデフォルト認証情報チェーンに加えて OpenClaw が検証するベアラートークンを使用するため、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, 384, 512, 768, 1024, 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)と、リージョン接頭辞付きの推論プロファイル ID(例: us.amazon.titan-embed-text-v2:0)は、ベースモデルの設定を継承します。
リージョン: 次の順序で解決されます: memorySearch.remote.baseUrl のオーバーライド、models.providers.amazon-bedrock.baseUrl の設定、AWS_REGION、AWS_DEFAULT_REGION、最後にデフォルトの us-east-1。
認証: OpenClaw は最初に AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY または AWS_BEARER_TOKEN_BEDROCK を確認し、その後、標準の AWS SDK デフォルト認証情報プロバイダーチェーンへフォールスルーします。
- 環境変数(
AWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEY)。ただし、AWS_PROFILEも設定されている場合を除く - SSO(SSO フィールドが設定されている場合のみ)
- 共有認証情報および設定ファイル(
fromIni、AWS_PROFILEを含む) - 認証情報プロセス(AWS 設定ファイル内の
credential_process) - ウェブアイデンティティトークン認証情報
- ECS または EC2 インスタンスメタデータ認証情報
IAM 権限: IAM ロールまたはユーザーには次の権限が必要です。
{ "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": "*"}最小権限にするには、InvokeModel のスコープを特定のモデルに限定します。
arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0ローカル(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 トークンでは VRAM が約 32 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。
スタンドアロン CLI を使用して、Gateway が使用するものと同じプロバイダーパスを検証します。
openclaw memory status --deep --agent mainopenclaw memory index --force --agent main数値の local.contextSize 値は、モデルの重みと要求された埋め込みコンテキストを一緒に収められるように、node-llama-cpp の GPU レイヤー自動配置にも使用されます。openclaw memory status --deep は、ランタイムが読み込まれた後に、最後に確認された llama.cpp のバックエンド、デバイス、オフロード、要求されたコンテキスト、タイムスタンプ付きメモリ情報を報告します。受動的なステータス確認ではモデルを読み込みません。
ローカル GGUF 埋め込みには、provider: "local" を明示的に設定します。hf: および HTTP(S) モデル参照は、明示的なローカル設定でサポートされています(node-llama-cpp のモデル解決を使用)が、デフォルトプロバイダーは変更されません。
インライン埋め込みのタイムアウト
sync.embeddingBatchTimeoutSecondsnumberメモリのインデックス作成中に実行されるインライン埋め込みバッチのタイムアウトを上書きします。
未設定の場合はプロバイダーのデフォルトを使用します。local、ollama、lmstudio などのローカルまたはセルフホスト型プロバイダーでは 600 秒、ホスト型プロバイダーでは 120 秒です。ローカルの CPU 負荷型埋め込みバッチが正常ではあるものの遅い場合は、この値を増やしてください。
インデックス作成の動作
特記がない限り、すべて memorySearch.sync 配下です。
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
onSessionStart |
boolean |
true |
セッション開始時にメモリインデックスを同期する |
onSearch |
boolean |
true |
コンテンツの変更を検出した後、検索時に遅延同期する |
watch |
boolean |
true |
メモリファイルを監視し(chokidar)、変更時に再インデックス作成を予約する |
watchDebounceMs |
number |
1500 |
短時間に発生するファイル監視イベントをまとめるためのデバウンス期間 |
intervalMinutes |
number |
0 |
分単位の定期的な再インデックス作成間隔(0 で無効化) |
sessions.postCompactionForce |
boolean |
true |
Compaction によってトリガーされたトランスクリプト更新後に、セッションの再インデックス作成を強制する |
chunking.tokensnumber埋め込み前にメモリソースを分割する際に使用する、トークン単位のチャンクサイズ(デフォルト: 400)。
chunking.overlapnumber分割境界付近のコンテキストを維持するための、隣接チャンク間のトークン重複数(デフォルト: 80)。
ハイブリッド検索の設定
すべて memorySearch.query 配下です。
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
maxResults |
number |
6 |
注入前に返すメモリヒットの最大数 |
minScore |
number |
0.35 |
ヒットを含めるための最小関連度スコア |
また、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 日ごとにスコアが半減する |
エバーグリーンファイル(MEMORY.md、memory/ 内の日付なしファイル)は減衰しません。
完全な例
{ agents: { defaults: { memorySearch: { query: { maxResults: 6, minScore: 0.35, 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.paths と memorySearch.qmd.extraCollections の両方に存在する場合、QMD は最初のエントリを保持し、重複をスキップします。
マルチモーダルメモリ(Gemini)
Gemini Embedding 2 を使用して、Markdown とともに画像と音声をインデックス化します。
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
multimodal.enabled |
boolean |
false |
マルチモーダルインデックスを有効化 |
multimodal.modalities |
string[] |
-- | ["image"]、["audio"]、または ["all"] |
multimodal.maxFileBytes |
number |
10485760 |
インデックス対象の最大ファイルサイズ(10 MiB) |
対応形式:.jpg、.jpeg、.png、.webp、.gif、.heic、.heif(画像)、.mp3、.wav、.ogg、.opus、.m4a、.aac、.flac(音声)。
埋め込みキャッシュ
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
cache.enabled |
boolean |
true |
チャンクの埋め込みを SQLite にキャッシュ |
cache.maxEntries |
number |
未設定 | キャッシュ済み埋め込み数のおおよその上限 |
再インデックスやトランスクリプト更新時に、変更されていないテキストが再度埋め込み処理されるのを防ぎます。キャッシュを無制限にする場合は maxEntries を未設定のままにし、再インデックスの最高速度よりディスク使用量の増加が重要な場合は設定します。設定すると、キャッシュが上限を超えた時点で、最終更新日時が古いエントリから順に削除されます。
バッチインデックス
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
remote.nonBatchConcurrency |
number |
4 |
並列インライン埋め込み |
remote.batch.enabled |
boolean |
false |
バッチ埋め込み API を有効化 |
remote.batch.concurrency |
number |
2 |
並列バッチジョブ |
remote.batch.wait |
boolean |
true |
バッチ完了を待機 |
remote.batch.pollIntervalMs |
number |
2000 |
ポーリング間隔 |
remote.batch.timeoutMinutes |
number |
60 |
バッチタイムアウト |
gemini、openai、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 |
再インデックスを行うメッセージ数のしきい値 |
セッショントランスクリプトのヒットにも
tools.sessions.visibility が適用されます。デフォルトの
tree 可視性では、現在のセッションと、そのセッションから生成されたセッションのみが公開されます。DM など、別のセッションから、同じエージェントに Gateway 経由でディスパッチされた無関係なセッションを
呼び出すには、可視性を意図的に agent まで拡大してください(エージェント間の呼び出しも必要で、エージェント間ポリシーで許可されている場合のみ all)。
以下の例では、これらの設定を agents.defaults の下に配置しています。セッショントランスクリプトのインデックス化と検索を 1 つの
エージェントだけに行わせる場合は、エージェント単位のオーバーライドに同等の memorySearch 設定を
適用することもできます。
同一エージェントで Gateway から DM を呼び出す場合:
組み込みバックエンド
{ agents: { defaults: { memorySearch: { experimental: { sessionMemory: true }, sources: ["memory", "sessions"], }, }, }, tools: { sessions: { visibility: "agent" }, },}QMD バックエンド
{ 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.sessionMemory と
sources: ["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 の再ランキングをスキップするには、searchMode: "query" および QMD 2.1+ とともに 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 埋め込みの保守を実行しません。vsearch と query では、引き続き 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 ビルドでは、コレクションごとの互換性パスが維持されます。同一ソースとは、永続メモリコレクション(デフォルトのメモリファイルとカスタムパス)がまとめてグループ化されることを意味します。一方、セッショントランスクリプトのコレクションは別のグループとして維持されるため、ソースの多様化では引き続き両方の入力が使用されます。
mcporter 連携
すべて memory.qmd.mcporter の下に配置されます。クエリごとに qmd を起動する代わりに、長時間稼働する mcporter MCP デーモンを介して QMD 検索をルーティングし、大規模モデルのコールドスタートのオーバーヘッドを削減します。
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled |
boolean |
false |
リクエストごとに qmd を起動する代わりに、mcporter 経由で QMD 呼び出しをルーティング |
serverName |
string |
qmd |
lifecycle: keep-alive を指定して qmd mcp を実行する mcporter サーバー名 |
startDaemon |
boolean |
true |
enabled が true の場合に mcporter デーモンを自動起動 |
mcporter がインストールされ PATH 上にあり、かつ qmd mcp を実行する mcporter サーバーが設定されている必要があります。クエリごとのプロセス起動コストを許容できる、より単純なローカル構成では無効のままにしてください。
更新スケジュール
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
update.interval |
string |
5m |
更新間隔 |
update.debounceMs |
number |
15000 |
ファイル変更をデバウンス |
update.onBoot |
boolean |
true |
長期間稼働する QMD マネージャーを開く際に更新する。起動直後の更新をスキップするには false に設定 |
update.startup |
string |
off |
Gateway 起動時の任意の QMD 初期化:off、idle、または immediate |
update.startupDelayMs |
number |
120000 |
startup: "idle" 更新が実行されるまでの遅延 |
update.waitForBootSync |
boolean |
false |
初回更新が完了するまでマネージャーを開く処理をブロック |
update.embedInterval |
string |
60m |
埋め込み処理に別の実行間隔を設定 |
update.commandTimeoutMs |
number |
30000 |
QMD メンテナンスコマンド(コレクションの一覧表示/追加)のタイムアウト |
update.updateTimeoutMs |
number |
120000 |
各 qmd update サイクルのタイムアウト |
update.embedTimeoutMs |
number |
120000 |
各 qmd embed サイクルのタイムアウト |
制限
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
limits.maxResults |
number |
4 |
検索結果の最大数 |
limits.maxSnippetChars |
number |
450 |
スニペットの長さを制限 |
limits.maxInjectedChars |
number |
2200 |
注入される合計文字数を制限 |
limits.timeoutMs |
number |
4000 |
memory_search を含む、QMD を使用した検索中の QMD コマンドのタイムアウト。セットアップ、同期、組み込みフォールバック、および補助処理ではデフォルトのツール期限を維持 |
スコープ
QMD の検索結果を受け取れるセッションを制御します。session.sendPolicy と同じスキーマです。
{ memory: { qmd: { scope: { default: "deny", rules: [{ action: "allow", match: { chatType: "direct" } }], }, }, },}提供時のデフォルトでは DM/ダイレクトのみが許可され、グループおよびその他のチャンネル種別は拒否されます。match.keyPrefix は正規化されたセッションキーに一致し、match.rawKeyPrefix は agent:<id>: を含む未加工のキーに一致します。
引用
memory.citations はすべてのバックエンドに適用されます。
| 値 | 動作 |
|---|---|
auto(デフォルト) |
スニペットに Source: <path#line> フッターを含める |
on |
常にフッターを含める |
off |
フッターを省略(パスは引き続き内部でエージェントに渡される) |
Gateway 起動時の QMD 初期化が有効な場合、OpenClaw は対象となるエージェントに対してのみ QMD を起動します。update.onBoot が true で、更新間隔または埋め込みメンテナンスが設定されていない場合、起動時にはブート更新用の単発マネージャーを使用し、完了後に閉じます。更新間隔または埋め込み間隔が設定されている場合、起動時に長期間稼働する QMD マネージャーを開き、ウォッチャーと間隔タイマーを管理できるようにします。update.onBoot: false がスキップするのは、起動直後の更新のみです。
QMD の完全な例
{ memory: { backend: "qmd", citations: "auto", qmd: { includeDefaultMemory: true, update: { interval: "5m", debounceMs: 15000 }, limits: { maxResults: 4, 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 は単一のスケジュールされたスイープとして実行され、内部の 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 に昇格される各短期想起スニペットから保持する推定トークンの最大数。来歴メタデータは引き続き表示される |
例
{ 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", }, }, }, }, },}