VS Code 1.120 のターミナル出力圧縮とリスク評価がなかなかよさそう
TL;DR — VS Code 1.120 でプレビュー追加されたターミナル出力圧縮(
chat.tools.compressOutput.enabled)とリスク評価(chat.tools.riskAssessment.enabled)。圧縮はコンテキスト管理、リスク評価は実行前の安全確認と役割が違う。特に圧縮は RTK と処理レイヤーが完全に別なので共存できる(らしい)。
何が追加されたか
VS Code 1.120 のリリースノートを眺めていたら、エージェント周りで自分の関心をひく機能が 2 つ入っていた。
ターミナル出力の自動圧縮とターミナルコマンドのリスク評価だ。
ターミナル出力の自動圧縮
設定は Chat › Tools › Compress Output: Enabled。これはプレビュー。
Claude さんの解説は以下。
有効にすると、エージェントがターミナルコマンドを実行したあと、その出力をモデルに送る前に VS Code 側で自動的に削減してくれる。具体的には以下の処理が入る。
git diffの差分で変更のない部分を折りたたむ- lockfile や snapshot の差分を丸ごと除外
ls -lをファイル名だけに削減npm installの進捗バー・非推奨警告・audit サマリーを除去圧縮された出力には先頭にバナーが付く。「どのフィルタが適用されたか」「生のテキストが必要なら圧縮を無効にできる」という情報をモデルに伝えるためのやつ。モデルが圧縮済みであることを認識できるのは地味に大事。
いや、これ RTK と同じじゃね?
AI を提供している会社のどれかがそのうち自社で実装するかもなー、とか思ってたけど案外早かったな。
リスク評価
設定は Chat › Tools › Risk Assessment: Enabled。こちらはエクスペリメンタル。
おなじみの Claude さんの解説は以下。
エージェントがターミナルコマンドを実行しようとしたとき、確認ダイアログにリスクバッジと AI 生成の説明が表示されるようになる。バッジは 3 段階。
バッジ 意味 🟢 Safe ファイルの読み取りや出力のみ。変更なし 🟠 Caution ワークスペースへの変更やネットワーク呼び出しを含む 🔴 Review carefully force push や外部への削除など、要注意な操作 バッジの横に 1 文のサマリーが出る。「このコマンドが何をするか」を一言で教えてくれるやつ。自動承認の判断材料として使える。
おお、これはいいかもね。目で見て危険度が分かるのはいい。
RTK との関係
で、まんま RTK じゃん、と思った compressOutput。
これ RTK と競合しないの?ってのを、VS Code のソースを Claude さんに調べてもらった。
結論:完全に干渉しない。処理対象のフェーズが違う。
[モデルがコマンドを生成] ↓ [PreToolUse] ← RTK はここ。コマンド文字列に介入 ↓ [ターミナル実行] ↓ [出力が生成される] ↓ [compressOutput] ← ここ。出力テキストを削減してからモデルへ ↓ [モデルが受け取る]RTK はコマンドが実行される前に差し込む。compressOutput はコマンドが実行された後の出力に作用する。対象が「コマンド文字列」と「コマンドの出力」で別なので、二重処理も競合も起きない。
むしろ直列で補完し合う形になる。RTK でコマンドを最適化して、compressOutput でその出力を圧縮する、という順番。
そんなに上手くいくかなぁ… ってのが正直な感想。
とりあえずは使ってみて様子見かな。
まとめ
コンテキストウィンドウの節約という観点では compressOutput は地味に効く。
特に、6月から PremiumRequests がなくなって、トークン量での課金になるらしいので、これは嬉しい。
リスク評価は「自動承認してたけど実は怖いコマンドを素通りしてた」みたいなのを防ぐのに使えそう。
しばらく両方有効で様子を見る。