Claude Code

Continuar onde ficaste no Claude Code

Como levar um trabalho longo no Claude Code por vários dias. Dá nomes às sessões e retoma-as, sabe o que a compactação guarda e o que deita fora, deixa a memória automática levar factos de uma sessão para a outra, e confirma na transcrição quando um resumo erra num pormenor.

Verificado na documentação oficial a

Nesta página9 secções
  1. 01Todas as conversas ficam guardadas
  2. 02Retomar uma sessão
  3. 03O que volta quando retomas
  4. 04Quando a conversa fica longa
  5. 05Retomar depois de uma pausa
  6. 06Memória automática: factos que sobrevivem à sessão
  7. 07Os resumos podem errar nos pormenores
  8. 08Um hábito para trabalhos longos no servidor
  9. 09Fontes

O trabalho num servidor raramente cabe numa só sentada. Começas uma atualização, és interrompido, voltas na manhã seguinte, e a conversa já está tão longa que o Claude Code resumiu metade dela. Este guia trata das quatro coisas que levam o trabalho para a frente (as sessões guardadas, a compactação, a memória automática e o ficheiro da transcrição) e do que cada uma guarda e perde.

Todas as conversas ficam guardadas

O Claude Code guarda cada conversa à medida que trabalhas, num ficheiro por sessão: ~/.claude/projects/<project>/<session-id>.jsonl.

<project> é o caminho da tua pasta de trabalho com todos os caracteres que não são letras nem algarismos trocados por -. O ficheiro tem a conversa toda, incluindo cada comando que o Claude correu e o que ele devolveu. Por predefinição, o Claude Code apaga estes ficheiros ao fim de 30 dias. A definição cleanupPeriodDays muda isso.

Retomar uma sessão

  • claude --continue reabre a conversa mais recente desta pasta.
  • claude --resume abre uma lista de sessões anteriores para escolheres.
  • claude --resume <nome> retoma a sessão com esse nome.
  • claude --resume <session-id> retoma essa sessão, a partir de qualquer pasta.
  • /resume muda para outra conversa sem sair do Claude Code.

O --continue pega na sessão mais recente, que nem sempre é a que queres. No nosso teste, contámos um facto ao Claude numa sessão, abrimos uma segunda sessão nova e corremos depois claude -p --continue a perguntar pelo facto. Continuou a segunda sessão, que nunca o tinha ouvido.

Os nomes evitam isso. Dá um nome à sessão quando a começas, ou muda-o depois com /rename:

Terminal · o teu utilizador
claude -n nginx-upgrade
Terminal · o teu utilizador
claude --resume nginx-upgrade

No nosso teste, isto também funcionou com execuções claude -p: uma execução começada com -n nginx-upgrade voltou pelo nome, com outra execução pelo meio. As sessões de claude -p não aparecem na lista do claude --resume, mas um nome ou o identificador da sessão encontra-as na mesma.

O que volta quando retomas

Uma sessão retomada traz de volta a conversa toda, incluindo os comandos que o Claude correu e o que devolveram, e continua no mesmo modelo. Há coisas que não voltam sozinhas:

  • As opções de arranque, como --add-dir, --mcp-config e --settings. As pastas que acrescentaste durante a sessão com /add-dir também não voltam. Os ficheiros de definições são lidos de novo em cada arranque, por isso o que lá está continua a valer.
  • Os comandos em segundo plano. Um comando que ainda estava a correr quando a sessão acabou não volta. O Claude vê uma nota a dizer que não terminou.
  • O modo de permissões, em parte. Com claude --continue ou claude --resume <nome>, a sessão costuma voltar no modo em que estava. Os modos Ignorar permissões e Planear não voltam: a sessão arranca no modo em que arrancaria uma nova. Uma sessão escolhida na lista também arranca no modo de uma sessão nova.

Quando a conversa fica longa

Cada mensagem que envias leva a conversa toda consigo. Quando esta se aproxima do limite do modelo, o Claude Code compacta-a: troca a parte mais antiga por um resumo e continua. Também o podes fazer tu, numa pausa natural:

Claude Code
/compact keep the upgrade plan and the list of changed config files

O texto a seguir ao /compact diz ao resumo o que deve guardar, e pode ser em português. No nosso teste, o /compact reduziu uma conversa de 28 715 tokens para 2522, e o facto que lhe tínhamos contado antes, o dia da atualização, o Claude continuava a sabê-lo depois.

O que a compactação guarda depende de onde as coisas vieram. A documentação indica:

  • Recarregado do disco: o CLAUDE.md da raiz do projeto, a memória automática e o plano do modo Planear.
  • Relido: até cinco dos ficheiros que o Claude leu ou editou mais recentemente.
  • Resumido, por isso os pormenores podem perder-se: tudo o que só disseste na conversa.

Por isso, se alguma coisa tem de sobreviver, põe-na num ficheiro. As regras do projeto vão para o CLAUDE.md. Os factos vão para a memória automática, mais abaixo.

