セッションのコンテキスト圧縮
コンテキスト圧縮が対象にするのは現在のこの 1 セッションだけです: 早い段階の turn を要約に圧縮して、以降のモデル呼び出しが運ぶアクティブウィンドウを小さく保ちます。
これはメモリストアに保存された長期の記憶を書き換えることとは別物です。保存されたエントリをいじりたい場合は、長期メモリ を見てください。
いまはデフォルトで有効、設定ゼロ
新しく作った Bot では自動圧縮がデフォルトで有効です。しきい値も、圧縮率も、要約モデルも、何ひとつ設定する必要はありません——Memoh はすべてをチャットモデルの context_window に対する比率で決めます:
- セッションの圧縮可能な履歴がウィンドウの約 50% を超えたら: その turn の終了後にバックグラウンドで圧縮します。
- バックグラウンドが追いつかず、約 75% を超えてしまったら: 次の turn を送る前に同期的に圧縮します。
- どちらの経路でも、生の履歴をウィンドウの約 40% まで戻すことを目指します。
唯一の本当の前提条件: チャットモデルがモデル設定で context_window を宣言していることです。これがないと、自動ポリシーには予算の基準がなく、決してトリガーされません。モデルプロバイダーとモデル を見てください。
このデフォルトが変わる前に作られた Bot は、元の設定を保持し、元の意味のまま動きます(下記の legacy モードを参照)。
設定項目
調整したければ、今でも調整できます:
| フィールド | 説明 |
|---|---|
| Compaction Enabled | デフォルトでオン。オフにすると、この Bot の自動圧縮が無効になります。 |
| Compaction Threshold | 入力 token のしきい値。0(デフォルト)= 上記の自動比率ポリシー。0 より大きい値にすると legacy の絶対しきい値モードに切り替わります。 |
| Compaction Ratio | どれだけ強く圧縮するか。legacy モードでだけ有効です——しきい値が 0 のときは、このフィールド自体が非表示になります。 |
| Compaction Model | 任意の専用要約モデル。デフォルトはチャットモデルを継承します。override を設定した後でも Use chat model (default) に戻せます。 |
要約モデルの選び方
有効化されている chat モデルならほとんど使えます。唯一の制限は、provider が出力 token の上限を尊重すること。OpenAI Codex 系モデルは要約モデルにできません——ドロップダウンの時点で除外されています。
注意が必要なケース: Bot のメインのチャットモデル自体が Codex のとき、継承できる正当なモデルがないため、自動圧縮は何も言わずに動かなくなります。この場合は、Compaction Model を明示的に設定してください。
いますぐ圧縮する
方法は 2 つあります:
ステータスパネルから
- 現在の会話を開きます。
- セッションのステータスパネルを開きます。
- Compact Now をクリックします。
パネルにはコンテキスト使用量、キャッシュ、スキルなども表示されるので、いま圧縮すべきかどうかの判断に役立ちます。
スラッシュコマンドから
/compactまたは
/compact run手動の圧縮はできる限り全量を圧縮し(自動のターゲットラインで止まりません)、自動圧縮が失敗した後の短いクールダウンもバイパスします。
圧縮の忠実度
要約器は型付きのセッションレコード単位で動きます。品質に実際に効いてくる挙動は次のとおりです:
- ツール呼び出しとその結果は決して切り離されません——1 回の tool のやり取りは、丸ごと生の履歴に残るか、丸ごと要約に入るかのどちらかです。
- メディアは
[image]/[file]マーカーに縮退し、生データは詰め込みません。 - 空の要約、途中で切れた要約、元より小さくならなかった要約はそのまま却下され、結果として保存されません。
- 複数のワークスペースをまたぐセッションでは、「どの発言がどのマシンで起きたか」という情報を要約が保持します。
通常の chat、discuss、pipeline 系の会話はすべて圧縮の対象です。
記録
Bot 詳細の 圧縮 タブで各回の記録を確認できます: 成功/失敗、要約またはプレビュー、関係したメッセージ数、開始・終了時刻、あればモデルと使用量。自動が実際に動いているかの確認や、失敗原因の調査に使ってください。
よくある失敗原因
実行できないときは compaction.model_unavailable が具体的な理由とともに報告されます: 要約モデルが未設定、chat モデルではない、無効化されている、provider が無効化されている、provider が出力上限をサポートしない(Codex)、モデルに既知の context window がない。/compact もチャット内で同じ状態を報告します。
context_window との関係
Memoh は現在の chat モデルの context_window をこのセッションと突き合わせます。上限にどれだけ近いかは、Web のステータスパネルでも /status でも見られます。token は粗い見積もり(約 4 文字 / token)なので、パーセンテージは目安として扱い、正確な値だとは思わないでください。
「メモリ圧縮」との違い
| 対象範囲 | トリガー | 結果 | |
|---|---|---|---|
| コンテキスト圧縮 | 現在のアクティブセッション | 自動 / ステータスパネル / /compact | このセッション内の古い内容が要約になり、以降の turn を続けやすくなる |
| メモリ圧縮 | 長期メモリプロバイダー | メモリタブ | ストア内のメモリエントリを書き換える。単一セッションの prompt ではない |
1 つの会話が長くなりすぎた → コンテキスト圧縮。
保存された記憶がノイズだらけで重い → メモリ側でその種のメンテナンスを行ってください。