Skip to content

Antigravity CLI 的会话记录存在哪 ​

Antigravity CLI(agy)把 step 记录保存在 ~/.gemini/antigravity-cli/brain/<对话 uuid>/.system_generated/logs/ 下。比较 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 是会在 checkpoint 处被压缩的滚动窗口,而 transcript_full.jsonl 虽然名字叫 full,同样会在 checkpoint 处被截断。实际可用的规则是:哪个大读哪个。

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 有三件事,当成纯文本处理就会出问题:

  • 用户输入裹着 XML 壳。真正的消息在 <USER_REQUEST>…</USER_REQUEST> 里面,后面还跟着一段 metadata。
  • 工具结果带两行前缀。每一条都以 Created At: …\nCompleted At: …\n 开头,之后才是真正的输出。
  • 代码改动里嵌着 diff。CODE_ACTION 类型的 step 含一个 [diff_block_start] 标记,后面跟 unified diff。

这些记录里没有任何 token、usage、model 字段,所以这个 agent 没法做成本和用量统计。

在终端里读 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

怎么恢复这个对话 ​

在工作区目录运行 agy --conversation CONVERSATION_ID,需要已安装对应 CLI。应用提供终端恢复,不提供 Antigravity 内置对话。

依据与限制 ​

实现依据:Antigravity CLI 适配器。

**参考范围:**2026-10-05 对照 Sessions Viewer 0.6.0 的适配器源码核对,不代表验证过每个 CLI 版本。Shell 示例使用 macOS/Linux 路径,需要 jq(opencode 用 sqlite3);占位符要替换成实际值,自定义目录以你的配置为准。提取文本不等于完整还原工具、图片或会话树当前分支。命令回归使用可下载的合成样本,不读取私人会话;验证边界见能力与证据矩阵。浏览历史与恢复、编辑数据不同,见隐私与数据处理。

此页描述适配器读取的 agy 文件,不覆盖所有名为 Antigravity 的产品。较大的文件可能保留更多内容,但无法恢复两份文件都已丢失的记录。见找不到会话的排障指南。

或者用应用打开 ​

Sessions Viewer 会在两份 transcript 里挑大的那个,剥掉 XML 壳和时间戳前缀,把 CODE_ACTION 的 diff 渲染成真正的 diff,并且能扛住文件在脚下被重写。它同时还读 Claude Code、Codex、Grok Build、Kimi Code、Pi 和 opencode。