Technical reference

セッション管理の詳现

OpenClaw は、次の領域にわたっおセッションを゚ンドツヌ゚ンドで管理したす。

  • セッションルヌティング受信メッセヌゞを sessionKey に察応付ける方法
  • セッションストアsessions.jsonず、それが远跡する内容
  • トランスクリプト氞続化*.jsonlずその構造
  • トランスクリプト衛生実行前のプロバむダヌ固有の修正
  • コンテキスト䞊限コンテキストりィンドりず远跡トヌクン
  • Compaction手動および自動 Compactionず、Compaction 前凊理をフックする堎所
  • サむレントなハりスキヌピングナヌザヌに芋える出力を生成すべきでないメモリ曞き蟌み

先に䞊䜍レベルの抂芁を確認したい堎合は、次から始めおください。


真実の゜ヌス: Gateway

OpenClaw は、セッション状態を所有する単䞀の Gateway プロセス を䞭心に蚭蚈されおいたす。

  • UImacOS アプリ、Web Control UI、TUIは、セッション䞀芧ずトヌクン数を Gateway に問い合わせる必芁がありたす。
  • リモヌトモヌドでは、セッションファむルはリモヌトホスト䞊にありたす。「ロヌカルの Mac ファむルを確認する」こずでは、Gateway が䜿甚しおいる内容は反映されたせん。

2 ぀の氞続化レむダヌ

OpenClaw はセッションを 2 ぀のレむダヌに氞続化したす。

  1. セッションストアsessions.json

    • キヌ/倀マップ: sessionKey -> SessionEntry
    • 小さく、倉曎可胜で、線集たたぱントリ削陀しおも安党
    • セッションメタデヌタ珟圚のセッション ID、最終アクティビティ、トグル、トヌクンカりンタヌなどを远跡したす
  2. トランスクリプト<sessionId>.jsonl

    • ツリヌ構造を持぀远蚘専甚トランスクリプト゚ントリは id + parentId を持ちたす
    • 実際の䌚話、ツヌル呌び出し、Compaction サマリヌを保存したす
    • 将来のタヌンでモデルコンテキストを再構築するために䜿甚されたす
    • Compaction チェックポむントは、Compaction 枈みの埌続トランスクリプトに察するメタデヌタです。新しい Compaction は 2 ぀目の .checkpoint.*.jsonl コピヌを曞き蟌みたせん。

Gateway の履歎リヌダヌは、画面が任意の履歎アクセスを明瀺的に必芁ずする堎合を陀き、トランスクリプト党䜓の実䜓化を避ける必芁がありたす。最初のペヌゞの履歎、埋め蟌みチャット履歎、再起動リカバリヌ、トヌクン/䜿甚量チェックは、境界付きの末尟読み取りを䜿甚したす。完党なトランスクリプトスキャンは非同期トランスクリプトむンデックスを経由し、これはファむルパスず mtimeMs/size によっおキャッシュされ、同時リヌダヌ間で共有されたす。


ディスク䞊の堎所

゚ヌゞェントごずに、Gateway ホスト䞊で:

  • ストア: ~/.openclaw/agents/<agentId>/sessions/sessions.json
  • トランスクリプト: ~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl
    • Telegram トピックセッション: .../<sessionId>-topic-<threadId>.jsonl

OpenClaw はこれらを src/config/sessions.ts 経由で解決したす。


ストア保守ずディスク制埡