O /context mostra o que está a ocupar espaço neste momento. O /clear começa uma conversa vazia para trabalho sem relação com o anterior. A antiga continua guardada e o /resume trá-la de volta.

Retomar depois de uma pausa

Num plano Pro ou Max, se retomares uma sessão parada há mais de cerca de uma hora e com mais de 100 000 tokens, o Claude Code pergunta como queres continuar:

  • Resume from summary compacta-a primeiro. As mensagens seguintes custam menos, mas o que o resumo deixar de fora desaparece da vista do Claude.
  • Resume full session as-is guarda todos os pormenores, à custa de enviar o histórico todo com cada mensagem.

Para um trabalho longo em que os pormenores contam, como uma migração a meio, retoma a sessão completa. Para uma sessão que só queres acabar, o resumo chega.

Memória automática: factos que sobrevivem à sessão

Retomar traz de volta uma conversa. A memória automática leva factos para todas as sessões novas do projeto. O Claude escreve notas curtas para si próprio em ~/.claude/projects/<project>/memory/.

O MEMORY.md que lá está é um índice, uma linha por nota. As primeiras 200 linhas ou 25 KB dele carregam no início de cada sessão, e o Claude lê as notas propriamente ditas quando precisa delas.

Para guardar alguma coisa, basta pedir:

Claude Code
Remember this for future sessions: in this project, the staging MariaDB listens on port 3307, not 3306.

No nosso teste, o Claude escreveu uma nota curta, staging-mariadb-port.md, e acrescentou ao MEMORY.md uma linha a apontar para ela. Não pediu permissão para isso, mesmo no modo Manual. Uma sessão completamente nova respondeu depois "Port 3307", disse que o sabia por essa nota, e disse que não o tinha confirmado no servidor. Esta última parte conta: uma memória regista o que alguém disse, não o que o servidor está a fazer hoje.

Quando lhe pedimos que se lembrasse de uma coisa que o nosso CLAUDE.md já dizia, o Claude recusou e apontou para a linha do CLAUDE.md. A documentação diz que a memória automática salta tudo o que os teus ficheiros CLAUDE.md já cobrem, e tudo o que consegue deduzir do código.

Alguns pontos da documentação:

  • O /memory lista os ficheiros de memória e abre-os no teu editor. São Markdown simples. Lê-os de vez em quando e apaga o que estiver errado.
  • A memória fica na máquina onde foi escrita. Outro servidor, ou outro utilizador no mesmo servidor, não a vê.
  • Ao contrário das transcrições, os ficheiros de memória não são apagados ao fim de 30 dias. Ficam até tu ou o Claude os apagarem.
  • Para a desligar, usa o interruptor no /memory, ou define "autoMemoryEnabled": false nas definições de um projeto.

Os resumos podem errar nos pormenores

Um resumo de compactação é escrito pelo modelo. Acerta na forma do trabalho, mas pode errar num pormenor, e nada assinala que pormenores se perderam.

Aconteceu-nos a nós. Uma sessão longa foi compactada, e o resumo descrevia um erro que tínhamos cometido: segundo ele, uma cópia de segurança tinha falhado por causa de um alias da shell, e uma página tinha ficado no ar sem revisão durante cerca de um minuto. Quando escrevemos sobre isso mais tarde, confirmámos primeiro na transcrição. A causa real eram dois ficheiros com o mesmo nome, e a página esteve no ar cerca de 26 segundos.

O ficheiro da transcrição é o registo. O resumo não é. Quando uma data, uma contagem ou a causa de um erro contam, confirma:

Terminal · o teu utilizador
grep -o 'will not overwrite[^"]*' ~/.claude/projects/<project>/<session-id>.jsonl

O formato destes ficheiros é interno e muda entre versões, por isso usa o grep para uma espreitadela rápida e o /export para uma cópia legível. Não construas uma ferramenta em cima do formato.

Um hábito para trabalhos longos no servidor

Antes de parares por hoje, pede ao Claude que escreva o estado do trabalho num ficheiro do projeto: o que está feito, o que está a meio, o que vem a seguir, e como desfazer cada alteração. Da próxima vez, o claude --resume traz de volta a conversa, e o ficheiro diz aos dois em que ponto estão as coisas, mesmo que a conversa tenha sido compactada ou que comeces uma nova.

Fontes

Verificado em

Claude Code 2.1.283 em AlmaLinux 9.8. Testado num projeto git descartável com claude -p: retomar pelo identificador da sessão, o --continue depois de outra execução, dar um nome com -n e retomar pelo nome, o /compact e um facto que sobreviveu a ele, a transcrição a manter a conversa toda depois da compactação, guardar e recuperar uma memória automática numa sessão nova, e a memória automática a recusar um facto que já estava no CLAUDE.md. As mensagens acima foram copiadas dessas execuções.