Skip to content

アカウントバックアップと移行:インポート/エクスポート、V1/DB ホットマイグレーション

あなたが実際に「バックアップ」したいのは、クォータ数字ではなく、アカウントを再度ログインさせることができる refresh_token です。このレッスンでは、Antigravity Tools の複数の移行方法を明確に説明します:JSON インポート/エクスポート、state.vscdb からのインポート、V1 データディレクトリからのインポート、自動同期の動作方法。

学習後にできること

  • アカウントプールを JSON ファイルとしてエクスポートする(email + refresh_token のみ含む)
  • 新しいマシンでこの JSON をインポートし、アカウントプールを迅速に復元する
  • Antigravity/IDE の state.vscdb から「現在ログイン中のアカウント」を直接インポートする(デフォルトパスとカスタムパスをサポート)
  • V1 データディレクトリから自動的にスキャンし、古いアカウントをインポートする
  • 「現在アカウントの自動同期」が実際に何をするか、いつスキップされるかを理解する

現在の課題

  • システム再インストール/マシン変更後、アカウントプールを再度追加する必要があり、コストが高い
  • Antigravity/IDE でログインアカウントを切り替えたが、Manager 内の「現在のアカウント」が変更されていない
  • 以前 V1/スクリプト版を使用しており、古いデータファイルしか持っておらず、直接移行できるかわからない

いつこの方法を使用するか

  • アカウントプールを別のマシン(デスクトップ/サーバー/コンテナ)に移動したい場合
  • Antigravity を「権威あるログイン入口」とし、Manager が現在のアカウントを自動的に同期してほしい場合
  • 旧バージョン(V1 データディレクトリ)からアカウントを移動したい場合