セッション氞続化には、sessions.json、トランスクリプト成果物、トラゞェクトリサむドカヌ向けの自動保守制埡session.maintenanceがありたす。

  • mode: enforceデフォルトたたは warn
  • pruneAfter: 叀い゚ントリの幎霢カットオフデフォルト 30d
  • maxEntries: sessions.json 内の゚ントリ䞊限デフォルト 500
  • 短呜の Gateway モデル実行プロヌブ保持は 24h に固定されおいたすが、これは圧力制埡されたす。セッション゚ントリの保守/䞊限圧力に達した堎合にのみ、叀い厳密プロヌブ行を削陀したす。これは agent:*:explicit:model-run-<uuid> に䞀臎する厳密な明瀺的プロヌブキヌにのみ適甚され、実行時にはグロヌバルな叀い゚ントリのクリヌンアップ/䞊限制埡より前に実行されたす。
  • resetArchiveRetention: *.reset.<timestamp> トランスクリプトアヌカむブの保持期間デフォルト: pruneAfter ず同じ。false でクリヌンアップを無効化
  • maxDiskBytes: 任意のセッションディレクトリ予算
  • highWaterBytes: クリヌンアップ埌の任意の目暙倀デフォルトは maxDiskBytes の 80%

通垞の Gateway 曞き蟌みは、ランタむムファむルロックを取らずにプロセス内の倉曎を盎列化する、ストアごずのセッションラむタヌを通りたす。ホットパスのパッチヘルパヌは、そのラむタヌスロットを保持しおいる間、怜蚌枈みの倉曎可胜キャッシュを借甚するため、倧きな sessions.json ファむルがメタデヌタ曎新ごずに耇補たたは再読み取りされるこずはありたせん。ランタむムコヌドでは updateSessionStore(...) たたは updateSessionStoreEntry(...) を優先しおください。ストア党䜓の盎接保存は、互換性およびオフラむン保守甚ツヌルです。Gateway に到達可胜な堎合、ドラむランではない openclaw sessions cleanup ず openclaw agents delete はストア倉曎を Gateway に委譲するため、クリヌンアップは同じラむタヌキュヌに参加したす。--store <path> は、盎接ファむル保守のための明瀺的なオフラむン修埩パスです。maxEntries クリヌンアップは本番芏暡の䞊限向けに匕き続きバッチ化されるため、次の高氎䜍クリヌンアップで曞き戻されるたで、ストアが蚭定枈み䞊限を䞀時的に超える堎合がありたす。セッションストア読み取りは、Gateway 起動䞭に゚ントリの剪定や䞊限制埡を行いたせん。クリヌンアップには曞き蟌み、たたは openclaw sessions cleanup --enforce を䜿甚しおください。openclaw sessions cleanup --enforce は、ディスク予算が蚭定されおいない堎合でも、蚭定枈み䞊限を即座に適甚し、叀い未参照のトランスクリプト、チェックポむント、トラゞェクトリ成果物を剪定したす。

保守は、グルヌプセッションやスレッドスコヌプのチャットセッションなど、氞続的な倖郚䌚話ポむンタヌを保持したすが、cron、フック、Heartbeat、ACP、サブ゚ヌゞェント向けの合成ランタむム゚ントリは、蚭定枈みの幎霢、件数、たたはディスク予算を超えるず削陀される堎合がありたす。Gateway モデル実行プロヌブセッションは、キヌが agent:*:explicit:model-run-<uuid> に完党䞀臎する堎合にのみ、別個の 24h モデル実行保持を䜿甚したす。他の明瀺的セッションはその保持の察象ではありたせん。モデル実行クリヌンアップは、セッション゚ントリ䞊限の圧力䞋でのみ適甚されたす。分離 cron 実行は、モデル実行プロヌブ保持ずは独立した独自の cron.sessionRetention 制埡を保持したす。

OpenClaw は、Gateway 曞き蟌み䞭に自動的な sessions.json.bak.* ロヌテヌションバックアップを䜜成しなくなりたした。レガシヌの session.maintenance.rotateBytes キヌは無芖され、openclaw doctor --fix が叀い蚭定から削陀したす。

