Sessions and memory
Dreaming
Dreaming は memory-core のバックグラウンドメモリ統合システムです。OpenClaw が強い短期シグナルを永続的なメモリへ移しつつ、プロセスを説明可能かつレビュー可能に保つのを助けます。
Dreaming が書き込むもの
Dreaming は 2 種類の出力を保持します。
memory/.dreams/内のマシン状態(リコールストア、フェーズシグナル、取り込みチェックポイント、ロック)。DREAMS.md(または既存のdreams.md)内の人間が読める出力と、任意のmemory/dreaming/<phase>/YYYY-MM-DD.md配下のフェーズレポートファイル。
長期昇格は引き続き MEMORY.md にのみ書き込みます。
フェーズモデル
Dreaming は 3 つの協調フェーズを使用します。
| フェーズ | 目的 | 永続書き込み |
|---|---|---|
| ライト | 最近の短期素材を分類してステージングする | いいえ |
| ディープ | 永続候補をスコアリングして昇格する | はい(MEMORY.md) |
| REM | テーマと反復するアイデアを振り返る | いいえ |
これらのフェーズは内部実装の詳細であり、ユーザーが個別に設定する「モード」ではありません。
Light phase
ライトフェーズは、最近の日次メモリシグナルとリコールトレースを取り込み、重複排除し、候補行をステージングします。
- 短期リコール状態、最近の日次メモリファイル、利用可能な場合は編集済みセッショントランスクリプトから読み取ります。
- ストレージにインライン出力が含まれる場合、管理された
## Light Sleepブロックを書き込みます。 - 後続のディープランキング用に強化シグナルを記録します。
MEMORY.mdには決して書き込みません。
Deep phase
ディープフェーズは、何を長期メモリにするかを決定します。
- 重み付きスコアリングとしきい値ゲートを使って候補をランク付けします。
- 通過するには
minScore、minRecallCount、minUniqueQueriesが必要です。 - 書き込み前にライブの日次ファイルからスニペットを再ハイドレートするため、古いまたは削除済みのスニペットはスキップされます。
- 昇格されたエントリを
MEMORY.mdに追記します。 DREAMS.mdに## Deep Sleepサマリーを書き込み、任意でmemory/dreaming/deep/YYYY-MM-DD.mdを書き込みます。
REM phase
REM フェーズは、パターンと内省的シグナルを抽出します。
- 最近の短期トレースからテーマとリフレクションのサマリーを構築します。
- ストレージにインライン出力が含まれる場合、管理された
## REM Sleepブロックを書き込みます。 - ディープランキングで使われる REM 強化シグナルを記録します。
MEMORY.mdには決して書き込みません。
セッショントランスクリプトの取り込み
Dreaming は、編集済みセッショントランスクリプトを Dreaming コーパスへ取り込めます。トランスクリプトが利用可能な場合、日次メモリシグナルやリコールトレースと並んでライトフェーズに投入されます。個人情報や機密内容は取り込み前に編集されます。
Dream Diary
Dreaming は DREAMS.md に物語形式の Dream Diary も保持します。各フェーズに十分な素材が集まると、memory-core はベストエフォートのバックグラウンドサブエージェントターンを実行し、短い日記エントリを追記します。dreaming.model が設定されていない限り、デフォルトのランタイムモデルを使用します。設定されたモデルが利用できない場合、Dream Diary はセッションのデフォルトモデルで一度だけ再試行します。
レビューと復旧作業向けに、根拠付きの履歴バックフィルレーンもあります。
Backfill commands
memory rem-harness --path ... --groundedは、履歴YYYY-MM-DD.mdノートから根拠付きの日記出力をプレビューします。memory rem-backfill --path ...は、可逆な根拠付き日記エントリをDREAMS.mdに書き込みます。memory rem-backfill --path ... --stage-short-termは、根拠付きの永続候補を、通常のディープフェーズがすでに使用している同じ短期エビデンスストアへステージングします。memory rem-backfill --rollbackと--rollback-short-termは、通常の日記エントリやライブ短期リコールには触れずに、それらのステージ済みバックフィルアーティファクトを削除します。
Control UI には同じ日記バックフィル/リセットフローが公開されているため、根拠付き候補を昇格する価値があるかを判断する前に、Dreams シーンで結果を検査できます。Scene には個別の根拠付きレーンも表示されるため、履歴リプレイから来たステージ済み短期エントリ、根拠主導で昇格された項目を確認し、通常のライブ短期状態に触れずに根拠付きのみのステージ済みエントリだけをクリアできます。
ディープランキングシグナル
ディープランキングは、6 つの重み付きベースシグナルとフェーズ強化を使用します。
| シグナル | 重み | 説明 |
|---|---|---|
| 頻度 | 0.24 | エントリが蓄積した短期シグナルの数 |
| 関連性 | 0.30 | エントリの平均検索品質 |
| クエリ多様性 | 0.15 | それを浮上させた個別のクエリ/日付コンテキスト |
| 新しさ | 0.15 | 時間減衰された鮮度スコア |
| 統合 | 0.10 | 複数日にわたる再発の強さ |
| 概念的な豊かさ | 0.06 | スニペット/パスからの概念タグ密度 |
ライトフェーズと REM フェーズのヒットは、memory/.dreams/phase-signals.json から小さな時間減衰ブーストを追加します。
シャドウトライアルの結果は、永続書き込みの前にレビューシグナルとしてそのベーススコアの上に重ねられます。役に立つトライアルは候補に小さな制限付きブーストを与え、中立のトライアルは延期のままにし、有害なトライアルはそのスコアリングパスで却下としてマークします。このシグナルは引き続きレポート専用です。候補の順序やレビューメタデータを変更できますが、それ自体では MEMORY.md に書き込んだり候補を昇格したりしません。
QA シャドウトライアルレポートのカバレッジ
QA Lab には、将来の Dreaming シャドウトライアルが昇格前に候補メモリをどのようにレビューできるかを探索するための、レポート専用シナリオが含まれています。このシナリオでは、エージェントにベースライン回答と候補メモリを使用できる回答を比較させ、判定、理由、リスクフラグを含むローカルレポートを書かせます。
このカバレッジは意図的に QA に限定されています。レポートアーティファクトが MEMORY.md から分離されたままであること、またエージェントが候補は昇格されたと主張しないことを検証します。本番のシャドウトライアル動作を追加したり、ディープフェーズの昇格エンジンを変更したりはしません。
memory-core のシャドウトライアルランナーは、安定したアーティファクトを必要とするコードパス向けに、同じレポート専用契約を維持します。候補、トライアルプロンプト、ベースライン結果、候補結果、判定、理由、リスクフラグ、エビデンス参照を受け取り、promotion action: report-only を含むレポートを書き込みます。役に立つ判定は promote 推奨に、中立判定は defer に、有害判定は reject に対応します。これらの推奨はいずれも MEMORY.md に書き込まず、ディープフェーズ昇格も適用しません。
スケジューリング
有効にすると、memory-core は完全な Dreaming スイープ用に 1 つの Cron ジョブを自動管理します。各スイープはライト → REM → ディープの順にフェーズを実行します。
スイープには、プライマリランタイムワークスペースと設定済みのエージェントワークスペースが含まれ、パスで重複排除されます。そのため、サブエージェントワークスペースのファンアウトによってメインエージェントの DREAMS.md とメモリ状態が除外されることはありません。
デフォルトの周期動作:
| 設定 | デフォルト |
|---|---|
dreaming.frequency |
0 3 * * * |
dreaming.model |
デフォルトモデル |
クイックスタート
Enable dreaming
{ "plugins": { "entries": { "memory-core": { "config": { "dreaming": { "enabled": true } } } } }}Custom sweep cadence
{ "plugins": { "entries": { "memory-core": { "config": { "dreaming": { "enabled": true, "timezone": "America/Los_Angeles", "frequency": "0 */6 * * *" } } } } }}スラッシュコマンド
/dreaming status/dreaming on/dreaming off/dreaming help/dreaming on と /dreaming off は Gateway 全体の設定を変更します。チャンネル呼び出し元はオーナーでなければならず、Gateway クライアントには operator.admin が必要です。/dreaming status と /dreaming help は読み取り専用のままです。
CLI ワークフロー
Promotion preview / apply
openclaw memory promoteopenclaw memory promote --applyopenclaw memory promote --limit 5openclaw memory status --deep手動の memory promote は、CLI フラグで上書きされない限り、デフォルトでディープフェーズのしきい値を使用します。
Explain promotion
特定の候補が昇格する、または昇格しない理由を説明します。
openclaw memory promote-explain "router vlan"openclaw memory promote-explain "router vlan" --jsonREM harness preview
何も書き込まずに、REM リフレクション、候補真実、ディープ昇格出力をプレビューします。
openclaw memory rem-harnessopenclaw memory rem-harness --json主なデフォルト
すべての設定は plugins.entries.memory-core.config.dreaming 配下にあります。
enabledbooleandefault: falseDreaming スイープを有効または無効にします。
frequencystringdefault: 0 3 * * *完全な Dreaming スイープの Cron 周期。
modelstring任意の Dream Diary サブエージェントモデル上書き。サブエージェントの allowedModels 許可リストも設定する場合は、正規の provider/model 値を使用してください。
phases.deep.maxPromotedSnippetTokensnumberdefault: 160MEMORY.md に昇格される各短期リコールスニペットから保持される最大推定トークン数。ランキングの来歴は引き続き表示されます。
Dreams UI
有効にすると、Gateway の Dreams タブには次が表示されます。
- 現在の Dreaming 有効状態
- フェーズレベルのステータスと管理スイープの有無
- 短期、根拠付き、シグナル、本日昇格済みの件数
- 次回スケジュール実行のタイミング
- ステージ済み履歴リプレイエントリ用の個別の根拠付き Scene レーン
doctor.memory.dreamDiaryに支えられた展開可能な Dream Diary リーダー
Dreaming が実行されない: ステータスが blocked と表示される
openclaw memory status が Dreaming status: blocked を報告する場合、管理 Cron は存在しますが、デフォルトエージェントの Heartbeat が発火していません。デフォルトエージェントの Heartbeat が有効で、ターゲットが none ではないことを確認し、次の Heartbeat 間隔の後に openclaw memory status --deep を再実行してください。