はじめに(前回のあらすじ)
前回の記事(Antigravity IDEのチャット欄でEnter改行できない問題を、AI自身に本体パッチ当ててもらって解決した話の続き ~Antigravity IDEの不満点をAntigravity自身にハックさせて解決した話)(タイトル長ぇ) では、Antigravity IDEの「チャットでEnter改行できない」「セッション一覧がない」「名前変更できない」「ピン留めできない」という不満を、Antigravity自身に本体(workbench.desktop.main.js)をハックさせて解決した話を書きました。
しかし、実際に日々使い倒していく中で、いくつか新たな課題が出てきました。
- 「いま開いているセッション」が一覧の中で埋もれる(ドロワーを開いたとき、現在セッションが一番上に来てほしい)
- 本体の巨大な圧縮JSに直接コードを埋め込んでいるため、管理がツラい(他人に勧めにくいし、アップデート時の保守が大変)
- 「これ、拡張機能(Extension)として切り離せないの?」という疑問
そこで今回、AIとペアプロしながらさらにコードをブラッシュアップし、使い勝手の向上・モジュール分離・自動インストーラー化を行い、GitHubリポジトリとして正式リリース(v1.0.1)しました!
- GitHubリポジトリ: swirhen/antigravity_ide_selfpatch
-
ワンクリック導入用 ZIP: Releases v1.0.1
(記事の公開からリリースが進んでる場合があるので確認してね)
🚀 今回のアップデートで進化したところ
前回からの差分として、実用性を極限まで高めるための以下の改善が入っています。
1. 現在選択中のセッションを「常に一番上」に固定ソート
ドロワー一覧は基本的に更新時刻が新しい順(ピン留め優先)で並びますが、「現在開いているセッション」はそのソート順を無視して、必ずリストの最上位(index 0)に固定表示されるようにしました。
会話を切り替える際、今いる位置を基準に迷わず他のセッションへジャンプできます。
2. 直感的な青いラジオアイコン & ピン並列表示
現在開いているセッションの左端には、ピュアCSSで描画された青い二重丸(ラジオ型)インジケーターを表示。
もしそのセッションがピン留めされている場合は、青いラジオアイコンの右隣に金色のピン留めアイコンが並んで表示されるため、「ピン留めされた重要なセッションを開いている」状態が一目で分かります。
3. ドロワーを開いた直後の「マウス誤爆防止ガード」
ドロワー(F4)を開いた瞬間、たまたまマウスカーソルが置かれていた過去セッションにフォーカスが奪われてしまう問題がありました。
そこで、「マウスが3px以上実際に動いた時だけ選択を追従させる」誤選択防止ガードを実装。開いた直後はキーボード操作(↑/↓)で安全にセッションを選択できます。
4. 正式なショートカットコマンド化(VS Code Keybindings連携)
チャットパネルフォーカス時限定のコマンドとして登録したため、VS Codeの「キーボード ショートカット」設定から自由にお好みのキーへ変更できるようになりました:
| 機能 | キー | コロンコマンド(Enter即実行) |
|---|---|---|
| セッション一覧ドロワー開閉 | F4 |
:resume / :res
|
| セッション名変更(ダイアログ) | F2 |
:rename <名前> / :ren
|
| 現在のセッションをピン留め | F6 |
:pin / :p
|
| ピン留め解除 | Ctrl + F6 |
:unpin / :up
|
| 新規セッション開始 | Ctrl + F4 |
:new / :n
|
| メッセージ送信 |
Ctrl + Enter (Mac: Cmd + Enter) |
— |
| 改行 | Enter |
— |
※名前変更ダイアログ(F2)やドロワー(F4)を閉じた後は、自動的にチャット入力欄へキーボードフォーカスが復帰します。
🤔 なぜ「VSCode拡張機能」にしなかったのか?
「本体ファイルをパッチするのではなく、普通のVS Code拡張機能(.vsix)にできないの?」という点もAIと一緒に徹底的に検証しました。
結論から言うと、VS Codeのアーキテクチャ上、公式APIだけでは絶対に不可能でした。
- VS Codeの拡張機能は、UI描画プロセスとは完全に切り離された別プロセス(Extension Host)で動作しています。
- 今回のパッチで操作している
trajectorySummariesProviderやsetCascadeId、名前変更用のRPC関数は、Antigravity IDEの内部Reactコンポーネント内に閉じ込められた非公開オブジェクトです。 - チャット入力欄(Lexical)のキーイベントや、チャットパネル上部へUIコンポーネントを差し込む仕組みは、拡張機能APIには公開されていません。
解決策:モジュール分離 & インストーラーによるバンドル注入
そこで、「開発・保守用の独立モジュール」 と 「ワンクリックインストーラー」 に構造を分離しました:
-
antigravity-session-patch.js(モジュール原本):
ドロワーUIやダイアログなどの全ロジックを、インデントの整った綺麗な1つのJavaScriptファイルとして独立管理。 -
apply_patch.py(自動インストーラー):
手元のモジュールを本体先頭に安全にバンドル注入し、本体内のフック(数行)を適用。
さらに、product.jsonのチェックサム(sha256)も同時に自動再計算・更新します。
この仕組みにより、VS Code特有の「インストールが破損しています」という警告(Corrupted Installation WARNING)が出る問題も完全にクリアしています!
📦 インストール方法(Git不要・ZIP解凍して叩くだけ)
Python(3.8以上)が入っている環境であれば、Windows / Mac / Linux 問わずワンタッチで導入できます。
-
Releases ページ から
antigravity_ide_selfpatch_v1.0.1.zipをダウンロードして解凍します。
(記事の公開からリリースが進んでる場合があるので確認してね) - 解凍したフォルダでターミナル(PowerShellやTerminal)を開き、以下を実行します:
python apply_patch.py - Antigravity IDE上で Ctrl + Shift + P(Mac: Cmd + Shift + P)を押し、Developer: Reload Window(開発者: ウィンドウの再読み込み)を実行します。
(※Gitをお使いの方は、リポジトリを git clone して python apply_patch.py を実行するだけでもOKです)
本体のアップデートが来てパッチが消えてしまった場合も、再度 python apply_patch.py を1回叩くだけで即座に元通りになります。 初期状態のバックアップ(.backup_before_patch)も自動作成されるため、アンインストールも安全に行えます。
おわりに:バイブコーディングの真骨頂
「ツールに使われるのではなく、ツールを自分好みに作り変える」
Enter改行の小さな不満から始まったハックでしたが、AI(Antigravity)と対話しながら不満点を洗い出し、内部コードを解析させ、UIコンポーネントを設計させ、最後は独立モジュールとしてパッケージングしてGitHubにリリースする……という、まさにバイブコーディングの極致のような体験ができました。
Antigravity IDEを使っていて「セッション管理やEnter改行に不便さを感じていた」という方は、ぜひ使ってみてください!
この記事も当然のようにAntigravityのGeminiに書いてもらいました。ちょっと文章がクドいけど、自分で書くより100倍マシにわかりやすいし問題ないわな