Seu Agente de Código Tem Amnesia. Este CLI em Rust Resolve com Um Único Comando

Há três semanas você passou quarenta minutos com Claude Code descobrindo por que uma migração de banco de dados continuava falhando. Você encontrou a causa raiz, corrigiu, e seguiu em frente. Ontem, em outra sessão, seu agente esbarrou exatamente no mesmo problema. Ele não tinha ideia de que você já tinha resolvido — porque o transcript daquela primeira sessão de debug está guardado em uma pasta da sua máquina, em um formato que nada consegue buscar.

Esse é o problema que ctx veio resolver, e é dos bons.

A pilha que ninguém busca

Todo agente de coding sério anota absolutamente tudo o que faz. Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot CLI — cada um guarda transcripts locais detalhados de cada conversa, cada comando executado, cada tentativa falhada antes do fix que funcionou. Nenhum desses logs se conversa com os outros. Nenhum é barato de buscar. Se você quer que seu agente cheque “isso eu já resolvi antes” antes de começar do zero, hoje a única opção real é passar transcripts brutos como contexto — e isso pode queimar dezenas de milhares de tokens antes de o agente fazer algo útil.

ctx (GitHub - ctxrs/ctx: Search the coding agent history already on your machine · GitHub), lançado em 4 de julho (boreal) por um time pequeno que trabalha sob o nome ctxrs, vai direto ao ponto: junta todo esse histórico disperso em um único banco de dados SQLite local, estruturado o suficiente para ser buscado em milissegundos em vez de ser carregado inteiro.

Pondo para funcionar

É um único binário em Rust — sem daemon, sem serviço em background, sem API keys.

# Descobre e importa todos os session logs de agentes que ctx encontrar
ctx setup

# Busca em tudo isso com linguagem natural
ctx search "failed migration"

# Ou refine com vários termos
ctx search --term "failed migration" --term rollback --term "cursor rename"

Ao rodar setup, ele escaneia sua máquina procurando por session logs locais de qualquer harness suportado e os importa. No momento da escrita, ctx suporta Claude Code, Codex, Cursor, Pi, OpenCode, Gemini CLI (via Antigravity), Factory AI Droid e GitHub Copilot CLI.

Uma busca retorna sessions e events que combinam, cada um com seu próprio ID:

ctx show event <ctx-event-id> --window 3
ctx show session <ctx-session-id>

Você passa esses IDs para seu agente atual e ele consegue trazer exatamente o pedaço de uma sessão passada que precisa — não o transcript inteiro.

O que acontece por baixo

ctx normaliza o formato bruto do transcript de cada harness para um schema comum de sessions e events, guardado em um arquivo SQLite plano. É isso — sem embeddings, sem chamadas para modelos, sem ida e volta para a nuvem na versão local. Você até pode consultar o índice diretamente:

ctx sql "SELECT provider, COUNT(*) AS sessions FROM ctx_sessions GROUP BY provider"

O projeto é Apache 2.0, e no momento da escrita tem 180 stars, 15 forks e 68 commits — escrito principalmente em Rust, com bindings de SDK em TypeScript, Python, Go, JVM, Swift e .NET para quem quiser chamar ctx search do seu próprio tooling em vez da CLI.

O número de tokens, com sua ressalva

O benchmark do próprio projeto afirma que uma busca real que custaria 45.734 tokens via transcript bruto cai para 917 tokens usando ctx — mais ou menos uma redução de 50x. Vale esclarecer que esse é um número autorrelatado pelo projeto, não um benchmark verificado de forma independente. Dito isso, o mecanismo por trás é direto o suficiente — busca estruturada versus carregar texto bruto — para que a direção da afirmação se sustente mesmo que não tenhamos um número independente confirmando o multiplicador exato.

Algo para ficar de olho: o beta na nuvem

Há uma versão em nuvem em beta privado para times que queiram sincronizar histórico entre máquinas ou compartilhá-lo internamente. Vale notar: o criador foi direto na thread de Show HN sobre o fato de que os limites de privacidade aqui ainda não estão resolvidos — os transcripts podem trazer detalhes pessoais misturados com decisões técnicas, e não há uma linha clara do que deveria ser compartilhado e do que não. A versão local que analisamos aqui não toca a rede de jeito nenhum: nenhum prompt, transcript ou histórico sai da sua máquina, e não há API keys envolvidas.

Como a comunidade reagiu

O post de Show HN juntou 64 pontos e 37 comentários em poucas horas — bem acima da média para o lançamento de uma dev tool. O que se destacou na thread não foi ceticismo; vários engineers comentaram que já tinham construído alguma versão disso internamente, e alguém levantou que a amnésia de contexto nos agentes está se tornando um daqueles problemas aos quais todos chegam de forma independente uma vez que usam essas ferramentas o tempo suficiente. É um sinal bastante bom: o buraco que ctx vem tapar é um que muita gente já tinha notado por conta própria.

Vale a pena instalar?

Se você roda mais de um agente de coding, ou roda o mesmo tempo o suficiente para acumular meses de sessões, isso é praticamente de graça testar. Não muda seu workflow — ele fica por baixo, e só é usado quando você ou seu agente buscam algo explicitamente. A instalação é um binário, um comando setup, e nada para configurar.

Você já tem meses de transcripts acumulados sem conseguir buscá-los, ou esse é um problema que nem sabia que tinha até agora?