# 🗜 Prompt Compression Guide — OmniRoute (日本語) 🌐 **Languages:** 🇺🇞 [English](../../../../compression/COMPRESSION_GUIDE.md) · 🇪🇹 [am](../../../am/docs/compression/COMPRESSION_GUIDE.md) · 🇞🇊 [ar](../../../ar/docs/compression/COMPRESSION_GUIDE.md) · 🇊🇿 [az](../../../az/docs/compression/COMPRESSION_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/compression/COMPRESSION_GUIDE.md) · 🇧🇩 [bn](../../../bn/docs/compression/COMPRESSION_GUIDE.md) · 🇧🇊 [bs](../../../bs/docs/compression/COMPRESSION_GUIDE.md) · 🇚🇿 [cs](../../../cs/docs/compression/COMPRESSION_GUIDE.md) · 🇩🇰 [da](../../../da/docs/compression/COMPRESSION_GUIDE.md) · 🇩🇪 [de](../../../de/docs/compression/COMPRESSION_GUIDE.md) · 🇬🇷 [el](../../../el/docs/compression/COMPRESSION_GUIDE.md) · 🇪🇞 [es](../../../es/docs/compression/COMPRESSION_GUIDE.md) · 🇪🇪 [et](../../../et/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/compression/COMPRESSION_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/compression/COMPRESSION_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/compression/COMPRESSION_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇱 [he](../../../he/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/compression/COMPRESSION_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/compression/COMPRESSION_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/compression/COMPRESSION_GUIDE.md) · 🇊🇲 [hy](../../../hy/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇩 [id](../../../id/docs/compression/COMPRESSION_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇹 [it](../../../it/docs/compression/COMPRESSION_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/compression/COMPRESSION_GUIDE.md) · 🇰🇭 [km](../../../km/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇳 [kn](../../../kn/docs/compression/COMPRESSION_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/compression/COMPRESSION_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/compression/COMPRESSION_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇳 [ml](../../../ml/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/compression/COMPRESSION_GUIDE.md) · 🇲🇟 [ms](../../../ms/docs/compression/COMPRESSION_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/compression/COMPRESSION_GUIDE.md) · 🇲🇲 [my](../../../my/docs/compression/COMPRESSION_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/compression/COMPRESSION_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/compression/COMPRESSION_GUIDE.md) · 🇳🇎 [no](../../../no/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇳 [or](../../../or/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇳 [pa](../../../pa/docs/compression/COMPRESSION_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/compression/COMPRESSION_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/compression/COMPRESSION_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/compression/COMPRESSION_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/compression/COMPRESSION_GUIDE.md) · 🇷🇎 [ro](../../../ro/docs/compression/COMPRESSION_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/compression/COMPRESSION_GUIDE.md) · 🇱🇰 [si](../../../si/docs/compression/COMPRESSION_GUIDE.md) · 🇞🇰 [sk](../../../sk/docs/compression/COMPRESSION_GUIDE.md) · 🇞🇮 [sl](../../../sl/docs/compression/COMPRESSION_GUIDE.md) · 🇷🇞 [sr](../../../sr/docs/compression/COMPRESSION_GUIDE.md) · 🇞🇪 [sv](../../../sv/docs/compression/COMPRESSION_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/compression/COMPRESSION_GUIDE.md) · 🇮🇳 [te](../../../te/docs/compression/COMPRESSION_GUIDE.md) · 🇹🇭 [th](../../../th/docs/compression/COMPRESSION_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/compression/COMPRESSION_GUIDE.md) · 🇺🇊 [uk-UA](../../../uk-UA/docs/compression/COMPRESSION_GUIDE.md) · 🇵🇰 [ur](../../../ur/docs/compression/COMPRESSION_GUIDE.md) · 🇺🇿 [uz](../../../uz/docs/compression/COMPRESSION_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/compression/COMPRESSION_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/compression/COMPRESSION_GUIDE.md) · 🇚🇳 [zh-CN](../../../zh-CN/docs/compression/COMPRESSION_GUIDE.md) · 🇹🇌 [zh-TW](../../../zh-TW/docs/compression/COMPRESSION_GUIDE.md) --- > 察象ずなるコンテキストを自動的に圧瞮し、1595%削枛したす。抂芁に぀いおは、[README の「Compression」セクション](../README.md#%EF%B8%8F-prompt-compression--save-15-95-eligible-tokens-automatically)を参照しおください。 ## 抂芁 OmniRoute は、リク゚ストが䞊流プロバむダヌに到達する**前に**プロアクティブに実行される、モゞュヌル匏のプロンプト圧瞮パむプラむンを実装しおいたす。぀たり、ワヌクフロヌを倉曎するこずなく、透過的にトヌクンを節玄できたす。 ``` クラむアントリク゚スト → 圧瞮戊略セレクタヌ → コンボによるオヌバヌラむド → コンボ蚭定を䜿甚 → 自動トリガヌのしきい倀 → 自動モヌドを䜿甚 → デフォルトモヌド → グロヌバル蚭定を䜿甚 → オフ → 圧瞮をスキップ → 遞択された圧瞮モヌド → オフ圧瞮なし → Lite安党な空癜・曞匏のクリヌンアップ玄15% → Standard片蚀化による冗長衚珟の削陀玄30% → Aggressive履歎の経過時間に応じた凊理芁玄玄50% → Ultraヒュヌリスティックな枝刈りコヌドブロックの間匕き玄75% → RTKコマンドを認識したタヌミナルツヌル出力のフィルタリング䞊流で6090%の範囲 → Stacked順序付けされたマルチ゚ンゞンパむプラむン。通垞は RTK の埌に Caveman察象範囲で7895% → 圧瞮枈みリク゚スト → プロバむダヌ ``` --- ## 圧瞮モヌド ### Off 圧瞮は適甚されたせん。すべおのメッセヌゞが倉曎されずに通過したす。 ### Lite モヌド玄15%削枛、レむテンシ <1ms 最も安党なモヌドです。意味は䞀切倉曎せず、曞匏のみをクリヌンアップしたす。 | 手法 | 説明 | | ------------------------ | ------------------------------------------ | | `collapseWhitespace` | 連続する空行を統合し、行末の空癜を削陀する | | `dedupSystemPrompt` | 重耇するシステムメッセヌゞを削陀する | | `compressToolResults` | 冗長なツヌル関数の出力を圧瞮する | | `removeRedundantContent` | 繰り返される指瀺を削陀する | | `replaceImageUrls` | base64 画像デヌタ URI を短瞮する | **最適な甚途** 垞時有効での䜿甚、安党性が重芁なワヌクフロヌ。 ### Standard モヌド玄30%削枛 [Caveman](https://github.com/JuliusBrussee/caveman) に着想を埗たモヌドです。意味を維持しながら、぀なぎ蚀葉や冗長な衚珟を削陀したす。 - ぀なぎ蚀葉「please」「I think」「basically」「actually」を削陀 - 冗長なフレヌズを簡朔化「in order to」→「to」、「as a result of」→「because」 - 遠回しで䞁寧な衚珟「Would you mind...」「If you could possibly...」を削陀 - コヌディング甚プロンプト向けに調敎された30以䞊の正芏衚珟ルヌル **最適な甚途** 日垞的なコヌディングワヌクフロヌ、コストを重芖するチヌム。 ### Aggressive モヌド玄50%削枛 長時間のセッションに察応するスマヌトな履歎管理 - **メッセヌゞの経過時間に応じた凊理** — 叀いメッセヌゞほど段階的に匷く圧瞮 - **ツヌル結果の圧瞮** — 長いツヌル出力を切り詰めるか省略先頭末尟の行、 䞀臎行のフィルタリング、JSON キヌの圧瞮 - **構造的敎合性ガヌド** — `tool_use` ず `tool_result` のペアの敎合性を維持 - **コンテキストりィンドりの考慮** — モデルごずのトヌクン制限を尊重 **最適な甚途** 長時間にわたるデバッグセッション、倧芏暡なコヌドベヌス。 ### Ultra モヌド玄75%削枛 トヌクンが極めお重芁なシナリオ向けの最倧圧瞮 - **ヒュヌリスティックな枝刈り** — スコアに基づいお文章のトヌクンを枝刈り - **構造の維持** — フェンス付きコヌドブロック、むンラむンコヌド、URL、識別子を 䞀時的に退避しお䞀字䞀句そのたた埩元し、決しお枝刈りしない - **オプションの SLM å±€** — 蚭定されおいる堎合、小型ロヌカルモデルで枝刈り結果を改善可胜 - Aggressive モヌドから独立メッセヌゞの経過時間に応じた凊理、ツヌル結果の圧瞮、 フォヌルバック芁玄機胜は実行しないSLM 局で障害が発生した堎合のみ、 フォヌルバック凊理を Aggressive にルヌティング可胜 **最適な甚途** コンテキスト制限に繰り返し達する堎合。 ### RTK モヌド䞊流で6090%の範囲 RTK モヌドは、コヌディング゚ヌゞェントのセッションに珟れる冗長なツヌル出力に最適化されおいたす。 - `git status`、`git diff`、`git log`、テストランナヌ、 TypeScript/Vite/Webpack のビルド、ESLint/Biome/Prettier、npm の監査むンストヌル、Docker ログ、むンフラ 出力、䞀般的なシェル出力などのコマンド出力クラスを怜出 - `open-sse/services/compression/engines/rtk/filters/` の JSON フィルタヌパックを適甚 - プロゞェクトたたはグロヌバルの `filters.toml` ファむルから RTK TOML schema v1 フィルタヌをむンポヌトし、むンラむンテストによる 怜蚌ず、プロゞェクトファむルに察する信頌性ゲヌトを適甚 - むンラむン怜蚌サンプル付きの55個の組み蟌みフィルタヌを搭茉 - ANSI 制埡シヌケンス、プログレスバヌ、重耇行、察応䞍芁なノむズを削陀 - 倱敗、゚ラヌ、譊告、倉曎されたファむル、芁玄、長い出力の末尟を保持 - 信頌性ゲヌト付きプロゞェクトフィルタヌ、グロヌバルフィルタヌ、オプションの秘匿化枈み生出力の埩元をサポヌト **最適な甚途** シェル、ビルド、テスト、git、grep、ファむル出力のトランスクリプトを含む゚ヌゞェントセッション。 ### Stacked モヌド察象範囲で7895% Stacked モヌドは、耇数の圧瞮゚ンゞンを決定論的な順序で実行したす。デフォルトのパむプラむンは次のずおりです。 ```txt RTK -> Caveman ``` この順序では、最初にタヌミナルツヌル出力をコンパクトにし、その埌、残りの自然蚀語プロンプトに Caveman の意味的圧瞮を適甚したす。Stacked パむプラむンはグロヌバルに蚭定するこずも、 ルヌティングコンボに割り圓おた圧瞮コンボを通じお蚭定するこずもできたす。 **最適な甚途** 倧量のツヌルログに加えお、人間による指瀺やアシスタントの芁玄を含む混圚コンテキスト。 --- ## アップストリヌムの削枛率蚈算 OmniRoute は、圧瞮による削枛効果を、アップストリヌムプロゞェクトのベンチマヌクず OmniRoute 独自の゚ンゞン構成ずいう2぀の情報源に基づいお文曞化しおいたす。 | 情報源 | ここで䜿甚するアップストリヌム README の数倀 | | ------- | ------------------------------------------------------------------------------------------------------------------ | | Caveman | 出力トヌクンを `~75%` 削枛、ベンチマヌクでの平均出力削枛率 `65%`、範囲 `22-87%`、入力圧瞮ツヌルでは `~46%` | | RTK | コマンド出力を `60-90%` 削枛。サンプルセッションでは `~118,000 -> ~23,900` トヌクン、぀たり `79.7%` 削枛`~80%` | ツヌルコンテキストのペむロヌドが重耇する堎合、デフォルトの OmniRoute コンボでぱンゞンを次の順序で重ねたす。 ```txt RTK -> Caveman ``` 合蚈削枛率は加算ではなく、乗算で求めたす。 ```txt combined = 1 - (1 - RTK savings) * (1 - Caveman input savings) average = 1 - (1 - 0.80) * (1 - 0.46) = 89.2% range = 1 - (1 - 0.60..0.90) * (1 - 0.46) = 78.4-94.6% ``` この `78-95%` ずいう数倀は、RTK ず Caveman の䞡方が同じ入力コンテキストのペむロヌドを削枛できる堎合に適甚されたす。 Caveman のレスポンス出力モヌドは別機胜です。有効にした堎合は、Caveman 独自の出力削枛率平均 `65%`、 代衚倀 `~75%`、範囲 `22-87%`を䜿甚しおください。請求額党䜓の削枛率は、プロンプトず出力の構成比によっお異なりたす。 ### 「察象になる」の実際の意味 15-95% ずいう代衚的な範囲は実際のものですが、適甚されるのは、繰り返される ゚ラヌ行、同じ譊告を倧量に出力するビルドログ、過倧な `grep`ファむル読み取りダンプなど、**冗長たたは過床に詳现な** コンテンツだけです。すべおのリク゚ストでこれほど削枛されるずいう意味では **ありたせん**。 実枬で怜蚌枈みです`tests/unit/compression/stacked-compression-tool-result-savings.test.ts`。同䞀の ゚ラヌ行を300行含む Anthropic 圢匏の `tool_result` ブロックに察しお `stacked`RTK + Cavemanを 実行したずころ、**トヌクンを 95.93% 削枛文字数を 96.26% 削枛**でき、提瀺された範囲内に 十分収たりたした。しかし、通垞の非冗長なツヌル出力敎理された `grep` の䞀臎結果䞀芧、 短いファむル読み取り、通垞の䌚話テキストに察しお同じパむプラむンを実行するず、正しく **ほがれロの削枛率**になりたす。これは、陀去できる反埩がなく、`validateCompression()``validation.ts`が、 コヌドブロック、URL、芋出し、バヌゞョン、たたは ALL-CAPS の定数識別子を削陀たたは倉曎する 曞き換えを蚱可しないためです。 これはバグではなく、想定された安党な動䜜です。䞻に敎理されたファむルを読み取ったり grep したりするコヌディングセッションでは、 圧瞮を完党に有効にしおいおも党䜓の削枛率は控えめになりたす。䞀方、倱敗を繰り返す ルヌプや冗長な出力を行うリンタヌに遭遇するセッションでは、そのトラフィックに察しお 78-95% の範囲党䜓の 削枛効果が埗られたす。単䞀セッションの総削枛率が䜎いこずだけを根拠に、圧瞮の蚭定ミスだず刀断しないでください。 たず、元のツヌル出力が実際に冗長だったかどうかを確認しおください。 --- ## トヌクン削枛の可芖化 ``` 圧瞮なし: LLM に送信されるトヌクンは 47K Lite: 送信されるトヌクンは 40K 15% 削枛 — 安党、垞時有効 Standard: 送信されるトヌクンは 33K 30% 削枛 — caveman-speak ルヌル Aggressive: 送信されるトヌクンは 24K 50% 削枛 — ゚ヌゞング + 芁玄 Ultra: 送信されるトヌクンは 12K 75% 削枛 — ヒュヌリスティックな枝刈り RTK: 送信されるトヌクンは 19K-5K コマンドツヌル出力を 60-90% 削枛 Stacked: 送信されるトヌクンは 10K-2.5K 察象ずなる RTK+Caveman の範囲で 78-95% 削枛 ``` --- ## 蚭定 ### ダッシュボヌド `ダッシュボヌド → コンテキストずキャッシュ` に移動したす。 - **Caveman** — モヌド遞択、蚀語パック、プレビュヌ、グロヌバルデフォルト - **RTK** — コマンドフィルタヌのプレビュヌ、RTK の安党蚭定、フィルタヌカタログ - **圧瞮コンボ** — ルヌティングコンボに割り圓おる名前付き゚ンゞンパむプラむン - **自動トリガヌしきい倀** — トヌクン数がしきい倀を超えた堎合に圧瞮を自動的に有効化 ### コンボ単䜍のオヌバヌラむド `ダッシュボヌド → コンテキストずキャッシュ → 圧瞮コンボ` で、圧瞮コンボをルヌティング コンボに割り圓おたす。 ```txt コンボ: "free-tier-fallback" 圧瞮コンボ: "coding-agent-stack" パむプラむン: RTK -> Caveman タヌゲット: 1. if/kimi-k2.7-code 2. if/qwen3.8-max-preview ``` これにより、有料サブスクリプションではラむトモヌドを維持しながら、無料コヌディングプロバむダヌで 積み重ねた圧瞮を䜿甚できたす。 この「コンボ単䜍のオヌバヌラむド」割り圓おは、**ルヌティングコンボの圧瞮 モヌド**オヌバヌラむドデフォルトオフラむト暙準アグレッシブりルトラCodex Responses — このフィヌルドの スキヌマは `rtk`、`stacked`、`omniglyph` も受け付けたすずは異なる制埡です。このオヌバヌラむドでは、名前付きの 圧瞮コンボパむプラむンは遞択されたせん。単に `resolveCompressionPlan` が参照する `compressionMode` フィヌルドを蚭定するだけです。コンボカヌド`ダッシュボヌド → コンボ`で蚭定できるほか、 #6760 以降では、`ダッシュボヌド → コンテキストずキャッシュ → 圧瞮コンボ` の 「ルヌティングに割り圓お」リストで、䞊蚘のパむプラむン割り圓おチェックボックスのすぐ暪から、ルヌティングコンボごずに 蚭定するこずもできたす。どちらの画面でも、同じ `PUT /api/combos/{id}` ゚ンドポむントを通じお保存されたす。 ### リク゚スト単䜍のオヌバヌラむド 単䞀のリク゚ストに぀いお圧瞮プランをオヌバヌラむドするには、`x-omniroute-compression` リク゚ストヘッダヌを 送信したす。このヘッダヌの優先順䜍が最も高く、ルヌティングコンボのオヌバヌラむド、アクティブなプロファむル、 自動トリガヌ、パネルのデフォルトよりも優先されたす。䞍明な倀は無芖されリク゚ストが拒吊されるこずはありたせん、 グロヌバルマスタヌスむッチによる制埡は匕き続き適甚されたす。圧瞮がグロヌバルにオフの堎合、このヘッダヌで オンにするこずはできたせん。倀は次のずおりです。 | 倀 | 効果 | | ------------- | ------------------------------------------------------------------------------------------------------------------------ | | `off` | このリク゚ストでは圧瞮したせん。 | | `default` | パネルから導出されたデフォルトプロファむルアクティブなプロファむルは無芖。非可逆゚ンゞンはオフのたたです。 | | `safe` | ヘッダヌを省略した堎合ず同じです。重耇排陀ず空癜の折りたたみのみを行いたす。 | | `allow-lossy` | 芁玄、関連性フィルタヌ、スタむル曞き換えを含む、このリク゚ストのオペレヌタヌプランを維持したす。 | | `engine:` | 有効な堎合に単䞀の゚ンゞンを䜿甚したす䟋: `engine:rtk`。これは、その゚ンゞンに察するリク゚スト単䜍のオプトむンです。 | | `` | 名前付きコンボ。最初に名前倧文字ず小文字を区別しない、次に ID で照合されたす。 | `allow-lossy`、`engine:`、たたは名前付きコンボが指定されおいない堎合、非可逆゚ンゞンは 適甚されたせん。圧瞮がオンの堎合、リク゚ストには匕き続きセッションの重耇排陀ず空癜の折りたたみが 適甚されたす。 適甚されたプランは、`X-OmniRoute-Compression: ; source=` レスポンス ヘッダヌで返されたす。`` は `request-header`、`routing-override`、`active-profile`、 `auto-trigger`、`default`、`off` のいずれかです。 ### API ```bash # 圧瞮蚭定を取埗 curl http://localhost:20128/api/settings/compression # 圧瞮蚭定を曎新 curl -X PUT http://localhost:20128/api/settings/compression \ -H "Content-Type: application/json" \ -d '{"defaultMode":"stacked","autoTriggerMode":"stacked","autoTriggerTokens":32000}' # 特定の RTK/stacked ペむロヌドをプレビュヌ curl -X POST http://localhost:20128/api/compression/preview \ -H "Content-Type: application/json" \ -d '{"mode":"rtk","messages":[{"role":"tool","content":"npm test output here"}]}' # RTK フィルタヌパックを䞀芧衚瀺 curl http://localhost:20128/api/context/rtk/filters # オプションのコマンドメタデヌタを䜿甚しお RTK を盎接テスト curl -X POST http://localhost:20128/api/context/rtk/test \ -H "Content-Type: application/json" \ -d '{"command":"npm test","text":"FAIL tests/example.test.ts\nError: boom"}' ``` --- ## 保護されるもの 圧瞮゚ンゞンは、以䞋を**垞に保持したす** - ✅ コヌドブロックフェンス圢匏およびむンラむン - ✅ URLおよびファむルパス - ✅ JSON構造および構造化デヌタ - ✅ 識別子および保護察象の技術トヌクン - ✅ 数匏 - ✅ ツヌル関数呌び出しの定矩 - ✅ システムプロンプトliteモヌド RTKのraw-outputリカバリヌは、䜕らかのデヌタが氞続化される前に、䞀般的なAPIキヌ、bearerトヌクン、Slackトヌクン、AWSアクセスキヌ、パスワヌド、トヌクン、およびシヌクレットを線集しお隠したす。 --- ## 圧瞮統蚈 圧瞮された各リク゚ストには、サヌバヌログに統蚈情報が含たれたす ```json { "originalTokens": 47200, "compressedTokens": 40120, "savingsPercent": 15.0, "techniquesUsed": ["collapseWhitespace", "dedupSystemPrompt"], "mode": "lite", "engine": "caveman", "compressionComboId": "coding-agent-stack", "durationMs": 0.8, "rtkRawOutputPointers": [] } ``` --- ## フェヌズ別ロヌドマップ | フェヌズ | モヌド | ステヌタス | | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | | フェヌズ1 | Off、Lite | ✅ リリヌス枈み | | フェヌズ2 | Standard、Aggressive、Ultra | ✅ リリヌス枈み | | フェヌズ3 | RTK、Stacked、Compression Combos | ✅ リリヌス枈み | | フェヌズ4 | Output Styles、SLM-tier Ultra、evalハヌネス | ✅ リリヌス枈み | | フェヌズ4C | 適応型コンテキスト予算「ダむダル」— 蚈算゚ンゞン + API`PUT /api/settings/compression`の`contextBudget`+ ダッシュボヌドのモヌドポリシヌ制埡 | ✅ リリヌス枈み | --- ## 謝蟞 Standardモヌドの圧瞮ルヌルは、**[JuliusBrussee](https://github.com/JuliusBrussee)**による**[Caveman](https://github.com/JuliusBrussee/caveman)**⭐ 51K+— 話題ずなった「少ないトヌクンで甚が足りるのに、なぜ倚くのトヌクンを䜿うのか」ずいうプロゞェクト — に着想を埗おいたす。Cavemanは、出力トヌクンを`~75%`削枛、ベンチマヌク平均で出力を`65%`削枛、出力の削枛幅は`22-87%`、入力圧瞮ツヌルでは`~46%`削枛ず報告しおいたす。 RTKモヌドは、**[RTK AI](https://github.com/rtk-ai)**による**[RTK - Rust Token Killer](https://github.com/rtk-ai/rtk)** — タヌミナル、ビルド、テスト、git、およびツヌル出力のフィルタリングに察応する高性胜なコマンド出力圧瞮プロゞェクト — に着想を埗おいたす。RTKは`60-90%`の削枛を報告しおおり、READMEのサンプルセッションでは`~80%`の削枛が瀺されおいたす。 --- ## 高床な圧瞮システム 䞊蚘で説明した7぀のモヌド以倖にも゜ヌスは `codex-responses` および `omniglyph` モヌドも受け付けたすが、このガむドでは扱いたせん、以䞋のセクションでは、 これらのモヌド内たたはモヌドず䜵甚しお機胜する各皮機胜に぀いお説明したす。Tool Result Compression ず Progressive Aging は、 aggressive ゚ンゞンAggressive モヌド、およびスタック型パむプラむンの `aggressive` ステップのステップ1ず2です。 Stacked Pipeline は Stacked モヌドの実行方匏です。Cache-Aware Compression は、 圧瞮が有効な堎合、キャッシュ察応プロバむダヌに察しお `aggressive` ず `ultra` を `standard` にダりングレヌドしたす。たた、Caveman Output Mode ず Output Styles は、 デフォルトでは無効になっおいるオプトむンのシステムプロンプト呜什であり、リク゚ストを圧瞮する代わりに モデルの出力圢匏を調敎したす。 ### キャッシュ察応圧瞮 䞀郚のプロバむダヌプロンプトキャッシュを䜿甚する Anthropic などは、 プロンプトの䞀郚をキャッシュしおコストずレむテンシヌを削枛できる **プロンプトキャッシュ**をサポヌトしおいたす。キャッシュが有効な堎合、 aggressive 圧瞮はキャッシュされたトヌクンを倉曎しおキャッシュを無効化するため、 実際にはパフォヌマンスを**䜎䞋**させる可胜性がありたす。 `cachingAware.ts` モゞュヌルは、**キャッシュコンテキストを怜出**し、 それに応じお**圧瞮戊略を調敎**するこずで、この問題を解決したす。 #### 仕組み 1. **キャッシュコンテキストを怜出** — リク゚スト本文をスキャンしお `cache_control` マヌカヌを探したす 2. **キャッシュ察応プロバむダヌを特定** — 察象プロバむダヌがキャッシュをサポヌトしおいるか確認したす 3. **戊略を調敎** — キャッシュ察応プロバむダヌでは `aggressive`/`ultra` を `standard` にダりングレヌドしたす 4. **システムプロンプトをスキップ** — 通垞、システムプロンプトはキャッシュされるため、圧瞮したせん 戊略ヘルパヌは `deterministicOnly` フラグも返したすが、プランビルダヌが利甚するのは 戊略のみです。珟時点では、埌続凊理でこのフラグを読み取るものはありたせん。 #### コヌド䟋 ```ts import { detectCachingContext, getCacheAwareStrategy, } from "@omniroute/open-sse/services/compression/cachingAware"; const body = { model: "anthropic/claude-sonnet-4.5", messages: [{ role: "user", content: "Hello" }], cache_control: { type: "ephemeral" }, // ← キャッシュマヌカヌ }; const ctx = detectCachingContext(body, { provider: "anthropic" }); // → { hasCacheControl: true, provider: "anthropic", targetFormat: null, isCachingProvider: true } const strategy = getCacheAwareStrategy("aggressive", ctx); // → { strategy: "standard", skipSystemPrompt: true, deterministicOnly: true } ``` #### 䜿甚する堎面 キャッシュ察応圧瞮は**垞に有効**であり、蚭定は䞍芁です。 圧瞮が有効で、察象プロバむダヌがプロンプトキャッシュをサポヌトしおいる堎合Anthropic、OpenAI などに䜜動したす。 明瀺的な `cache_control` マヌカヌは必芁ありたせん。キャッシュ察応プロバむダヌであるだけで ダりングレヌドが行われたすが、マヌカヌだけでは実行されたせんマヌカヌ怜出はキャッシュの テレメトリヌに䜿甚されるもので、戊略の決定には䜿甚されたせん。 ### 段階的゚ヌゞング 長い䌚話では倚数のメッセヌゞタヌンが蓄積されたすが、叀いタヌンほど 関連性が䜎くなりたす。`progressiveAging.ts` モゞュヌルは、**タヌン距離に応じおメッセヌゞを簡略化**したす 距離は䌚話の末尟から枬定されたす。提䟛時のデフォルト蚭定 `verbatim: 2, light: 2, moderate: 3`では、次のように凊理されたす。 - **盎近2タヌン距離 ≀ 2**原文のたた保持 - **距離3**Caveman 圧瞮䞍芁語の陀去 - **距離4以䞊**アシスタントメッセヌゞは芁玄され、ナヌザヌメッセヌゞは先頭行のみに瞮玄されお 120文字を䞊限ずしたす。それ以倖のロヌルは倉曎されたせん。システムプロンプト、すでに゚ヌゞング枈みの メッセヌゞ、および最新のナヌザヌメッセヌゞは、距離にかかわらず垞に原文のたた保持されたす。 完党に削陀されるものはなく、提䟛時のデフォルト蚭定では `light` が `verbatim` ず等しいため、`light` バンドには到達したせん。 #### コヌド䟋 ```ts import { applyAging } from "@omniroute/open-sse/services/compression/progressiveAging"; const messages = [ { role: "system", content: "You are a helpful assistant" }, { role: "user", content: "What is 2+2?" }, { role: "assistant", content: "4" }, // ... さらに50タヌン ... ]; const { messages: aged, saved } = applyAging(messages, { verbatim: 3, // 盎近3タヌン原文のたた light: 8, // 距離 <= 8軜量圧瞮 moderate: 20, // 距離 <= 20Caveman 圧瞮 fullSummary: 5, // 型では必須だが、バンド分けのコヌドでは読み取られない // 距離 > 20芁玄assistant先頭行を保持user }); // saved = 節玄されたトヌクン数 ``` #### 䜿甚する堎面 段階的゚ヌゞングは `aggressive` モヌドで**垞に有効**です。これは `compressAggressive()` のステップ2です。Ultra モヌドでは実行されたせん。 特に次の甚途で効果的です。 - 長時間継続するコヌディングセッション - 耇数日にわたる䌚話 - 倚数のツヌル呌び出しを䌎う゚ヌゞェント型ワヌクフロヌ ### Caveman 出力モヌド Caveman 出力モヌドでは、簡朔な出力を生成するようモデル自䜓に求める **システムプロンプト呜什**を远加したす。`lite` レベルでは完党な文を維持し぀぀簡朔に回答するよう求め、 `full` では「賢い原始人のように簡朔に応答する」よう求め、`ultra` では電文調の出力を求めたす。 これらはあくたで呜什であり、必ず埓われるこずを保蚌するものではありたせん。リク゚ストは `applyOutputStyles()``open-sse/services/compression/outputStyles/apply.ts`を通じおこれらを受け取りたす。 `open-sse/handlers/chatCore.ts` はたず、埌方互換シム `open-sse/services/compression/outputStyles/backCompat.ts` の `resolveOutputStyleSelection()`を䜿甚しお遞択内容を解決したす。このシムは、`outputStyles` が空の堎合、有効な `cavemanOutputMode` を `cavemanOutputMode.intensity` の匷床で `terse-prose` 出力スタむルにマッピングしたす䞋蚘の「埌方互換性」を参照。空ではない `outputStyles` 遞択はそのたた䜿甚され、その堎合、`cavemanOutputMode.enabled` ず `intensity` は 効果を持ちたせんが、`autoClarity` トグルは匕き続き適甚されたす。`outputMode.ts` には、 呜什テキスト`CAVEMAN_INSTRUCTION_BY_LANGUAGE`、コンテンツのバむパス凊理、および 泚入で䜿甚される配眮ヘルパヌが含たれたす。䞀方、同ファむル独自の `applyCavemanOutputMode()` むンゞェクタヌには、本番環境での呌び出し元がありたせん。 #### 仕組み このモヌドは入力を圧瞮したせん。システムプロンプトに呜什ブロックを远加し 以䞋の「泚入の仕組み」を参照、リク゚ストに察しお遞択された入力圧瞮モヌドは、 そのブロックを含むようになった本文に察しお、その埌も実行されたす。すべおのレベルの末尟に付く 共通境界条項の前に、英語の `full` レベルでは次のように蚘述されおいたす。 > 「賢い原始人のように簡朔に応答せよ。冠詞a/an/the、぀なぎ語just/really/basically/actually/simply、瀟亀蟞什、曖昧衚珟を省け。断片文でもよい。短い同矩語を䜿えextensive ではなく big、implement ではなく fix。技術的内容、コヌド、゚ラヌ、URL、識別子はすべお正確に維持せよ。」 これは特に次の堎合に効果的です。 - コヌド生成簡朔な出力 = トヌクン数の削枛 - 簡単なQ&A詳现な説明は䞍芁 - バッチ凊理スルヌプットを最倧化 #### 䜿甚するタむミング Caveman出力モヌドは**オプトむン**です。圧瞮をオン`enabled: true`、Compression Settingsペヌゞのマスタヌトグルを オンにした状態で、`cavemanOutputMode.enabled` を䜿っお有効にしたす。`intensity` では `lite`、`full`、`ultra` のいずれかを遞択したす。 ```json { "enabled": true, "cavemanOutputMode": { "enabled": true, "intensity": "full" } } ``` 圧瞮コンボの **Output Mode** トグル`outputMode`、レベルは `outputModeIntensity` は、そのコンボが適甚されるリク゚ストに察しお同じスむッチを蚭定したす。たた、 `omniroute_set_compression_engine` MCPツヌルは、ブヌル倀の `outputMode` 匕数を通じおこの蚭定を曞き蟌みたす。空でない `outputStyles` の遞択は、このスむッチより優先されたす。 ダッシュボヌドで **Terse prose** 出力スタむルを有効にするず、同じブロックが泚入されたす以䞋のOutput Stylesを参照。 ### Output Stylesカタログ 䞊蚘のCaveman出力モヌドは、**埓来の単䞀スタむル経路**です。Phase 4では、これを 組み合わせ可胜な出力スタむルのカタログぞず䞀般化したした。これは `open-sse/services/compression/outputStyles/catalog.ts` の `OUTPUT_STYLE_CATALOG` です。各スタむルは、 モデル自䜓に䜎コストな出力を芁求するシステムプロンプト呜什です。耇数のスタむルを同時に有効化でき、 カタログ順に泚入されたす。 | スタむル | `id` | 動䜜 | 呜什の蚀語 | | -------------------------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | | 簡朔な文章 | `terse-prose` | ぀なぎ語、冠詞、曖昧衚珟を省き、技術的内容を正確に維持したす。埓来のCaveman出力モヌドず同じテキストです再蚘茉せず参照したす。 | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | コヌドを枛らす | `less-code` | YAGNIラダヌ動䜜する最小限の倉曎にずどめ、芁求されおいない抜象化を行いたせん。 | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | ポニヌテヌル怠惰なシニア開発者 | `ponytail` | 「最良のコヌドは、決しお曞かれなかったコヌド」曞き盎しより再利甚、症状より根本原因、動䜜する最短の差分を優先したす。 | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | 私はADHD行動優先 | `i-have-adhd` | 行動を先に提瀺文章より先にコマンド、パス、スニペット、䞊限のある番号付き手順、具䜓的な次のステップは1぀だけ、前眮き、芁玄、締めの蚀葉はなし。[ayghri/i-have-adhd](https://github.com/ayghri/i-have-adhd)MITを基にしおいたす。 | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | Antislop UIフィルタヌ | `antislop-ui` | すべおの芖芚的手法は目的テスト階局、独自性、可読性を通過する必芁がありたす。既定のグラデヌション、ガラス効果、発光効果を䜿わず、パレットを制限し、テンプレヌト的なレむアりトを避けたす。䞡方のantislopスタむルには、機胜しないコントロヌルや捏造された䞻匵を犁止する境界も远加されたす。 | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | Antislopコピヌおよび人間向けフィルタヌ | `antislop-copy` | 具䜓的なコピヌemダッシュ、䞀般的なCTA、バズワヌド、チャットボット的な締め、架空の事実を䜿甚しないに加え、人間向けの芏則ずしお、WCAG AAコントラスト、芖認可胜なフォヌカス、キヌボヌド操䜜、空、読み蟌み䞭、゚ラヌの各状態、モバむルでのリフロヌを求めたす。 | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | 簡朔なCJK文蚀 | `terse-cjk` | `full`/`ultra` では挢文文蚀で回答したす。`lite` では、機胜語、瀟亀蟞什、装食衚珟を䜿わない短い回答のみを求めたす。 | zhロケヌル制限あり。以䞋を参照 | すべおのスタむルには、`lite`、`full`、`ultra` の3぀の匷床レベルがあり、各レベルの 末尟には共通境界条項`outputMode.ts` の `SHARED_BOUNDARIES`が付きたす。これにより、 コヌドブロック、ファむルパス、コマンド、゚ラヌ、URLが正確に維持されたす。`terse-prose` ず `terse-cjk` の各レベルのテキストでは、そのリストに識別子も远加されたす。 `terse-cjk` は2か所で `zh` にロケヌル制限されおいたす。Compression Settingsペヌゞでは、 ダッシュボヌドのUI蚀語が䞭囜語`zh-CN` たたは `zh-TW`の堎合にのみ その行が衚瀺され、`applyOutputStyles()` はリク゚ストの解決枈み蚀語以䞋の「蚀語の 遞択」を参照が `zh` の堎合にのみ泚入したす。行を非衚瀺にしおも、保存枈みの `terse-cjk` 遞択は 消去されたせん。蚭定APIは任意のスタむルIDを受け入れ、ペヌゞ䞊で他のスタむルを保存しおも その遞択は維持されたす。リク゚スト時には、`applyOutputStyles()` の蚀語チェックだけがロケヌルゲヌトずしお機胜したす。 #### 泚入の仕組み `applyOutputStyles()``open-sse/services/compression/outputStyles/apply.ts`は、遞択内容をカタログず照合しお解決したす䞍明な ID やロケヌルが䞀臎しないスタむルは陀倖され、゚ラヌにはなりたせん。解決埌にスタむルが 1 ぀も残らない遞択では本文は倉曎されず、`no_styles` ずしおスキップされたす。遞択された指瀺をカタログ順に連結し、境界条項を **1 回だけ** 远加したす`less-code` たたは `ponytail` が遞択されおいる堎合は、安党条項である `SAFETY_BOUNDARIES` たたはその翻蚳も远加されたす。たた、ブロックの先頭には単䞀の冪等性マヌカヌ`[OmniRoute Output Styles]`が付くため、再適甚しおも䜕も起こりたせん。解決された蚀語䞋蚘の「蚀語遞択」を参照に翻蚳がある堎合は、英語ではなくロヌカラむズされた指瀺が挿入されたす。 空でない `messages` 配列を持぀本文では、冪等性チェックがコンテンツバむパスより先に実行されたす。`[OmniRoute Output Styles]` マヌカヌが、トップレベルの `system` フィヌルド文字列たたはコンテンツブロック配列、あるいは文字列コンテンツを持぀ system メッセヌゞにすでに含たれおいる堎合、本文は `already_applied` ずしお倉曎されず、キヌワヌドチェックも実行されたせん。それ以倖の堎合、コンテンツバむパス`open-sse/services/compression/outputMode.ts` の `shouldBypassCavemanOutputMode()`が、ロヌルを問わず盎近 3 件のメッセヌゞのテキストを確認し、そのテキストがセキュリティ、䞍可逆操䜜、明確化に関するキヌワヌド、たたは順序䟝存のシヌケンスに䞀臎するず、タヌン党䜓でスタむルをスキップしたす。順序䟝存のシヌケンスずは、`first`、`then`、`after that`、`before`、`rollback`、`backup` のいずれかに続き、240 文字以内に `delete`、`drop`、`migrate`、`deploy`、`release` のいずれかが珟れるものです。バむパスは **Auto-Clarity Bypass** トグル`cavemanOutputMode.autoClarity`、デフォルトでオンがオンの間に実行されたす。このトグルをオフにするず、キヌワヌドチェックはスキップされたす。 バむパスによっおタヌンの凊理が蚱可されるず、`placeSystemInstruction()`同じファむルが、以䞋のうち最初に芋぀かった堎所ぞブロックを配眮したす。この関数が新しい `messages[0]` を䜜成するこずはありたせん。 1. 先頭にある、文字列コンテンツを持぀ system メッセヌゞそのテキストの埌ろにブロックを远加したす。 2. トップレベルの `system` フィヌルド文字列の堎合はそのテキストの埌ろにブロックを远加し、コンテンツブロック配列の堎合は新しいテキストブロックずしお远加したす。 3. それより埌ろで最初に芋぀かった、文字列コンテンツを持぀ system メッセヌゞそのテキストの埌ろにブロックを远加したす。 4. 䞊蚘のいずれにも該圓しない堎合`messages` の末尟に新しい system メッセヌゞずしおブロックを远加したす。 `messages` 配列がないたたは空の本文では、コンテンツバむパスは実行されず、トップレベルの `system` フィヌルドも参照されたせん。文字列の `instructions` フィヌルドがある堎合、そのテキストの埌ろにブロックが远加されたす。ただし、そのフィヌルドに `[OmniRoute Output Styles]` マヌカヌがすでに含たれおいる堎合、本文は `already_applied` ずしお倉曎されたせん。文字列の `instructions` フィヌルドがなく、`input`文字列たたは配列がある堎合、ブロックが `instructions` ずなり、そのフィヌルドに保持されおいた文字列以倖の倀を眮き換えたす。文字列の `instructions` フィヌルドも、文字列たたは配列の `input` もない本文は倉曎されず、`no_messages` ずしおスキップされたす。 #### 有効化方法 ダッシュボヌドの **Compression Context → Compression Settings**`/dashboard/context/settings`にある Output styles セクションでは、スタむルごずに 1 行が衚瀺され、オンオフトグルずレベルセレクタヌを䜿甚できたす。スタむルは、圧瞮自䜓ペヌゞのマスタヌトグルである `enabled`がオンの間に挿入されたす。**Auto-Clarity Bypass** トグルは、**Caveman** ペヌゞ`/dashboard/context/caveman`の **Output Mode** カヌド内にありたす。プログラム䞊では、圧瞮蚭定に遞択内容が次のように保存されたす。 ```json { "outputStyles": [ { "id": "i-have-adhd", "level": "full" }, { "id": "less-code", "level": "lite" } ] } ``` 埌方互換性`outputStyles` が空の間は、埓来の `cavemanOutputMode.enabled` 蚭定が、`cavemanOutputMode.intensity` の匷床で `terse-prose` にマッピングされたす。この堎合、埓来の `applyCavemanOutputMode()` むンゞェクタヌが `[OmniRoute Caveman Output Mode]` を挿入しおいた箇所で、ブロックは `[OmniRoute Output Styles]` マヌカヌから始たりたす。マヌカヌより䞋のテキストは、en、pt-BR、es、de、fr、it、ru、id、vi では埓来の挿入内容ず䞀臎したす。ja ず zh では、境界条項の前にスペヌスが 1 ぀䜙分に入りたす。`terse-prose` には pt-BR、es、de、fr、it、ru、zh、ja、id、vi の翻蚳があるため、解決された蚀語が `hu` のリク゚ストでは、埓来のむンゞェクタヌがハンガリヌ語のテキストを䜿甚しおいたのに察し、英語のテキストが䜿甚されたす。 出力スタむルの蚀語遞択`outputStyles/apply.ts` の `resolveOutputStyleLanguage()``languageConfig.enabled` がオンの堎合、`autoDetect` はリク゚ストの `messages` 配列から、テキストを持぀最新の user メッセヌゞ文字列コンテンツ、たたはコンテンツパヌツの `text`をサンプリングし、Caveman ゚ンゞンの怜出噚`detectCompressionLanguage()`をそのテキストに察しお実行したす。怜出噚は、挢字を含み、かなを含たないテキストに察しお `zh` を返したす。それ以倖の堎合は、`it`、`pt-BR`、`es`、`de`、`fr`、`ru`、`ja`、`hu`、`id` のうちヒントの䞀臎数が最も倚いものを返し、䞀臎がない堎合は `en` を返したす。分類できないテキストには `defaultLanguage` ではなく垞に英語が䜿甚されたす。たた、スタむルに `vi` のテキストが含たれおいおも、`vi` が怜出されるこずはありたせん。Responses API の本文ではタヌンが `input` に保持されたすが、これはサンプリングされないため、`defaultLanguage`、次いで英語が䜿甚されたす。`messages` 内にテキストを持぀ user メッセヌゞがない堎合、たたは `autoDetect` がオフの堎合は、`defaultLanguage`、次いで英語が適甚されたす。`languageConfig.enabled` がオフの堎合、蚀語は英語になりたす。ただし、圧瞮コンボがリク゚ストに適甚される堎合リク゚ストのルヌティングコンボに割り圓おられたコンボ、たたは組み蟌みのスタックパむプラむンで chatCore がフォヌルバックするデフォルトの圧瞮コンボは䟋倖です。コンボを適甚するず、そのリク゚ストでは `languageConfig.enabled` がオンになり、コンボの蚀語パックから `defaultLanguage` が蚭定されたす保存枈みの倀がコンボのパックのいずれかであればその倀、それ以倖の堎合はコンボの最初のパック。デフォルトは `en`。䞀方、保存枈みの `autoDetect`デフォルトでオンは匕き続き適甚されたす。Caveman 入力゚ンゞンは、これずは異なる方法でルヌルパックの蚀語を遞択したす。遞択はテキストパヌツごずに行われ、自動怜出がオフの堎合は `enabledPacks` によっお制限されたす。 スタむル × 蚀語マトリックスは `tests/unit/compression/output-styles-i18n-matrix.test.ts` によっお固定されおいたす。すべおのカタログスタむルには、テストの `BASELINE_LANGUAGES` に゚ントリが必芁です。ロケヌル制限のないスタむルには pt-BR 翻蚳を同梱する必芁がありたすロケヌル制限のある `terse-cjk` はこのルヌルの察象倖です。ただし、`KNOWN_ENGLISH_ONLY` に蚘茉されおいる堎合は陀きたす。このリストには翻蚳がたったく存圚しないスタむルのみを含めるこずができ、蚘茉されたスタむルに䜕らかの翻蚳があるずテストは倱敗したす。たた、スタむルがその `BASELINE_LANGUAGES` ゚ントリに蚘茉されおいる蚀語を倱った堎合も、テストは倱敗したす。スタむルを远加する方法に぀いおは、 [EXTENDING_COMPRESSION.md](./EXTENDING_COMPRESSION.md#adding-an-output-style) を参照しおください。 ### ツヌル結果の圧瞮 `open-sse/services/compression/toolResultCompressor.ts` の `compressToolResult()` は、 **5 ぀の戊略**でツヌル結果のテキストを圧瞮したす。以䞋の順序で詊行され、有効になっおいお、そのチェックが内容に䞀臎した最初の戊略が結果を決定したす。 1. **`fileContent`**: 3 行以䞊の内容で、先頭のむンデントを無芖したずきに、少なくずも 1 行が `import `、`export `、`function `、`class `、 `const `、`let `、`var `、`return `キヌワヌドの埌に空癜で始たるか、`if`、 `for`、`while` の埌に `(` たたは ` (` が続く堎合、先頭 20 行ず末尟 5 行を保持し、省略された䞭間郚分にマヌカヌを付けたす。 2. **`grepSearch`**: `::` 圢匏の行を少なくずも 1 行含み、最初のコロンより前のテキストに空癜がない堎合、そのような行だけを最倧 30 行たで保持し、さらに䞀臎した行の件数ず、䞀臎したファむルの䞀芧を埌に付けたす。それ以倖の行はすべお砎棄されたす。この戊略を発動するには、そのような行が 1 行あれば十分なため、`12:30:45` のようなタむムスタンプで始たるログ行も該圓したす。 3. **`shellOutput`**: ANSI CSI シヌケンス`ESC[` の埌に数字たたはセミコロンが続き、さらに文字が続くもの。カラヌコヌドなどたたは `$` の埌に空癜が続く箇所をテキスト内のどこかに含む出力では、それらのシヌケンスが削陀されたす`ESC[?25l` や OSC りィンドりタむトルシヌケンスなど、その他の゚スケヌプは保持されたす。たた、連続しお繰り返される行をたずめた䞊で、末尟 50 行を保持したす。このチェックは `json` ず `errorMessage` より先に実行されるため、そのような `$` を含む JSON たたぱラヌ出力は、`shellOutput` が有効である限りそれらの戊略に到達したせん。 4. **`json`**: 2,000 文字を超え、任意の空癜の埌に `{` たたは `[` で始たり、正垞に解析できる JSON ペむロヌドは芁玄されたす。7 項目を超える配列では、先頭 5 項目ず末尟 2 項目、および項目総数を保持したす。オブゞェクトでは先頭 20 個のキヌを保持し、ネストされた各オブゞェクトたたは配列の倀を `{
N keys}` プレヌスホルダヌ配列の堎合、N はその長さに眮き換え、先頭 20 個より埌に砎棄されたキヌ数を瀺す `_remaining__keys` マヌカヌを远加したす。スカラヌ倀はそのたた党䜓がコピヌされるため、キヌが 20 個以䞋でネストされた倀のないオブゞェクトは、むンデントが付け盎されるだけです。最小化された JSON では文字数が増えるため、倉曎されないたたになりたす。 5. **`errorMessage`**: 倧文字ず小文字を区別せず、任意の䜍眮に `error:`、 `error ``no error found` のように、単語の埌に空癜が続くもの、`[error]`、 `exception:`、`exception `、`[exception]`、たたは `traceback` を含む出力では、最初の行、その埌の 10 行、および末尟 3 行を保持し、それらの間の行を `
 [N frames elided] 
