DEV Community

Ndonda Daniel
Ndonda Daniel

Posted on

Como Recuperar o Histórico de Conversas no Google Antigravity IDE (Engenharia Reversa, Mistério do Plano e Soluções Prontas)

Se você já abriu o Google Antigravity IDE e se deparou com a fatídica mensagem "No Conversations Found" no histórico ou percebeu que dezenas de chats com a IA simplesmente sumiram da lista, você não está sozinho.

Muitos desenvolvedores acreditam que suas conversas foram apagadas após:

  • Atualizar ou reinstalar o IDE (ex: migração manual para pacote Snap ou Flatpak);
  • Limpar caches ou redefinir configurações do editor;
  • Períodos de inatividade ou limites de exibição da interface (LRU Cache eviction);
  • Pequenas desconexões temporárias do motor de linguagem interno.

A grande notícia é: os seus dados nunca foram apagados do seu computador.

Neste artigo, desvendamos a arquitetura interna do Antigravity IDE, explicamos o caso fascinante do "Plano de Implementação" que ressuscitou um chat sozinho, e apresentamos duas soluções definitivas: uma extensão nativa para o editor (antigravity-history-restorer) e um script standalone em Python.


O Caso Curioso do "Plano de Implementação": A Chave da Charada

Antes de olhar para o código, vale analisar um relato real e intrigante:

"Eu já tive um chat que sumiu completamente do histórico, mas eu ainda estava com a aba do Plano de Implementação (Implementation Plan / Artifact) aberta no editor. Em vez de abrir um novo chat, cliquei no menu **Review ▾* do próprio plano e usei a opção Submit comment ('Add a message...'). No segundo seguinte em que enviei o comentário pelo plano, o chat inteiro reapareceu na lista de conversas!"*

Por que isso aconteceu? É coincidência?

Não, é exatamente assim que o ecossistema do Antigravity funciona.

  1. Os Artefatos têm vínculo direto com o chat: Planos de implementação, walk-throughs e artefatos de código guardam internamente o identificador único da conversa que os originou (cascadeId).
  2. A "cutucada" direta pelo Review: Ao enviar um comentário pelo botão Review ▾ → Submit comment do artefato, a interface do editor faz uma chamada direta ao Language Server solicitando que o feedback seja processado na trajetória correspondente àquele cascadeId.
  3. O despertar do banco: O Language Server vai até o disco, localiza o banco de dados correspondente (~/.gemini/antigravity-ide/conversations/<cascadeId>.db), carrega toda a trajetória da conversa para a memória RAM e emite o evento de sincronização interna (antigravityUnifiedStateSync.trajectorySummaries).
  4. O renascimento imediato na UI: Como efeito colateral dessa leitura, a interface do VS Code recebe a notificação de estado unificado e renderiza o chat de volta no histórico e na busca (Search all convos...) instantaneamente.

Em outras palavras: os chats nunca são apagados; eles apenas entram em estado adormecido no disco porque o editor não mantém centenas de conversas pesadas na memória RAM da interface simultaneamente.


A Arquitetura Oculta do Antigravity IDE

Para entender como recuperar qualquer conversa sem depender de ter um plano aberto, precisamos dissecar as camadas do Antigravity:

┌────────────────────────────────────────────────────────┐
│                   VS Code UI (Frontend)                │
│  - Painel do Agent, Histórico, "Search all convos..."  │
│  - Cache volátil: state.vscdb                          │
└───────────────────────────▲────────────────────────────┘
                            │
               RPC Connect (HTTP/POST JSON)
               Porta 127.0.0.1:<random> + CSRF
                            │
┌───────────────────────────▼────────────────────────────┐
│         Language Server (language_server_linux_x64)    │
│  - Motor daemon de IA em segundo plano                 │
│  - Responsável pelo streaming, diffs e contexto        │
└───────────────────────────▲────────────────────────────┘
                            │ Leitura de disco
