Sessions and memory
メインセッション
OpenClaw は、まず何よりもパーソナルエージェントです。初期状態では、Telegram、WhatsApp、iMessage、Slack の DM、Web アプリなど、どこから送信したダイレクトメッセージでも、すべてが 1 つの継続的な会話、つまりメインセッションに集約されます。スマートフォンで質問し、ノート PC から続きを尋ねても、エージェントは両方の場所で同じコンテキストを保持しています。頭脳は 1 つであり、ここがその思考の場です。
内部的には、メインセッションはキー
agent:<agentId>:main(例: agent:main:main)を持つ通常のセッションです。特別なのは、デフォルトの DM スコープによってすべてのダイレクトメッセージがこのセッションに集約され、システムの他の部分がこれをエージェントのルートとして扱う点です。Heartbeat はこのセッションを起動し、バックグラウンド作業はここに結果を報告し、他の場所でのアクティビティもここへ集まります。
ホーム
Web アプリでは、メインセッションはサイドバーの最初の項目である ホーム ページです。上部の ID 行がエージェントを表します(クリックするとエージェントメニューが開きます)。ホームはエージェントと対話する場所です。メインの会話から分岐したセッションは スレッド、グループチャットは グループ、コーディングおよび CLI セッションは コーディング の下に表示されます。
メインセッションに集まるもの
メインセッションは単なるチャットログではなく、エージェントの世界が集約される場所です。
- グループアクティビティ。 グループおよびルームのセッションは分離されたままですが(後述)、デフォルトの DM スコープではメインセッションがそれらを自動的に監視します。アクティビティは簡潔な通知としてキューに蓄積されます。会話ごとにまとめられ、メッセージごとに起動することはありません。エージェントは、次回のメッセージ受信時またはスケジュールされた Heartbeat の実行時に、それらを確認します。エージェントは監視対象のセッションも読み取れるため、「家族のグループで何を見逃した?」といった質問にも対応できます。
- バックグラウンド作業。 サブエージェントや生成されたセッションは、それらを開始したセッションへ結果を報告するため、エージェントがホームから開始した作業の結果はホームに返されます。
- Heartbeat。 スケジュールされた Heartbeat はメインセッションを対象とします。これにより、何も書き込んでいない場合でも、キューに蓄積された通知がエージェントに認識されます。
リセットや会話をまたぐメモリ
継続的な会話はモデルのコンテキストウィンドウによる制限を受けるため、継続性はその周囲のレイヤーによって実現されます。
MEMORY.mdは、エージェントが整理した長期メモリであり、新しいセッションのたびに読み込まれます。日次ノート(memory/YYYY-MM-DD.md)は必要に応じて検索でき、/newまたは/resetの後には最近のノートが再びコンテキストに読み込まれます。Compaction の前に、エージェントは永続化すべき事実を日次ノートへ書き出すため、長い会話でもそれらが知らないうちに失われることはありません。- 会話をまたぐメモリの呼び出しにより、エージェントは他のプライベートセッションの内容を思い出せます。個人向けの構成、つまりグローバルな
session.dmScopeがmainに解決され、バインディング単位の DM オーバーライドがない場合は、デフォルトで有効です。DM の分離が構成されている場合は、明示的にオプトインしない限り無効になります。メモリ構成を参照してください。
永続的な履歴を持つ継続的なセッション
メインセッションでは、モデルに履歴全体を一度に保持させるのではなく、リセットや Compaction を経ながら会話が継続します。
- デフォルトでは自動リセットはありません。Compaction により、継続的なセッションを維持しながら、アクティブなコンテキストが制限内に保たれます。日次リセットとアイドル時リセットはオプトインです(セッション管理を参照)。
/newおよび/resetの実行時には、終了する会話の末尾が日次メモリノートへ保存され、次のセッションでは最近のノートが再びコンテキストに読み込まれます。リセットによって新しいライブセッション ID が割り当てられますが、以前の SQLite トランスクリプトは同じメインセッションキーで引き続き検索できます。 - 会話がコンテキストウィンドウの上限に近づくと、Compaction が要約を行い、その場で会話を継続します。トランスクリプト履歴はセッションストアに残ります。
- セッション一覧には、背後にある過去のすべてのセッション ID ではなく、現在のライブ会話が表示されます。
- エージェント単位のストアにある物理データベース、WAL、およびセッションアーティファクトがディスク容量の上限(デフォルトは 10 GB)を超えると、OpenClaw は参照されていない最も古い履歴を検証済みの圧縮アーカイブへ抽出してから、そのデータベース行を削除します。ライブ中、ルーティング済み、または処理中のセッションが容量制限による削除対象になることはありません。
分離が必要な場合
共有メインセッションは、自分だけが対話するエージェントには適切なデフォルトです。複数の人がエージェントにメッセージを送信できる場合は、DM を分離してください。
{ session: { dmScope: "per-channel-peer", },}分離スコープを使用すると、送信者ごとに独自のセッションが割り当てられ、メインセッションによるグループ監視は無効になり、会話をまたぐメモリの呼び出しもデフォルトで無効になります。openclaw security audit は、複数の DM 送信者を検出すると分離を推奨します。スコープの完全な対応表、ID のリンク、およびルート単位のオーバーライドについては、セッション管理およびチャンネルルーティングを参照してください。
関連項目
- セッション管理 — ルーティング、スコープ、リセット
- チャンネルルーティング — エージェントとセッションの選択方法
- メモリ — 永続的なメモリレイヤー
- マルチエージェント — 分離された複数のエージェントの実行