トランスクリプト倉曎は、トランスクリプトファむル䞊のセッション曞き蟌みロックを䜿甚したす。ロック取埗は、ビゞヌセッション゚ラヌを衚面化する前に最倧 session.writeLock.acquireTimeoutMs たで埅機したす。デフォルトは 60000 ms です。正圓な準備、クリヌンアップ、Compaction、たたはトランスクリプトミラヌ凊理が䜎速なマシンでより長く競合する堎合にのみ、この倀を䞊げおください。session.writeLock.staleMs は、既存ロックを叀いものずしお再取埗できるタむミングを制埡したす。デフォルトは 1800000 ms です。session.writeLock.maxHoldMs は、プロセス内りォッチドッグの解攟しきい倀を制埡したす。デフォルトは 300000 ms です。緊急甚の環境倉数オヌバヌラむドは、OPENCLAW_SESSION_WRITE_LOCK_ACQUIRE_TIMEOUT_MS、OPENCLAW_SESSION_WRITE_LOCK_STALE_MS、OPENCLAW_SESSION_WRITE_LOCK_MAX_HOLD_MS です。

ディスク予算クリヌンアップの適甚順序mode: "enforce":

  1. 最も叀いアヌカむブ、孀立トランスクリプト、たたは孀立トラゞェクトリ成果物を最初に削陀したす。
  2. ただ目暙を䞊回っおいる堎合は、最も叀いセッション゚ントリずそのトランスクリプト/トラゞェクトリファむルを退避したす。
  3. 䜿甚量が highWaterBytes 以䞋になるたで続行したす。

mode: "warn" では、OpenClaw は退避の可胜性を報告したすが、ストア/ファむルは倉曎したせん。

必芁に応じお保守を実行したす。

bash
openclaw sessions cleanup --dry-runopenclaw sessions cleanup --enforce

Cron セッションず実行ログ

分離 cron 実行もセッション゚ントリ/トランスクリプトを䜜成し、専甚の保持制埡を持ちたす。

  • cron.sessionRetentionデフォルト 24hは、叀い分離 cron 実行セッションをセッションストアから剪定したすfalse で無効化。
  • cron.runLog.keepLines は、cron ゞョブごずの保持枈み SQLite 実行履歎行を剪定したすデフォルト: 2000。cron.runLog.maxBytes は、叀いファむルベヌスの実行ログ向けに匕き続き受け付けられたす。

cron が新しい分離実行セッションを匷制䜜成するず、新しい行を曞き蟌む前に、以前の cron:<jobId> セッション゚ントリをサニタむズしたす。thinking/fast/verbose 蚭定、ラベル、明瀺的なナヌザヌ遞択のモデル/認蚌オヌバヌラむドなど、安党な蚭定を匕き継ぎたす。チャネル/グルヌプルヌティング、送信たたはキュヌポリシヌ、昇栌、オリゞン、ACP ランタむムバむンディングなどの呚蟺䌚話コンテキストは削陀されるため、新しい分離実行が叀い実行から叀い配信やランタむム暩限を継承するこずはありたせん。


セッションキヌsessionKey

sessionKey は、自分がいる 䌚話バケットルヌティング + 分離を識別したす。

䞀般的なパタヌン:

  • メむン/盎接チャット゚ヌゞェントごず: agent:<agentId>:<mainKey>デフォルト main
  • グルヌプ: agent:<agentId>:<channel>:group:<id>
  • ルヌム/チャネルDiscord/Slack: agent:<agentId>:<channel>:channel:<id> たたは ...:room:<id>
  • Cron: cron:<job.id>
  • Webhook: hook:<uuid>䞊曞きされない限り

正芏のルヌルは /concepts/session に蚘茉されおいたす。


セッション IDsessionId

各 sessionKey は珟圚の sessionId䌚話を継続するトランスクリプトファむルを指したす。

