アクティブメモリ
アクティブメモリは、対象となる会話セッションでメインの返信の前に実行される、オプションのプラグイン所有のブロッキングメモリサブエージェントです。 これは、ほとんどのメモリシステムが高機能であっても受動的だから存在します。メモリをいつ検索するかをメインエージェントの判断に委ねたり、ユーザーが「これを覚えて」や「メモリを検索して」のように言うことに頼ったりします。その時点では、メモリが返信を自然に感じさせられたはずの瞬間は、すでに過ぎています。 アクティブメモリは、メインの返信が生成される前に、関連するメモリをシステムが提示するための限定された1回の機会を与えます。これをエージェントに貼り付ける
自己完結型で安全なデフォルト設定によりアクティブメモリを有効にしたい場合は、これをエージェントに貼り付けてください。mainエージェントでプラグインが有効になり、デフォルトではダイレクトメッセージ形式のセッションのみに制限され、まず現在のセッションモデルを継承し、明示的または継承されたモデルが利用できない場合でも組み込みのリモートフォールバックを使用できます。
その後、Gatewayを再起動します。
アクティブメモリを有効にする
最も安全な設定は次のとおりです。- プラグインを有効にする
- 1つの会話型エージェントを対象にする
- 調整中のみログを有効にしておく
openclaw.jsonでは次から始めてください。
plugins.entries.active-memory.enabled: trueはプラグインを有効にしますconfig.agents: ["main"]はmainエージェントのみをアクティブメモリの対象にしますconfig.allowedChatTypes: ["direct"]は、デフォルトでアクティブメモリをダイレクトメッセージ形式のセッションのみに制限しますconfig.modelが未設定の場合、アクティブメモリはまず現在のセッションモデルを継承しますconfig.modelFallbackPolicy: "default-remote"は、明示的または継承されたモデルが利用できない場合のデフォルトとして、組み込みのリモートフォールバックを維持しますconfig.promptStyle: "balanced"は、recentモードのデフォルトの汎用プロンプトスタイルを使用します- アクティブメモリは、対象となる対話型の永続チャットセッションでのみ引き続き実行されます
確認方法
アクティブメモリは、モデルに対して非表示のシステムコンテキストを注入します。クライアントに生の<active_memory_plugin>...</active_memory_plugin> タグを公開することはありません。
セッショントグル
設定を編集せずに現在のチャットセッションでアクティブメモリを一時停止または再開したい場合は、プラグインコマンドを使用します。plugins.entries.active-memory.enabled、エージェント対象設定、その他のグローバル設定は変更しません。
設定を書き込み、すべてのセッションでアクティブメモリを一時停止または再開したい場合は、明示的なグローバル形式を使用します。
plugins.entries.active-memory.config.enabled に書き込みます。plugins.entries.active-memory.enabled は有効のままにするため、後でコマンドを使ってアクティブメモリを再度有効にできます。
ライブセッションでアクティブメモリが何をしているか確認したい場合は、そのセッションで詳細モードを有効にします。
Active Memory: ok 842ms recent 34 charsのようなアクティブメモリのステータス行Active Memory Debug: Lemon pepper wings with blue cheese.のような読みやすいデバッグ要約
実行されるタイミング
アクティブメモリは2つのゲートを使用します。- 設定によるオプトイン
プラグインが有効であり、現在のエージェントIDがplugins.entries.active-memory.config.agentsに含まれている必要があります。 - 厳格な実行時適格性
有効化され対象指定されていても、アクティブメモリは対象となる対話型の永続チャットセッションでのみ実行されます。
セッションタイプ
config.allowedChatTypes は、どの種類の会話でアクティブメモリを実行できるかを制御します。
デフォルトは次のとおりです。
実行される場所
アクティブメモリは会話を豊かにする機能であり、プラットフォーム全体の推論機能ではありません。| Surface | アクティブメモリは実行されるか |
|---|---|
| Control UI / web chat persistent sessions | はい。プラグインが有効で、エージェントが対象なら実行されます |
| Other interactive channel sessions on the same persistent chat path | はい。プラグインが有効で、エージェントが対象なら実行されます |
| Headless one-shot runs | いいえ |
| Heartbeat/background runs | いいえ |
Generic internal agent-command paths | いいえ |
| Sub-agent/internal helper execution | いいえ |
使用する理由
アクティブメモリは次のような場合に使用してください。- セッションが永続的でユーザー向けである
- エージェントが検索すべき意味のある長期メモリを持っている
- 生のプロンプトの決定性よりも、一貫性とパーソナライズが重要である
- 安定した好み
- 繰り返される習慣
- 自然に表面化すべき長期的なユーザーコンテキスト
- 自動化
- 内部ワーカー
- 単発のAPIタスク
- 非表示のパーソナライズが意外に感じられる場所
仕組み
実行時の形は次のとおりです。 ブロッキングメモリサブエージェントが使用できるのは次のみです。memory_searchmemory_get
NONE を返す必要があります。
クエリモード
config.queryMode は、ブロッキングメモリサブエージェントがどれだけ会話を参照するかを制御します。
プロンプトスタイル
config.promptStyle は、メモリを返すかどうかを判断するときに、ブロッキングメモリサブエージェントがどれだけ積極的または厳格であるかを制御します。
利用可能なスタイル:
balanced:recentモード向けの汎用デフォルトstrict: 最も慎重。近くのコンテキストからのにじみを極力少なくしたい場合に最適contextual: 最も継続性を重視。会話履歴の重要度を高くしたい場合に最適recall-heavy: 弱めだが妥当な一致でもメモリを表面化しやすいprecision-heavy: 一致が明白でない限り、積極的にNONEを優先するpreference-only: お気に入り、習慣、ルーティン、好み、繰り返される個人的事実に最適化されている
config.promptStyle が未設定の場合のデフォルト対応:
config.promptStyle を明示的に設定した場合は、そのオーバーライドが優先されます。
例:
モデルフォールバックポリシー
config.model が未設定の場合、アクティブメモリは次の順序でモデルを解決しようとします。
config.modelFallbackPolicy は最後のステップを制御します。
デフォルト:
resolved-only を使用してください。
高度なエスケープハッチ
これらのオプションは、意図的に推奨設定には含めていません。config.thinking は、ブロッキングメモリサブエージェントの thinking レベルを上書きできます。
config.promptAppend は、デフォルトのアクティブメモリプロンプトの後、会話コンテキストの前に追加のオペレーター指示を加えます。
config.promptOverride は、デフォルトのアクティブメモリプロンプトを置き換えます。OpenClawはその後も会話コンテキストを追加します。
NONE かコンパクトなユーザー事実コンテキストを返すよう調整されています。
message
最新のユーザーメッセージのみが送信されます。
- 最も高速な動作がほしい
- 安定した好みのリコールを最も強く優先したい
- フォローアップのターンで会話コンテキストが不要
3000〜5000msあたりから始める
recent
最新のユーザーメッセージに加え、直近の小さな会話テールが送信されます。
- 速度と会話の文脈把握のより良いバランスがほしい
- フォローアップの質問が直近の数ターンに依存することが多い
15000msあたりから始める
full
会話全体がブロッキングメモリサブエージェントに送信されます。
- レイテンシよりも最高のリコール品質が重要
- 会話に、スレッドのかなり前方にある重要な前提が含まれている
messageやrecentより十分に大きくする- スレッドサイズに応じて
15000ms以上から始める
トランスクリプトの永続化
アクティブメモリのブロッキングメモリサブエージェント実行では、ブロッキングメモリサブエージェント呼び出し中に実際のsession.jsonl トランスクリプトが作成されます。
デフォルトでは、そのトランスクリプトは一時的です:
- 一時ディレクトリに書き込まれます
- ブロッキングメモリサブエージェント実行のためだけに使用されます
- 実行終了直後に削除されます
config.transcriptDir で変更できます。
これは慎重に使用してください。
- ブロッキングメモリサブエージェントのトランスクリプトは、セッションが多忙だとすぐに蓄積する可能性があります
fullクエリモードでは大量の会話コンテキストが重複する可能性があります- これらのトランスクリプトには、非表示のプロンプトコンテキストと想起されたメモリが含まれます
設定
アクティブメモリの設定はすべて次の配下にあります。| Key | Type | 意味 |
|---|---|---|
enabled | boolean | プラグイン自体を有効にします |
config.agents | string[] | アクティブメモリを使用できるエージェントID |
config.model | string | オプションのブロッキングメモリサブエージェントモデル参照。未設定時、アクティブメモリは現在のセッションモデルを使用します |
config.queryMode | "message" | "recent" | "full" | ブロッキングメモリサブエージェントがどれだけ会話を参照するかを制御します |
config.promptStyle | "balanced" | "strict" | "contextual" | "recall-heavy" | "precision-heavy" | "preference-only" | メモリを返すかどうかを判断するときの、ブロッキングメモリサブエージェントの積極性または厳格さを制御します |
config.thinking | "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | ブロッキングメモリサブエージェント向けの高度な thinking 上書き。速度重視のためデフォルトは off |
config.promptOverride | string | 高度な完全プロンプト置換。通常の使用には非推奨 |
config.promptAppend | string | デフォルトまたは上書きされたプロンプトに追加される高度な追加指示 |
config.timeoutMs | number | ブロッキングメモリサブエージェントのハードタイムアウト |
config.maxSummaryChars | number | active-memory 要約で許可される総文字数の最大値 |
config.logging | boolean | 調整中にアクティブメモリのログを出力します |
config.persistTranscripts | boolean | 一時ファイルを削除せず、ブロッキングメモリサブエージェントのトランスクリプトをディスク上に保持します |
config.transcriptDir | string | エージェントのセッションフォルダー配下の、ブロッキングメモリサブエージェント用相対トランスクリプトディレクトリ |
| Key | Type | 意味 |
|---|---|---|
config.maxSummaryChars | number | active-memory 要約で許可される総文字数の最大値 |
config.recentUserTurns | number | queryMode が recent のときに含める過去のユーザーターン数 |
config.recentAssistantTurns | number | queryMode が recent のときに含める過去のアシスタントターン数 |
config.recentUserChars | number | 各最近のユーザーターンあたりの最大文字数 |
config.recentAssistantChars | number | 各最近のアシスタントターンあたりの最大文字数 |
config.cacheTtlMs | number | 同一クエリの繰り返しに対するキャッシュ再利用 |
推奨設定
recent から始めてください。
/verbose on を使用してください。
その後、次に移行します。
- より低いレイテンシがほしい場合は
message - 追加のコンテキストが、より遅いブロッキングメモリサブエージェントに見合うと判断した場合は
full
デバッグ
アクティブメモリが想定した場所で表示されない場合:plugins.entries.active-memory.enabledでプラグインが有効になっていることを確認します。- 現在のエージェントIDが
config.agentsに含まれていることを確認します。 - 対話型の永続チャットセッション経由でテストしていることを確認します。
config.logging: trueを有効にして、Gatewayログを確認します。openclaw memory status --deepでメモリ検索自体が動作していることを確認します。
maxSummaryChars
queryModeを下げるtimeoutMsを下げる- 最近のターン数を減らす
- ターンごとの文字数上限を減らす