会話のコンパクト化
モデルが一度に読める量には限りがあります。長い会話では履歴がコンテキストウィンドウを埋めていき、いずれ何かを削らなければなりません。OAR には 2 つの解決策があります。/ で要約を引き継いだ新しい会話を始めることと、一部のプロバイダーが自分のコンテキストを自動で縮めることです。
コンテキストウィンドウの表示(🧠 ボタン)についてはコンテキストウィンドウで説明しています。このページではコンパクト化だけを扱います。
/compact #
入力欄に / と入力して送信します。このコマンドは、/ を入力したときの入力欄の自動補完にも表示されます。OAR は確認を求めます:Compact this conversation into a new one with carry-over summary?(引き継ぎ要約付きの新しい会話にこの会話をコンパクト化しますか?)。その後、次のことを行います。
- 新しい会話を作成します。タイトルは古い会話と同じで、(compacted)(コンパクト化済み)が付きます。
- 古い会話をアーカイブします。古い会話はすべてそのまま保持され、アーカイブ済みのリストで引き続き読めます。会話リストを参照してください。
- 要約が待機した状態の空の新しい会話を開きます。古い会話を開いているほかのブラウザーも、新しい会話に移動します。
要約は、新しい会話で最初に送るメッセージの前に付けられます。エージェントは要約を [Carry-over context from previous compacted conversation]([前のコンパクト化された会話から引き継いだコンテキスト])の下で受け取り、その後に自分のテキストが [New user request]([ユーザーの新しいリクエスト])の下で続きます。自分のバブルには入力した内容だけが表示されます。最初のメッセージの後、要約は使い切られます。それ以降のターンには、エージェント自身が履歴に保持している内容が引き継がれます。
/ は指示を受け付けません。アーカイブされていない会話で、添付ファイルなしのメッセージ全体として送った場合にだけ機能します。後ろにテキストを付けると、メッセージはコマンドとして扱われず、通常のテキストとしてエージェントに送られます。OAR は実行中のターンを待つことも止めることもしないので、/ はエージェントがアイドルのときに送ってください。
新しい会話はまっさらな状態から始まります
コピーされるのはタイトルと要約だけです。新しい会話は古いエージェントのセッションを続けないので、エージェントは要約以外に古い会話の記憶を持ちません。アプリ内で 2 つの会話を結び付けるものはありません。古い会話を探すには、アーカイブ済みのリストを見てください。プロバイダー、モデル、フォルダーはコピーされません。ほかの新しい会話と同じように選んでください。ピン留めしたメッセージもコピーされません。
要約に含まれるもの #
要約は、モデルに書かせることなく、古い会話のテキストメッセージから作られます。
- 会話のタイトル
- 自分とエージェントのメッセージを最大 16 件、古い順に。それぞれ 1 行にまとめられ、260 文字で切られます
- 全体で最大 3,500 文字。そのため長い要約は末尾が失われます
16 件は最新の 24 件から選ばれ、そのうち古いものが先に来ます。そのため、24 件を超えるメッセージがある会話では、最新の 8 件が要約から漏れます。テキストのないメッセージも枠を 1 つ使いますが、何も加えません。
それ以外は何も引き継がれません。ツールの出力、ファイル、画像、思考、エージェントのプランは含まれません。古い会話にテキストがなかった場合は、要約にその旨が書かれます。新しい会話が得るのは話題の大まかな手がかりであり、正確な記録ではありません。重要なこと、特に直近のステップは、最初のメッセージでエージェントにもう一度伝えてください。
自動コンパクト化 #
一部のプロバイダーは、長い会話をその場で自動的にコンパクト化します。会話は同じもののままで、エージェントのセッションも同じです。ウィンドウが上限に近づくと、プロバイダーが古い履歴を短いものに置き換えます。確認は求められません。
| プロバイダー | コンパクト化するタイミング |
|---|---|
| Claude | コンテキストが auto-compact window(自動コンパクト化ウィンドウ)に達したとき(下記を参照)。既定ではモデル自身の上限に近い値(1M コンテキストのモデルで約 967k トークン)なので、長い会話でもそこに達することはまれです。 |
| DeepSeek 0.9.17 で追加 | Claude と同じく auto-compact window で。Auto(自動)のままにすると、DeepSeek のチャットは 400k トークンでコンパクト化します。これはモデルの 1M ウィンドウを大きく下回ります。 |
| GitHub Copilot と OpenAI(SDK エンジン) | コンテキストウィンドウの 80% でバックグラウンドで、95% でブロッキングのコンパクト化として。 |
コンパクト化の実行中に送ったメッセージはキューで保留され、コンパクト化が終わると送られます。実行中、送信ボタンは Queue(キューに入れる)と表示されます。
表示される内容 #
Claude、DeepSeek、Claude Cloud では、トランスクリプトにコンパクト化が全幅の行として表示され、同じ位置がスクロールバーの横に点として表示されます。
- 0.9.8 で追加 実行中は(Claude と DeepSeek のみ)、実行中のターンの上の行に Compacting context…(コンテキストをコンパクト化中…)と表示され、ターンのバブルには Compacting the conversation…(会話をコンパクト化中…)と表示されます。
- 終わると、同じ行が実際の数値で Context compacted · 120k → 40k tokens(コンテキストをコンパクト化しました · 120k → 40k tokens)に変わります。以前のサイズしか分からない場合は Context compacted · was 120k tokens と表示されます。
- 結果なしで終わったコンパクト化は行を残しません。
Claude Cloud では、行はコンパクト化が終わったときにだけ表示され、セッションが報告した内容を示します。
SDK エンジン(GitHub Copilot と OpenAI)では、進行状況は代わりに実行中のターンのアクティビティ行として表示されます。Compacting the conversation context…(会話のコンテキストをコンパクト化中…)の後、実際の数値で Context compacted (removed 12 messages, 30k tokens)(コンテキストをコンパクト化しました、12 件のメッセージと 30k トークンを削除)、または Context compaction failed: reason(コンテキストのコンパクト化に失敗しました:reason)と表示されます。
自動コンパクト化ウィンドウ #
Claude と DeepSeek では、会話がコンパクト化するまでにどれだけのコンテキストをためられるかを選べます。ウィンドウが小さいほど早くコンパクト化し、各ターンのコストを抑えられます。この設定は会話ごとです。
会話の 🧠 コンテキストボタンを開き、Auto-compact window(自動コンパクト化ウィンドウ)スライダーを動かします。スライダーには 7 つの段階があります。
| 段階 | 意味 |
|---|---|
| Auto | 既定値です。Claude Code がモデルに合ったウィンドウを選びます。DeepSeek では Auto は 400k を意味します。別の段階を選ばない限り、リレーがそのウィンドウを設定します。 |
| 100k、150k、200k、300k、500k、1M | コンテキストがこのトークン数に達すると、会話がコンパクト化します。 |
知っておくべきこと:
- 最小のウィンドウは 100k です。 Claude Code はそれより小さい値を無視して自身の既定値に戻るため、スライダーでは選べません。
- ウィンドウはモデル自身の上限を超えられません。 コンテキストウィンドウが小さいモデルで 1M のウィンドウを選んでも、その小さい上限を超える効果はありません。
- スライダーはモーダルを閉じたときに保存されます。 動かすだけでは、ラベルとその下の注記が変わるだけです。
- 実行中のセッションは、適用のために一度再起動します。 Claude Code はウィンドウを起動時にしか読み込みません。次のメッセージの前に、プロセス内で何も実行されていないときに OAR がエージェントのプロセスを再起動し、返信にその旨が表示されます:Restarted the session to apply the compaction window (Auto → 100k)(圧縮ウィンドウを適用するためセッションを再起動しました、Auto → 100k)。スライダーの下の注記は、変更が何を待っているかを示します:Applies after the current turn.(現在のターンの後に適用されます。)、Applies when background work has finished.(バックグラウンドの作業が終わると適用されます。)、Applies on the next message (the session restarts once).(次のメッセージから適用されます。セッションが一度再起動します。)
- 会話がすでに使っている量より小さいウィンドウは、すぐにコンパクト化を引き起こします。 スライダーには警告が表示されます:The conversation will be compacted on the next message.(次のメッセージで会話がコンパクト化されます。)
- スライダーの下の行には有効なウィンドウが表示され、その出どころ(自分の設定、モデルの既定値、環境)も示されます。会話の最初のターンの後に表示されます。
環境変数 CLAUDE_ でもウィンドウを設定できます。Claude Code がウィンドウをそこから取ったと報告すると、スライダーの下の行に from CLAUDE_CODE_AUTO_COMPACT_WINDOW(CLAUDE_CODE_AUTO_COMPACT_WINDOW から)と表示されます。セッションが tmux で動く環境(Linux と macOS)では、リレーにこの変数を設定しても Claude Code には渡されません。エージェントに届く変数を参照してください。
失われるものと残るもの #
/ |
自動コンパクト化 | |
|---|---|---|
| 会話 | 新しい会話になります。古い会話はそのままアーカイブされます。 | 同じ会話です。 |
| トランスクリプト | 古いトランスクリプトはアーカイブされた会話に残り、新しい会話は空の状態で始まります。 | 変わりません。すべてのメッセージがトランスクリプトに残り、コンパクト化が起きた位置にその行が入ります(Claude、DeepSeek、Claude Cloud)。 |
| エージェントが知っていること | 要約だけです。直近のメッセージがいくつか、最大 3,500 文字。 | プロバイダーが書いた、履歴の短いバージョン。 |
| ピン留めしたメッセージ | 古い会話に残ります。 | 残ります。 |
| プロバイダー、モデル、フォルダー | コピーされません。 | 変わりません。 |
プロバイダー別 #
/ |
自動コンパクト化 | |
|---|---|---|
| GitHub Copilot と OpenAI(SDK エンジン) | はい | はい。ウィンドウの 80% と 95% で。アクティビティ行に表示されます。 |
| GitHub Copilot と OpenAI(拡張機能エンジン) | はい | OAR は何も設定せず、何も表示しません。 |
| Claude | はい | はい。自動コンパクト化ウィンドウ、トランスクリプトの行、スクロールバーの横の点。 |
| DeepSeek 0.9.17 で追加 | はい | Claude と同じです。別のウィンドウを選ばない限り、ウィンドウは 400k です。 |
| Claude Cloud | はい | セッションがコンパクト化を報告したときのトランスクリプトの行。ウィンドウの設定はありません。 |
| Cursor | はい | OAR は何も設定せず、何も表示しません。ウィンドウの設定はありません。 |
| Grok | はい | OAR は何も設定せず、何も表示しません。ウィンドウの設定はありません。 |
/ はプロバイダー自身のコンパクト化を使わず、新しい会話を始めるだけなので、どこでも同じように動作します。「OAR は何も設定せず、何も表示しません」とは、OAR がコンパクト化を引き起こすことも、トランスクリプトに印を付けることもないという意味です。プロバイダー自身のエージェントがコンテキストを管理している場合はあります。