┌───────────────────────────▼────────────────────────────┐
│            Armazenamento Persistente no Disco          │
│  ~/.gemini/antigravity-ide/conversations/*.db (SQLite) │
│  ~/.gemini/antigravity-ide/brain/* (JSONL & Artifacts) │
└────────────────────────────────────────────────────────┘
Enter fullscreen mode Exit fullscreen mode
  1. A Camada Persistente: Fica em ~/.gemini/antigravity-ide/conversations/. Cada conversa é um banco de dados SQLite com extensão .db contendo todas as mensagens, comandos executados e raciocínios da IA.
  2. A Camada de Visualização (UI): Fica no arquivo ~/.config/Antigravity IDE/User/globalStorage/state.vscdb. É apenas um cache de interface. Se esse arquivo for recriado ou se o editor sofrer um reset, o histórico visual fica em branco.
  3. O Protocolo de Despertar: O Language Server expõe uma API RPC interna via protocolo Connect na porta localhost. Ao chamarmos o método:
   POST /exa.language_server_pb.LanguageServerService/GetCascadeTrajectorySteps
Enter fullscreen mode Exit fullscreen mode

com os headers:

  • Connect-Protocol-Version: 1
  • X-Codeium-Csrf-Token: <csrf-do-processo> e o payload {"cascadeId": "<id-do-banco>", "startIndex": 0, "endIndex": 2}, o motor lê o arquivo .db do disco para a memória e o republica para a interface do editor instantaneamente!

Por que as extensões legadas de histórico falham?

Se você pesquisar na loja do VS Code por extensões como antigravity-history, notará que a maioria não funciona mais.

O motivo técnico é simples:

  • Extensões antigas procuravam por arquivos binários legados com extensão .pb (Protobuf serializado antigo) na pasta do Codeium;
  • As versões modernas do Google Antigravity IDE migraram sua persistência para bancos SQLite relacionais (.db) e logs JSONL;
  • Como as extensões legadas não conhecem os arquivos .db nem sabem dialogar com a API RPC do Language Server, elas acusam que nenhuma conversa existe.

Solução 1: A Extensão Nativa (antigravity-history-restorer)

Para resolver esse problema de maneira definitiva e integrada ao fluxo do desenvolvedor, desenvolvemos a extensão Antigravity History Restorer.

Como funciona

A extensão roda diretamente dentro do VS Code / Antigravity IDE:

  1. Detecta o processo em execução do Language Server e descobre dinamicamente seu token CSRF e portas locais (com suporte a Linux, macOS e Windows);
  2. Varre as pastas de conversas (~/.gemini/antigravity-ide/conversations);
  3. Exibe uma barra de progresso nativa no rodapé do editor restaurando cada conversa;
  4. Oferece um botão imediato para abrir a busca de conversas ou recarregar a janela.

Código Fonte da Extensão

A extensão foi desenvolvida em TypeScript e organizada de forma modular no repositório oficial:

  • 📄 src/extension.ts — Ponto de entrada, registro do comando na paleta e integração com a barra de notificações do editor.
  • 📄 src/detector.ts — Descoberta dinâmica de portas e extração do token CSRF do processo do Language Server.
  • 📄 src/restorer.ts — Varredura dos arquivos SQLite locais e execução das chamadas RPC para reindexação das conversas.

Como Utilizar no Editor

  1. Abra a paleta de comandos (Ctrl+Shift+P no Linux/Windows ou Cmd+Shift+P no Mac);
  2. Digite e selecione:
   Antigravity: Restore Missing Chats
Enter fullscreen mode Exit fullscreen mode
  1. Acompanhe a restauração em tempo real e volte a pesquisar suas conversas pelo ícone de histórico (🕒) ou atalho Search all convos....

📦 Repositório Open-Source no GitHub:

Todo o código da extensão, scripts de automação e documentação estão disponíveis publicamente em:

https://github.com/NdondaDaniel2020/antigravity-history-restorer


Solução 2: O Script Standalone em Python (scripts/restore_antigravity_history.py)

Se você não quer instalar uma extensão ou prefere executar uma solução rápida via terminal, disponibilizamos um script Python autocontido que resolve o problema em menos de 10 segundos utilizando exclusivamente a biblioteca padrão do Python (sem necessidade de instalar pacotes via pip):

Como Executar o Script

  1. Certifique-se de que o Antigravity IDE está aberto;
  2. Execute no seu terminal:
# Opção A: Se você já clonou o repositório
python3 scripts/restore_antigravity_history.py

# Opção B: Download e execução rápida com curl (sem clonar o repositório)
curl -sO https://raw.githubusercontent.com/NdondaDaniel2020/antigravity-history-restorer/main/scripts/restore_antigravity_history.py
python3 restore_antigravity_history.py
Enter fullscreen mode Exit fullscreen mode
  1. Pronto! Todas as conversas retornam imediatamente à interface.

Conclusão

Sistemas de desenvolvimento modernos baseados em IA frequentemente operam com múltiplos processos em segundo plano (daemons, sockets locais e caches em memória). Entender a divisão entre a camada de persistência real (SQLite/JSONL) e a camada de indexação da interface (State Sync) é o que separa o desespero de perder semanas de trabalho da solução elegante com engenharia reversa.

Agora você pode restaurar seu histórico a qualquer momento — seja com um clique pela extensão, seja com uma chamada rápida de script!


Links e Recursos

Top comments (0)