---
url: /ja/guides/compaction.md
---
# セッションのコンテキスト圧縮

**コンテキスト圧縮**が対象にするのは**現在のこの 1 セッション**だけです: 早い段階の turn を要約に圧縮して、以降のモデル呼び出しが運ぶ**アクティブウィンドウ**を小さく保ちます。

これは**メモリストアに保存された長期の記憶を書き換えること**とは別物です。保存されたエントリをいじりたい場合は、[長期メモリ](./memory.md) を見てください。

***

## いまはデフォルトで有効、設定ゼロ

新しく作った Bot では自動圧縮が**デフォルトで有効**です。しきい値も、圧縮率も、要約モデルも、何ひとつ設定する必要はありません——Memoh はすべてをチャットモデルの `context_window` に対する比率で決めます:

* セッションの圧縮可能な履歴がウィンドウの約 **50%** を超えたら: その turn の終了後に**バックグラウンド**で圧縮します。
* バックグラウンドが追いつかず、約 **75%** を超えてしまったら: 次の turn を送る前に**同期的に**圧縮します。
* どちらの経路でも、生の履歴をウィンドウの約 **40%** まで戻すことを目指します。

唯一の本当の前提条件: チャットモデルがモデル設定で `context_window` を宣言していることです。これがないと、自動ポリシーには予算の基準がなく、**決してトリガーされません**。[モデルプロバイダーとモデル](../integrations/providers/llm.md) を見てください。

このデフォルトが変わる前に作られた 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 つあります:

### ステータスパネルから

1. 現在の会話を開きます。
2. セッションのステータスパネルを開きます。
3. **Compact Now** をクリックします。

パネルにはコンテキスト使用量、キャッシュ、スキルなども表示されるので、いま圧縮すべきかどうかの判断に役立ちます。

### スラッシュコマンドから

```text
/compact
```

または

```text
/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 つの会話が長くなりすぎた** → コンテキスト圧縮。\
**保存された記憶がノイズだらけで重い** → メモリ側でその種のメンテナンスを行ってください。

***

## 次のステップ

* セッション、Discuss: [セッション](./sessions.md)
* スラッシュコマンドと `/compact`: [スラッシュコマンド](./slash-commands.md)
* 長期メモリのメンテナンス: [長期メモリ](./memory.md)
