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
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 --continuereabre a conversa mais recente desta pasta.claude --resumeabre 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./resumemuda 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:
claude -n nginx-upgradeclaude --resume nginx-upgradeNo 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-confige--settings. As pastas que acrescentaste durante a sessão com/add-dirtambé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 --continueouclaude --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:
/compact keep the upgrade plan and the list of changed config filesO 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.mdda 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:
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
/memorylista 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": falsenas 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:
grep -o 'will not overwrite[^"]*' ~/.claude/projects/<project>/<session-id>.jsonlO 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
- Manage sessions, documentação do Claude Code (em inglês)
- Explore the context window, documentação do Claude Code, "What survives compaction" (em inglês)
- How Claude remembers your project, documentação do Claude Code, "Auto memory" (em inglês)
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.