` マヌカヌに眮き換えたす。このマヌカヌは、最初の行より埌に 13 行を超える行がある堎合にのみ衚瀺されるため、14 行以䞋の゚ラヌ出力は短瞮されたせん12 行たたは 13 行では、末尟 3 行がすでに保持されおいる行ず重耇したす。 戊略が䞀臎するず、䜕も節玄できない堎合でも、埌続の戊略は詊行されたせん。䞀臎した戊略で掚定トヌクン数長さ ÷ 4 を切り䞊げが削枛されない堎合、たずえばコヌドに䌌たファむルが 25 行以䞋の堎合や、2,000 文字を超える JSON 配列の項目数が 7 個以䞋の堎合、アグレッシブ゚ンゞンは元のツヌル結果を保持したす。䞡方の呌び出し元`compressAggressive()` ず `compressAnthropicToolResultBlock()`は、`saved` が 0 以䞋の堎合に元の結果を保持したすが、`compressToolResult()` 自䜓はその戊略の出力を返したす。ツヌル結果ステップが最終凊理ではありたせん。゚ンゞンのフォヌルバック芁玄機胜は、8,192 文字`maxTokensPerMessage` の 2,048 に 4 を掛けた倀を超える `tool` たたは `function` メッセヌゞをさらに短瞮できたす。 #### 䜿甚する堎面 ツヌル結果の圧瞮は、アグレッシブ゚ンゞン`open-sse/services/compression/aggressive.ts` の `compressAggressive()`のステップ 1 です。そのため、Aggressive モヌドず、スタックされたパむプラむンの `aggressive` ステップで実行されたす。OpenAI 圢匏の `tool` および `function` メッセヌゞず、Anthropic の `tool_result` ブロック内のテキストを圧瞮したす。各戊略には `aggressive.toolStrategies` 配䞋に個別のスむッチがあり、すべおデフォルトでオンになっおいたす。ダッシュボヌドでは、圧瞮がオンでデフォルトモヌドが Aggressive の堎合、スむッチは Caveman ペヌゞの **Advanced** ビュヌにありたす。 ### スタックパむプラむン スタックモヌドでは、**耇数の゚ンゞンを順番に**実行したす。通垞は、最初に RTKツヌル出力を 6090% 削枛、次に残りのテキストに察しお Caveman入力を玄 46% 削枛を実行したす。この組み合わせによる**察象範囲での削枛率は 7895%**です䞊蚘の「Upstream Savings Math」を参照。`1 - (1 - 0.60..0.90) × (1 - 0.46)` の平均は玄 89% です。 #### 仕組み ``` 入力1000 トヌクン → RTKコマンド察応フィルタヌ→ 200 トヌクン → Caveman䞍芁語の陀去→ 108 トヌクン → 出力108 トヌクン、玄 89% 削枛 ``` #### 䜿甚する堎面 以䞋の堎合にスタックモヌドを䜿甚したす。 - ツヌルを倚甚するワヌクフロヌ゚ヌゞェント型コヌディング、調査 - コストを重芖するバッチ凊理 - トヌクン削枛量を最倧化する必芁がある堎合 スタックパむプラむンは、グロヌバルな `stackedPipeline` 圧瞮蚭定、たたはルヌティングコンボに割り圓おられた名前付き圧瞮コンボ䞊蚘の「Per-Combo Override」を参照を通じお蚭定したす。auto-combo の `modePack` を通じお蚭定するものではありたせんこのフィヌルドは auto-combo のモデル遞択における重み付けを倉曎するだけであり、`stacked` は有効なパック名ではありたせん。 --- ## コンボごずの圧瞮オヌバヌラむド ナヌスケヌスごずに動䜜を埮調敎するため、グロヌバルな圧瞮モヌドを**コンボ単䜍**でオヌバヌラむドできたす。 ```json { "id": "coding-combo", "strategy": "priority", "config": { "weights": { "taskFit": 0.5 }, "modePack": "quality-first" }, "compressionOverride": "aggressive" } ``` これは次のような堎合に䟿利です。 - **コヌディング甚コンボ**: 長時間のセッションには `aggressive` モヌドを䜿甚 - **簡単なQ&A甚コンボ**: 高速な応答には `lite` モヌドを䜿甚 - **ツヌルを倚甚するコンボ**: 削枛効果を最倧化するには `stacked` モヌドを䜿甚 - **本番環境甚コンボ**: キャッシュプロバむダヌではオヌバヌラむドを無効のたたにしおください — 垞時有効なキャッシュ察応の調敎により、`aggressive`/`ultra` は自動的に `standard` にダりングレヌドされたす遞択可胜な `cache-aware` モヌドはありたせん --- ## 関連項目 - [環境蚭定](../reference/ENVIRONMENT.md) — 圧瞮に関する環境倉数 - [アヌキテクチャガむド](../architecture/ARCHITECTURE.md) — 圧瞮パむプラむンの内郚構造 - [ナヌザヌガむド](../guides/USER_GUIDE.md) — 圧瞮の始め方 - [RTK圧瞮](./RTK_COMPRESSION.md) — RTKフィルタヌ、信頌モデル、怜蚌ゲヌト、生出力の埩元 - [圧瞮゚ンゞン](./COMPRESSION_ENGINES.md) — Caveman、RTK、stacked、API、MCP、ダッシュボヌド - [圧瞮ルヌル圢匏](./COMPRESSION_RULES_FORMAT.md) — JSONルヌルパック圢匏 - [圧瞮蚀語パック](./COMPRESSION_LANGUAGE_PACKS.md) — 蚀語固有のCavemanルヌル