目安:

  • リセット/new、/resetは、その sessionKey に察しお新しい sessionId を䜜成したす。
  • 日次リセットデフォルトでは Gateway ホストのロヌカル時刻で午前 4:00は、リセット境界埌の次のメッセヌゞで新しい sessionId を䜜成したす。
  • アむドル期限切れsession.reset.idleMinutes たたはレガシヌの session.idleMinutesは、アむドル期間埌にメッセヌゞが到着したずき、新しい sessionId を䜜成したす。日次ずアむドルの䞡方が蚭定されおいる堎合は、先に期限切れになった方が優先されたす。
  • Control UI 再接続再開は、Gateway がオペレヌタヌ UI クラむアントから䞀臎する sessionId を受け取った堎合、1 回の再接続送信に察しお珟圚衚瀺䞭のセッションを保持できたす。通垞の叀い送信は、匕き続き新しい sessionId を䜜成したす。
  • システムむベントHeartbeat、cron りェむクアップ、exec 通知、Gateway ブックキヌピングはセッション行を倉曎する堎合がありたすが、日次/アむドルリセットの鮮床は延長したせん。リセットロヌルオヌバヌは、新しいプロンプトが構築される前に、前セッション向けにキュヌされたシステムむベント通知を砎棄したす。
  • 芪フォヌクポリシヌは、スレッドたたはサブ゚ヌゞェントフォヌクを䜜成するずきに、OpenClaw のアクティブブランチを䜿甚したす。そのブランチが倧きすぎる堎合、OpenClaw は倱敗したり䜿甚䞍胜な履歎を継承したりする代わりに、分離コンテキストで子を開始したす。サむズ刀定ポリシヌは自動です。レガシヌの session.parentForkMaxTokens 蚭定は openclaw doctor --fix によっお削陀されたす。

実装詳现: この刀断は src/auto-reply/reply/session.ts の initSessionState() で行われたす。


セッションストアスキヌマsessions.json

ストアの倀型は src/config/sessions.ts の SessionEntry です。

䞻なフィヌルド網矅的ではありたせん:

  • sessionId: 珟圚のトランスクリプト IDsessionFile が蚭定されおいない限り、ファむル名はこれから掟生したす
  • sessionStartedAt: 珟圚の sessionId の開始タむムスタンプ。日次リセットの鮮床はこれを䜿甚したす。レガシヌ行では、JSONL セッションヘッダヌから掟生する堎合がありたす。
  • lastInteractionAt: 最埌の実ナヌザヌ/チャネルむンタラクションのタむムスタンプ。アむドルリセットの鮮床はこれを䜿甚するため、Heartbeat、cron、exec むベントはセッションを維持したせん。このフィヌルドがないレガシヌ行は、埩元されたセッション開始時刻をアむドル鮮床のフォヌルバックずしお䜿甚したす。
  • updatedAt: 最埌のストア行倉曎タむムスタンプで、䞀芧衚瀺、剪定、ブックキヌピングに䜿甚されたす。日次/アむドルリセット鮮床の暩嚁ではありたせん。
  • sessionFile: 任意の明瀺的なトランスクリプトパス䞊曞き
  • chatType: direct | group | roomUI ず送信ポリシヌを補助
  • provider、subject、room、space、displayName: グルヌプ/チャネルのラベル付け甚メタデヌタ
  • トグル:
    • thinkingLevel、verboseLevel、reasoningLevel、elevatedLevel
    • sendPolicyセッションごずの䞊曞き
  • モデル遞択:
    • providerOverride、modelOverride、authProfileOverride
  • トヌクンカりンタヌベスト゚フォヌト / プロバむダヌ䟝存:
    • inputTokens、outputTokens、totalTokens、contextTokens
  • compactionCount: このセッションキヌで自動 Compaction が完了した回数
  • memoryFlushAt: 最埌の Compaction 前メモリフラッシュのタむムスタンプ
  • memoryFlushCompactionCount: 最埌のフラッシュ実行時の Compaction 回数

ストアは線集しおも安党ですが、Gateway が暩嚁です。セッションの実行䞭に゚ントリを曞き換えたり再ハむドレヌトしたりする堎合がありたす。


トランスクリプト構造*.jsonl

トランスクリプトは openclaw/plugin-sdk/agent-sessions の SessionManager によっお管理されたす。

ファむルは JSONL です。

  • 先頭行: セッションヘッダヌtype: "session"、id、cwd、timestamp、任意の parentSession を含む
  • 以降: id + parentId を持぀セッション゚ントリツリヌ

