Skip to content

Antigravity CLI のセッション履歴の保存場所 ​

Antigravity CLI(agy)は ~/.gemini/antigravity-cli/brain/<会話 uuid>/.system_generated/logs/ に step 記録を保存します。transcript.jsonl と transcript_full.jsonl を比較してください。どちらも完全とは限りません:

~/.gemini/antigravity-cli/brain/<会話 uuid>/.system_generated/logs/transcript.jsonl

全体の構成:

~/.gemini/antigravity-cli/
├── brain/<会話 uuid>/
│   ├── .system_generated/logs/
│   │   ├── transcript.jsonl        ← ローリングウィンドウ
│   │   └── transcript_full.jsonl   ← 名目上は完全版
│   ├── chunks/
│   ├── scratch/
│   └── media__<タイムスタンプ>.<拡張子>   ← 添付ファイル
└── history.jsonl                   ← インデックス

会話が属するプロジェクト ​

パスには手がかりがありません。答えはルートのインデックスにあります:

bash
jq -r '[.timestamp, .workspace, .display] | @tsv' \
  ~/.gemini/antigravity-cli/history.jsonl | sort -r | head

各行は {display, timestamp, workspace, conversationId} です。workspace がプロジェクトディレクトリ、conversationId が brain/ 配下のフォルダ名です。

どちらの transcript を読むか ​

どちらも完全であるとは限りません。transcript.jsonl はチェックポイントで圧縮されるローリングウィンドウで、transcript_full.jsonl も名前に反して同じくチェックポイントで切り詰められます。実用上のルールは、大きいほうを読むことです。

さらに transcript.jsonl は追記専用ではありません。圧縮時に CLI がファイル全体を書き直すため、これを監視するものはファイルが大きくなるケースだけでなく小さくなるケースも扱う必要があります。単調増加を前提にした tail は、ある時点から静かに更新を止めます。

step レコードの形式 ​

json
{"step_index":12,"source":"USER_EXPLICIT","type":"USER_INPUT","status":"...",
 "created_at":"...","content":"...","thinking":"...","tool_calls":[{"name":"...","args":{}}]}

source は USER_EXPLICIT、MODEL、SYSTEM のいずれかです。

content を素のテキストとして扱うと問題になる点が 3 つあります:

  • ユーザー入力は XML で包まれています。実際のメッセージは <USER_REQUEST>…</USER_REQUEST> の中にあり、その後ろにメタデータブロックが続きます。
  • ツール結果には 2 行の接頭辞が付きます。すべて Created At: …\nCompleted At: …\n で始まり、その後に実際の出力が来ます。
  • コード編集には diff が埋め込まれています。CODE_ACTION の step には [diff_block_start] マーカーと、それに続く unified diff が含まれます。

これらのレコードには token・usage・model のフィールドが一切ないため、このエージェントについてはコストとトークンの集計ができません。

Antigravity CLI の会話をターミナルから読む ​

step のソースと種別を出力:

bash
jq -r '[.step_index, .source, .type] | @tsv' \
  ~/.gemini/antigravity-cli/brain/<uuid>/.system_generated/logs/transcript.jsonl

自分が入力した内容だけを、XML の殻を外して取り出す:

bash
jq -r 'select(.type=="USER_INPUT") | .content | strings
  | select(contains("<USER_REQUEST>") and contains("</USER_REQUEST>"))
  | split("<USER_REQUEST>")[1] | split("</USER_REQUEST>")[0]' \
  ~/.gemini/antigravity-cli/brain/<uuid>/.system_generated/logs/transcript.jsonl

会話を再開するには ​

対応する CLI をインストールし、ワークスペースで agy --conversation CONVERSATION_ID を実行します。アプリはターミナルでの再開に対応し、Antigravity の内蔵チャットには対応していません。

根拠と制限 ​

実装:Antigravity CLI アダプター。

**対象範囲:**2026-10-05 に Sessions Viewer 0.6.0 のアダプター実装と照合しました。すべての CLI バージョンでの動作を保証するものではありません。シェル例は macOS/Linux のパスを使い、jq(opencode は sqlite3)が必要です。プレースホルダーと保存先は自分の環境に合わせてください。テキスト抽出はツール、画像、セッションツリーの現在の分岐を完全には再現しません。コマンドの回帰テストにはダウンロード可能な合成データを使い、個人の会話は読みません。能力と検証表で範囲を確認できます。履歴の閲覧と再開・編集の違いはプライバシーとデータの扱いを参照してください。

このページはアダプターが読む agy の形式を扱い、Antigravity という名前のすべての製品を対象にはしません。大きいファイルでも、両方から失われた記録は復元できません。確認手順を参照してください。

アプリで開く ​

Sessions Viewer は 2 つの transcript のうち大きいほうを選び、XML の殻とタイムスタンプの接頭辞を取り除き、CODE_ACTION の diff を本物の diff として描画し、ファイルが足元で書き換えられても壊れません。Claude Code、Codex、Grok Build、Kimi Code、Pi、opencode にも対応しています。

MIT ライセンスのもとで公開されています。