🎒 開始前の準備

  • Antigravity Tools を開くことができ、アカウントプールに少なくとも 1 つのアカウントがある
  • アカウントデータが機密情報であることを知っている(特に refresh_token

セキュリティ提醒:バックアップファイルをパスワードとして扱う

エクスポートされた JSON ファイルには refresh_token が含まれています。これを入手した人は誰でも、それを使用して access token を更新できる可能性があります。バックアップファイルをクラウドストレージのパブリックリンクにアップロードしたり、グループに送信したり、Git にコミットしたりしないでください。

コアアイデア

Antigravity Tools の「移行」は本質的に2つのことです:

  1. 使用可能な refresh_token を見つける
  2. それを使用して access token を取得し、Google から実際のメールアドレスを取得し、アカウントをローカルアカウントプールに書き込む

3 つのエントリを提供します:

  • JSON インポート/エクスポート:「制御可能なバックアップ」を明確に行いたい場合に適している
  • DB インポート:Antigravity/IDE のログイン状態を権威あるソースとみなす場合に適している(デフォルトで state.vscdb を検索し、手動ファイル選択もサポート)
  • V1 インポート:古いデータディレクトリから自動的にスキャンし、移行する場合に適している

さらに「自動同期」があります:DB 内の refresh_token を定期的に読み取り、Manager の現在のアカウントと異なる場合、自動的に DB インポートを実行します。同じ場合はスキップします(トラフィックを節約)。

手順に従って進める

ステップ 1:アカウントプールをエクスポートする(JSON バックアップ)

なぜ これが最も安定した、制御可能な移行方法です。ファイルを 1 つ入手するだけで、別のマシンでアカウントプールを復元できます。

操作:Accounts ページに入り、エクスポートボタンをクリックします。

  • 設定で default_export_path を設定している場合、エクスポートは直接そのディレクトリに書き込まれ、ファイル名は antigravity_accounts_YYYY-MM-DD.json になります。
  • デフォルトディレクトリを設定していない場合、システム保存ダイアログが表示され、パスを選択できます。

エクスポートファイルの内容は次のようになります(配列内の各項目は必要なフィールドのみ保持):

json
[
  {
    "email": "[email protected]",
    "refresh_token": "1//xxxxxxxxxxxxxxxxxxxxxxxx"
  },
  {
    "email": "[email protected]",
    "refresh_token": "1//yyyyyyyyyyyyyyyyyyyyyyyy"
  }
]

次のように表示されます:ページでエクスポート成功が通知され、保存パスが表示されます。

ステップ 2:新しいマシンで JSON をインポートする(アカウントプールを復元)

なぜ インポートは「アカウント追加」ロジックを個別に呼び出し、refresh_token を使用して実際のメールアドレスを取得し、アカウントプールに書き込みます。

操作:引き続き Accounts ページで、「Import JSON」をクリックし、エクスポートしたファイルを選択します。

形式要件は次のとおりです(少なくとも 1 つの有効なレコードを含む必要があります):

  • JSON 配列である必要があります
  • refresh_token を含み、1// で始まる項目のみがインポートされます

次のように表示されます:インポート完了後、アカウントリストにインポートされたアカウントが表示されます。

Proxy を実行中にインポートする場合

「アカウント追加」が成功するたびに、バックエンドはリバースプロキシのトークンプールのリロードを試み、新しいアカウントを即座に有効にします。

ステップ 3:state.vscdb から「現在ログイン中のアカウント」をインポートする

なぜ バックアップファイルを管理したくなく、「Antigravity/IDE のログイン状態を基準にしたい」だけの場合があります。DB インポートはこのシナリオ用です。

操作:Accounts ページに入り、Add Account をクリックし、Import タブに切り替えます:

  • 「Import from Database」をクリック(デフォルト DB パスを使用)
  • または「Custom DB (state.vscdb)」をクリックし、*.vscdb ファイルを手動で選択

デフォルトの DB パスはクロスプラットフォームです(--user-data-dir または portable mode も優先的に識別されます):

text
~/Library/Application Support/Antigravity/User/globalStorage/state.vscdb
text
%APPDATA%\Antigravity\User\globalStorage\state.vscdb
text
~/.config/Antigravity/User/globalStorage/state.vscdb

次のように表示されます

  • インポート成功後、このアカウントは Manager の「現在のアカウント」に自動的に設定されます
  • システムは自動的にクォータ更新を 1 回トリガーします

ステップ 4:V1 データディレクトリから移行する(旧バージョンインポート)

なぜ 以前 V1/スクリプト版を使用していた場合、Manager は古いデータディレクトリを直接スキャンし、インポートを試みることができます。

操作:Import タブで、「Import V1」をクリックします。

ホームディレクトリの下でこのパス(およびその中のインデックスファイル)を検索します:

text
~/.antigravity-agent/
  - antigravity_accounts.json
  - accounts.json

次のように表示されます:インポート完了後、アカウントがリストに表示されます。インデックスファイルが見つからない場合、バックエンドはエラー V1 account data file not found を返します。

ステップ 5(オプション):「現在アカウントの自動同期」を有効にする

なぜ Antigravity/IDE でログインアカウントを切り替える際、Manager は固定間隔で DB 内の refresh_token が変更されたかどうかを検出し、変更があれば自動的にインポートできます。

操作:Settings に入り、auto_sync を有効にし、sync_interval を設定します(単位:秒)。

次のように表示されます:有効にすると、即座に 1 回の同期が実行されます。その後、間隔に従って定期的に実行されます。DB 内の refresh_token が現在のアカウントと同じ場合、スキップされ、重複インポートされません。

チェックポイント ✅

  • Accounts リストにインポートされたアカウントが表示されます
  • 「現在のアカウント」が期待するものに切り替わっているのが確認できます(DB インポートは自動的に現在に設定します)
  • Proxy を起動すると、新しくインポートされたアカウントが正常にリクエストに使用できます(実際の呼び出し結果に基づきます)

トラブルシューティング

シナリオ間違ったやり方(❌)推奨されるやり方(✓)
バックアップファイルのセキュリティエクスポートされた JSON を通常の設定ファイルとして手放しに配布するJSON をパスワードとして扱い、伝播範囲を最小限にし、パブリックネットワークへの露出を避ける
JSON インポート失敗JSON が配列ではない、または refresh_token に 1// 接頭辞がないプロジェクトからエクスポートされた JSON をテンプレートとして使用し、フィールド名と構造を一致させる
DB インポートでデータが見つからないAntigravity がログインしていない、または DB に jetskiStateSync.agentManagerInitState が不足している最初に Antigravity/IDE がログインしていることを確認し、インポートを再試行する。必要に応じて Custom DB で正しいファイルを選択する
V1 インポート後、アカウントが使用不可古い refresh_token が無効そのアカウントを削除し、OAuth/新しい refresh_token で再度追加する(エラー通知に基づく)
auto_sync が頻繁すぎるsync_interval を小さく設定し、頻繁に DB をスキャンする「状態追従」とみなし、受け入れ可能な頻度に間隔を設定する

このレッスンのまとめ

  • JSON エクスポート/インポートは最も制御可能な移行方法:バックアップファイルには email + refresh_token のみが含まれる
  • DB インポートは「Antigravity/IDE の現在ログインアカウントを基準とする」場合に適しており、自動的に Manager の現在のアカウントに設定される
  • V1 インポートは ~/.antigravity-agent をスキャンし、複数の旧形式と互換性がある
  • auto_sync は refresh_token を比較し、同じ場合はスキップし、重複インポートしない

次のレッスン予告

次のレッスンでは、「移行後のアカウントプール」を実際に使用します:ローカルリバースプロキシを起動し、最初のクライアントを接続する(/healthz + SDK 設定)

学びます:

  • Proxy を起動/停止し、/healthz で最小限の検証を行う方法
  • SDK/クライアントで Base URL を設定する方法

付録:ソースコード参照

クリックしてソースコードの場所を表示

更新日時:2026-01-23

機能ファイルパス行番号
Accounts エクスポート/インポート JSON(save_text_file / read_text_filesrc/pages/Accounts.tsx458-578
Dashboard でアカウント JSON をエクスポートsrc/pages/Dashboard.tsx113-148
Import タブ:DB インポート / Custom DB / V1 インポートボタンsrc/components/accounts/AddAccountDialog.tsx491-539
アカウント追加:フロントエンド email を無視、refresh_token を使用して実際のメールアドレスを取得し、自動クォータ更新、Proxy ホットリロードsrc-tauri/src/commands/mod.rs19-60
---------
DB インポート:state.vscdb から refresh_token を抽出(ItemTable + base64 + protobuf)src-tauri/src/modules/migration.rs192-267
---------
DB インポート後、自動的に「現在のアカウント」に設定し、クォータを更新src-tauri/src/commands/mod.rs495-511
auto_sync:refresh_token を比較し、同じ場合はスキップ、変更がある場合は DB インポートをトリガーsrc-tauri/src/commands/mod.rs532-564
フロントエンドバックグラウンドタスク:sync_interval に従って定期的に syncAccountFromDb() を呼び出しsrc/components/common/BackgroundTaskRunner.tsx43-72