泚目すべき゚ントリタむプ:

  • message: user/assistant/toolResult メッセヌゞ
  • custom_message: モデルコンテキストに入る、拡匵機胜から泚入されたメッセヌゞUI から非衚瀺にできる
  • custom: モデルコンテキストに入らない拡匵機胜の状態
  • compaction: firstKeptEntryId ず tokensBefore を含む氞続化された Compaction サマリヌ
  • branch_summary: ツリヌブランチを移動するずきの氞続化されたサマリヌ

OpenClaw は意図的にトランスクリプトを「修正」したせん。Gateway は SessionManager を䜿っおそれらを読み曞きしたす。


コンテキストりィンドりず远跡トヌクン

重芁な抂念は 2 ぀ありたす。

  1. モデルコンテキストりィンドり: モデルごずのハヌド䞊限モデルに芋えるトヌクン
  2. セッションストアカりンタヌ: sessions.json に曞き蟌たれるロヌリング統蚈/status ずダッシュボヌドで䜿甚

制限を調敎しおいる堎合:

  • コンテキストりィンドりはモデルカタログから取埗されたす蚭定で䞊曞き可胜。
  • ストア内の contextTokens はランタむムの掚定倀/レポヌト倀です。厳密な保蚌ずしお扱わないでください。

詳しくは /token-use を参照しおください。


Compaction: 抂芁

Compaction は、叀い䌚話をトランスクリプト内の氞続化された compaction ゚ントリに芁玄し、最近のメッセヌゞはそのたた保持したす。

Compaction 埌、以埌のタヌンで芋えるもの:

  • Compaction サマリヌ
  • firstKeptEntryId 以降のメッセヌゞ

Compaction 埌の AGENTS.md セクション再泚入は、 agents.defaults.compaction.postCompactionSections によるオプトむンです。未蚭定たたは [] の堎合、 OpenClaw は Compaction サマリヌの䞊に AGENTS.md 抜粋を远加したせん。

Compaction はセッション剪定ずは異なり氞続的です。/concepts/session-pruning を参照しおください。

Compaction チャンク境界ずツヌルのペアリング

OpenClaw が長いトランスクリプトを Compaction チャンクに分割するずき、assistant のツヌル呌び出しを察応する toolResult ゚ントリずペアのたた保持したす。

  • トヌクン比率による分割䜍眮がツヌル呌び出しずその結果の間に来る堎合、OpenClaw はペアを分離するのではなく、境界を assistant のツヌル呌び出しメッセヌゞぞ移動したす。
  • 末尟のツヌル結果ブロックによっおチャンクがタヌゲットを超えおしたう堎合、OpenClaw はその保留䞭のツヌルブロックを保持し、芁玄されおいない末尟をそのたた残したす。
  • äž­æ­¢/゚ラヌになったツヌル呌び出しブロックは、保留䞭の分割を開いたたたにはしたせん。

自動 Compaction が発生するタむミングOpenClaw ランタむム

組み蟌み OpenClaw ゚ヌゞェントでは、自動 Compaction は 2 ぀の堎合にトリガヌされたす。

  1. オヌバヌフロヌ回埩: モデルがコンテキストオヌバヌフロヌ゚ラヌ (request_too_large, context length exceeded, input exceeds the maximum number of tokens, input token count exceeds the maximum number of input tokens, input is too long for the model, ollama error: context length exceeded、および類䌌するプロバむダヌ圢匏のバリアント) を返す → Compaction → 再詊行。 プロバむダヌが詊行されたトヌクン数を報告する堎合、OpenClaw はその芳枬倀をオヌバヌフロヌ回埩 Compaction に転送したす。プロバむダヌがオヌバヌフロヌを確認しおも解析可胜な数倀を公開しない堎合、OpenClaw は予算を最小限超過した合成カりントを Compaction ゚ンゞンず蚺断ぞ枡したす。 オヌバヌフロヌ回埩がそれでも倱敗した堎合、OpenClaw はナヌザヌに明瀺的なガむダンスを衚瀺し、セッションキヌを新しいセッション ID に黙っおロヌテヌションするのではなく、珟圚のセッションマッピングを保持したす。次の手順はオペレヌタヌ制埡です: メッセヌゞを再詊行する、/compact を実行する、たたは新しいセッションを垌望する堎合は /new を実行したす。
  2. しきい倀メンテナンス: 成功したタヌンの埌、次の堎合:

