🪙 Os Logs São Ouro
Antes de medir qualquer coisa, é preciso saber onde o ouro está enterrado. Esta trilha mapeia onde vivem as conversas do Claude Code, disseca a anatomia de uma sessão JSONL e separa a gordura do ouro.
Mapa da trilha
Conteúdo detalhado
📂 Onde Vivem as Conversas e a Anatomia de uma Sessão
O disco, o formato JSONL, a anatomia de um evento e o campo que separa os modelos.
Cada sessão é um arquivo ~/.claude/projects/<projeto>/<sessão>.jsonl; há milhares no total.
É a fonte bruta de tudo. Saber o caminho é o primeiro passo para minerar.
Um arquivo por sessão; pasta por projeto; sem banco de dados.
Não é um único JSON: cada linha é um objeto JSON independente, anexado conforme a conversa avança.
Você lê linha a linha, sem carregar o arquivo inteiro — e parsing fica trivial.
Append-only; uma linha = um evento; robusto a interrupções.
Campos como type, message, timestamp, uuid, cwd, gitBranch.
Saber o que cada campo carrega é o que permite filtrar, agrupar e medir.
type ∈ user/assistant/system/summary; timestamp dá ordem; cwd/gitBranch dão contexto.
O assistente fala em blocos: text, thinking, tool_use, tool_result. O Claude Code grava CADA bloco numa LINHA separada.
É o detalhe que muda tudo na contagem: "por linha" dilui o sinal; por isso agrupamos em turnos.
Um turno físico = uma linha = um bloco; vários blocos compõem um turno lógico.
O campo que diz qual modelo escreveu cada turno: claude-fable-5, claude-opus-4-8, claude-haiku-4-5...
É o que permite filtrar por modelo e separar o corpus de cada um.
Só eventos de assistente têm model; é a chave de comparação Fable vs Opus.
Turno físico = uma linha. Turno lógico = 1 prompt humano até o próximo prompt humano (tudo no meio).
Medir por linha dilui o sinal; o turno lógico é a unidade que revela o ritmo de trabalho.
Agrupe por prompt humano; conte presença de thinking e tool_use por turno lógico.
⛏️ Gordura vs Ouro — e o Mito do Raciocínio Minerável
O que descartar, o que guardar, por que o pensamento literal não está lá, e a ética do corpus.
tool_result ecoado, dumps de arquivo inteiros, saída de comando, blobs de anexo (base64), contabilidade do harness (usage, sidechain, isMeta).
É a maior parte do peso do arquivo — e quase nada do sinal de comportamento.
Gordura = saída ecoada + bytes opacos; descarta sem perder o ritmo.
Seus prompts, o texto do assistente, a PRESENÇA de raciocínio, a sequência de tool_use e os timestamps.
É o que revela como cada modelo trabalha — o material do playbook.
Ouro = decisões + ordem de ações + cadência, não bytes de saída.
O texto do thinking vem VAZIO/cifrado nos logs (só a signature). Você não minera o pensamento literal.
É o diferencial honesto do curso: você mede a presença/ritmo do raciocínio, não o conteúdo.
Presença ≠ conteúdo; signature prova que houve raciocínio sem revelá-lo.
Presença de raciocínio + cadência de ferramentas + ordem de ações revelam o "ritmo" de trabalho de um modelo.
É exatamente esse ritmo que vira regra de playbook injetável.
Ritmo = pensa-antes-de-agir + densidade de ferramentas + read-antes-de-edit.
O debloat reduz uma sessão típica em cerca de 74% — a gordura é a maior parte.
Calibra a expectativa: o sinal cabe num arquivo pequeno e legível.
−74% típico; o ouro restante é o que você analisa.
Os logs têm SEU código e dados; trate o corpus como sensível e redija antes de compartilhar.
Minerar não é desculpa para vazar segredos; o corpus pode conter chaves e caminhos.
Trate como dado pessoal; redija segredos; o ouro é o ritmo, não os dados.