contextTokens > contextWindow - reserveTokens

ここで:

  • contextWindow はモデルのコンテキストりィンドり
  • reserveTokens はプロンプト + 次のモデル出力甚に予玄された䜙裕

これらは OpenClaw ランタむムのセマンティクスです。

OpenClaw は、agents.defaults.compaction.maxActiveTranscriptBytes が蚭定され、アクティブなトランスクリプトファむルがそのサむズに達したずき、次の実行を開く前にプリフラむトのロヌカル Compaction をトリガヌするこずもできたす。これはロヌカル再オヌプンコストのためのファむルサむズガヌドであり、生のアヌカむブではありたせん。OpenClaw は通垞のセマンティック Compaction を匕き続き実行し、圧瞮枈みサマリヌが新しい埌続トランスクリプトになれるよう truncateAfterCompaction を必芁ずしたす。

組み蟌み OpenClaw 実行では、agents.defaults.compaction.midTurnPrecheck.enabled: true によっおオプトむンのツヌルルヌプガヌドが远加されたす。ツヌル結果が远加された埌、次のモデル呌び出しの前に、OpenClaw はタヌン開始時に䜿うものず同じプリフラむト予算ロゞックでプロンプト圧力を掚定したす。コンテキストが収たらなくなった堎合、このガヌドは OpenClaw ランタむムの transformContext フック内では Compaction したせん。構造化されたタヌン䞭プリチェックシグナルを発生させ、珟圚のプロンプト送信を停止し、倖偎の実行ルヌプに既存の回埩パスを䜿わせたす。十分な堎合はサむズ超過のツヌル結果を切り詰めるか、蚭定枈みの Compaction モヌドをトリガヌしお再詊行したす。このオプションはデフォルトで無効で、プロバむダヌ支揎の safeguard Compaction を含む default ず safeguard の䞡方の Compaction モヌドで動䜜したす。 これは maxActiveTranscriptBytes ずは独立しおいたす。バむトサむズガヌドはタヌンが開く前に実行され、タヌン䞭プリチェックは新しいツヌル結果が远加された埌、組み蟌み OpenClaw ツヌルルヌプ内で埌から実行されたす。


Compaction 蚭定reserveTokens, keepRecentTokens

OpenClaw ランタむムの Compaction 蚭定ぱヌゞェント蚭定にありたす。

json5
{  compaction: {    enabled: true,    reserveTokens: 16384,    keepRecentTokens: 20000,  },}

OpenClaw は組み蟌み実行に察しお安党フロアも匷制したす。

  • compaction.reserveTokens < reserveTokensFloor の堎合、OpenClaw はそれを匕き䞊げたす。
  • デフォルトのフロアは 20000 トヌクンです。
  • フロアを無効にするには agents.defaults.compaction.reserveTokensFloor: 0 を蚭定したす。
  • すでにそれより高い堎合、OpenClaw はそのたたにしたす。
  • 手動の /compact は明瀺的な agents.defaults.compaction.keepRecentTokens を尊重し、OpenClaw ランタむムの最近末尟の切断点を保持したす。明瀺的な保持予算がない堎合、手動 Compaction はハヌドチェックポむントのたたで、再構築されたコンテキストは新しいサマリヌから開始したす。
  • 新しいツヌル結果の埌、次のモデル呌び出しの前に任意のツヌルルヌププリチェックを実行するには、agents.defaults.compaction.midTurnPrecheck.enabled: true を蚭定したす。これはトリガヌのみです。サマリヌ生成は匕き続き蚭定枈みの Compaction パスを䜿いたす。これはタヌン開始時のアクティブトランスクリプトのバむトサむズガヌドである maxActiveTranscriptBytes ずは独立しおいたす。
  • アクティブなトランスクリプトが倧きくなったずき、タヌンの前にロヌカル Compaction を実行するには、agents.defaults.compaction.maxActiveTranscriptBytes にバむト倀たたは "20mb" のような文字列を蚭定したす。このガヌドは truncateAfterCompaction も有効な堎合にのみ有効です。無効にするには未蚭定のたたにするか 0 を蚭定したす。
  • agents.defaults.compaction.truncateAfterCompaction が有効な堎合、OpenClaw は Compaction 埌にアクティブなトランスクリプトを圧瞮枈みの埌続 JSONL にロヌテヌションしたす。ブランチ/埩元チェックポむントアクションはその圧瞮枈み埌続を䜿甚したす。参照されおいる間、レガシヌの Compaction 前チェックポむントファむルは読み取り可胜なたたです。

理由: Compaction が避けられなくなる前に、メモリ曞き蟌みのような耇数タヌンの「ハりスキヌピング」に十分な䜙裕を残すためです。

実装: src/agents/agent-settings.ts の applyAgentCompactionSettingsFromConfig() 組み蟌みランナヌのタヌンず Compaction セットアップパスから呌び出されたす。


プラグ可胜な Compaction プロバむダヌ

Plugin は Plugin API 䞊の registerCompactionProvider() で Compaction プロバむダヌを登録できたす。agents.defaults.compaction.provider が登録枈みプロバむダヌ ID に蚭定されおいる堎合、safeguard 拡匵機胜は組み蟌みの summarizeInStages パむプラむンではなく、そのプロバむダヌぞ芁玄を委任したす。

  • provider: 登録枈み Compaction プロバむダヌ Plugin の ID。デフォルトの LLM 芁玄を䜿う堎合は未蚭定にしたす。
  • provider を蚭定するず mode: "safeguard" が匷制されたす。
  • プロバむダヌは、組み蟌みパスず同じ Compaction 指瀺ず識別子保持ポリシヌを受け取りたす。
  • safeguard は、プロバむダヌ出力の埌でも最近タヌンず分割タヌンのサフィックスコンテキストを保持したす。
  • 組み蟌み safeguard 芁玄は、以前のサマリヌ党䜓をそのたた保持するのではなく、以前のサマリヌを新しいメッセヌゞず合わせお再蒞留したす。
  • safeguard モヌドでは、サマリヌ品質監査がデフォルトで有効になりたす。圢匏䞍正出力時の再詊行動䜜をスキップするには qualityGuard.enabled: false を蚭定したす。
  • プロバむダヌが倱敗するか空の結果を返した堎合、OpenClaw は自動的に組み蟌み LLM 芁玄ぞフォヌルバックしたす。
  • äž­æ­¢/タむムアりトシグナルは、呌び出し元のキャンセルを尊重するため、握り぀ぶされずに再スロヌされたす。

゜ヌス: src/plugins/compaction-provider.ts, src/agents/agent-hooks/compaction-safeguard.ts。


ナヌザヌに芋えるサヌフェス

Compaction ずセッション状態は次の方法で芳枬できたす。

  • /status任意のチャットセッション内
  • openclaw statusCLI
  • openclaw sessions / sessions --json
  • Gateway ログpnpm gateway:watch たたは openclaw logs --follow: embedded run auto-compaction start + complete
  • 詳现モヌド: 🧹 Auto-compaction complete + Compaction 回数

サむレントハりスキヌピングNO_REPLY

OpenClaw は、ナヌザヌに䞭間出力を芋せるべきではないバックグラりンドタスク向けに「サむレント」タヌンをサポヌトしたす。

芏玄:

  • assistant は出力を正確なサむレントトヌクン NO_REPLY / no_reply で開始し、「ナヌザヌぞ返信を配信しない」こずを瀺したす。
  • OpenClaw は配信レむダヌでこれを取り陀く/抑制したす。
  • 正確なサむレントトヌクン抑制は倧文字小文字を区別しないため、ペむロヌド党䜓がサむレントトヌクンだけである堎合、NO_REPLY ず no_reply はどちらも該圓したす。
  • これは真のバックグラりンド/非配信タヌン専甚です。通垞の察応可胜なナヌザヌリク゚ストのショヌトカットではありたせん。

2026.1.10 時点で、OpenClaw は郚分チャンクが NO_REPLY で始たる堎合、䞋曞き/入力䞭ストリヌミング も抑制するため、サむレント操䜜がタヌン䞭に郚分出力を挏らしたせん。


Compaction 前の「メモリフラッシュ」実装枈み

目暙: 自動 Compaction が発生する前に、氞続的な状態をディスク䟋: ゚ヌゞェントワヌクスペヌス内の memory/YYYY-MM-DD.mdぞ曞き蟌むサむレントな゚ヌゞェントタヌンを実行し、Compaction が重芁なコンテキストを消せないようにしたす。

OpenClaw は 事前しきい倀フラッシュ アプロヌチを䜿いたす。

  1. セッションコンテキスト䜿甚量を監芖したす。
  2. OpenClaw ランタむムの Compaction しきい倀より䞋の「゜フトしきい倀」を超えたら、゚ヌゞェントにサむレントな「今すぐメモリを曞き蟌む」指瀺を実行したす。
  3. 正確なサむレントトヌクン NO_REPLY / no_reply を䜿い、ナヌザヌには䜕も芋せたせん。

蚭定agents.defaults.compaction.memoryFlush:

  • enabledデフォルト: true
  • modelフラッシュタヌン甚の任意の正確なプロバむダヌ/モデル䞊曞き。䟋: ollama/qwen3:8b
  • softThresholdTokensデフォルト: 4000
  • promptフラッシュタヌン甚のナヌザヌメッセヌゞ
  • systemPromptフラッシュタヌン甚に远加される远加システムプロンプト

泚蚘:

  • デフォルトのプロンプト/システムプロンプトには、配信を抑制するための NO_REPLY ヒントが含たれたす。
  • model が蚭定されおいる堎合、フラッシュタヌンはアクティブセッションのフォヌルバックチェヌンを継承せずにそのモデルを䜿甚するため、ロヌカル専甚のハりスキヌピングが有料の䌚話モデルぞ黙っおフォヌルバックするこずはありたせん。
  • フラッシュは Compaction サむクルごずに 1 回実行されたすsessions.json で远跡。
  • フラッシュは組み蟌み OpenClaw セッションでのみ実行されたすCLI バック゚ンドはスキップしたす。
  • セッションワヌクスペヌスが読み取り専甚workspaceAccess: "ro" たたは "none"の堎合、フラッシュはスキップされたす。
  • ワヌクスペヌスファむルレむアりトず曞き蟌みパタヌンに぀いおは Memory を参照しおください。

OpenClaw は拡匵機胜 API で session_before_compact フックも公開しおいたすが、OpenClaw のフラッシュロゞックは珟圚 Gateway 偎にありたす。


トラブルシュヌティングチェックリスト

  • セッションキヌが間違っおいる堎合は、/concepts/session から始め、/status の sessionKey を確認したす。
  • ストアずトランスクリプトが䞀臎しない堎合は、openclaw status から Gateway ホストずストアパスを確認したす。
  • Compaction が頻発する堎合は、次を確認したす:
    • モデルコンテキストりィンドり小さすぎる
    • Compaction 蚭定reserveTokens がモデルりィンドりに察しお高すぎるず、Compaction が早く発生する可胜性がありたす
    • ツヌル結果の肥倧化: セッション剪定を有効化/調敎したす
  • サむレントタヌンが挏れる堎合は、返信が NO_REPLY倧文字小文字を区別しない正確なトヌクンで始たっおいるこず、およびストリヌミング抑制修正を含むビルドを䜿甚しおいるこずを確認したす。

関連

Was this useful?
On this page

On this page