Pular para o conteúdo
MÓDULO 2.2

📊 Corpus, Números e o Delta Fable vs Opus

Agora vêm os números. Neste módulo: extrair o corpus de um modelo de todo o histórico, por que o turno lógico é a unidade certa, as métricas medidas, a comparação lado a lado e o delta real — Fable pensou antes em 99% vs Opus 54% — com a honestidade sobre o que NÃO afirmar.

6
Tópicos
30
Minutos
Prático
Nível
Hands-on
Tipo
histórico todos os projetos filtra .model extract_corpus corpus · fable-5 corpus · opus-4-8 Δ por turno lógico compare_models
1

🏅 O campo de ouro message.model

Toda comparação começa separando o corpus de cada modelo, e a chave é o campo message.model. O extract_corpus.py varre todo o histórico (todos os projetos em ~/.claude/projects) e junta num corpus combinado todos os turnos de um modelo.

# default: claude-fable-5
python extract_corpus.py

# um modelo específico, com pasta de saída
python extract_corpus.py --model claude-opus-4-8 --out ./corpus_opus

# só listar os modelos que existem no histórico
python extract_corpus.py --list

📦 O que ele produz

  • transcript.md — transcrição leve só com os turnos daquele modelo.
  • stats.json — todas as métricas medidas.
  • Um relatório legível impresso no terminal.

💡 Comece pelo --list

Antes de filtrar, rode --list para ver os nomes exatos dos modelos presentes no seu histórico. Os nomes mudam entre versões — o --list evita você filtrar por um modelo que não existe e levar corpus vazio.

Filtra por

message.model

Escopo

todo o histórico

--list

modelos presentes

Saída

transcript + stats

2

🔗 TURNO LÓGICO: a unidade certa

Vimos no módulo anterior que cada bloco é uma linha. Se você medir por linha, um turno de resposta de 5 blocos vira "5 turnos" — o sinal se dilui. A unidade certa é o turno lógico: 1 prompt humano até o próximo, com tudo o que o modelo fez no meio. Todas as métricas deste módulo são por turno lógico.

prompt 1 turno lógico = unidade da métrica linha: thinking 🧠 linha: text linha: tool_use (Read) linha: tool_use (Edit) linha: tool_use (Bash) próximo prompt

🎯 Por que essa é a unidade certa

O turno lógico responde à pergunta que importa: "para responder a este pedido, o modelo pensou antes? quantas ferramentas usou? em que ordem?". É a granularidade do ritmo de trabalho — nem a linha (fina demais), nem a sessão (grossa demais).

Define

prompt → prompt

Agrupa

todos os blocos

Mede

o ritmo real

Toda métrica

por turno lógico

3

📐 As métricas medidas

O extract_corpus.py não dá impressões — dá números. Cada corpus é resumido por: turnos lógicos, % que pensaram antes, ferramentas por turno (média e mediana), read-antes-de-edit e teste-depois-de-edit. É o vocabulário comum sobre o qual o delta vai ser tirado.

Turnos lógicos & % pensa-antes

Quantos turnos lógicos o modelo teve, e em que fração deles houve um bloco de raciocínio antes da primeira ação.

Ferramentas / turno (média & mediana)

A densidade de ação por turno. Média e mediana juntas — porque um punhado de turnos enormes pode puxar a média sem mexer no típico.

Read-antes-de-edit & teste-depois-de-edit

Heurísticas de disciplina: leu o arquivo antes de editá-lo? rodou teste depois de editar? Medidas por sequência de ferramentas.

💡 Números, não impressões

A graça é trocar "achei que o Fable pensa mais" por "o Fable pensou antes em 99% dos turnos". O número é o que se defende, se transfere e — na trilha 3 — vira regra de playbook.

% pensa-antes

presença 🧠

ferr./turno

média + mediana

read→edit

disciplina

edit→test

disciplina

4

⚖️ Comparar 2 modelos

Com dois corpora medidos, o compare_models.py coloca os modelos lado a lado e imprime a coluna Δ — a distância entre os dois ritmos. É o passo onde a diferença que vira playbook fica visível em uma tabela só.

# fable-5 vs opus-4-8 (default)
python compare_models.py

# explícito, gravando o resultado
python compare_models.py --a claude-fable-5 --b claude-opus-4-8 --out compare.json
métrica                       claude-fable-5   claude-opus-4-8     Δ
────────────────────────────────────────────────────────────────
% turnos c/ raciocínio                   99%              54%   +45%
ferramentas/turno (média)              6.57             7.86   -1.29
sessões                                   7             1114
turnos do assistente                     69             ...

📄 O compare.json

Com --out compare.json, o resultado vira um arquivo estruturado — fácil de versionar e de alimentar o make_playbook.py na trilha 3. A tabela do terminal é para ler; o JSON é para a máquina seguir o pipeline.

--a / --b

os dois modelos

Saída

tabela + Δ

--out

compare.json

Δ

vira playbook

5

🎯 O delta real medido

Aqui está o achado que move o curso. Fable-5 pensou antes em 99% dos turnos lógicos contra 54% do Opus — um delta de +45 pontos, o sinal forte e transferível. Em ferramentas/turno: 6,57 vs 7,86 — o Fable foi mais econômico.

⚠ Atualização: medido depois em amostra grande (4.892 passos), o número honesto é ~85% (não 99%) e o gap cai pra +31 pts — e aparece um gap escondido em teste-após-editar (41% vs 2%). Veja a Trilha 4 · A Prova Real.

pensou antes — claude-fable-5 99% pensou antes — claude-opus-4-8 54% +45 pontos

✓ O que o número diz

  • Fable pensa antes de agir quase sempre (99%).
  • +45 pontos é um delta grande e claro.
  • Fable usa menos ferramentas por turno (6,57).

✗ O que NÃO deduzir

  • "Menos ferramentas = pior" — pode ser densidade.
  • "Mais ferramentas = melhor" — pode ser thrashing.
  • Que o número de ferramentas, sozinho, ranqueia.

💡 Honestidade

Mais ferramentas não é melhor por si só: pode ser densidade (resolveu com poucas ações certas) ou thrashing (tentou várias coisas até acertar). O delta firme e transferível aqui é o pensa-antes-de-agir — esse vira regra-âncora na trilha 3.

Fable pensa-antes

99%

Opus pensa-antes

54%

Δ pensa-antes

+45 pts

ferr./turno

6,57 vs 7,86

6

⚠️ Os limites

Um curso honesto também diz onde NÃO pisar. A amostra de Fable é pequena (7 sessões / 69 turnos), o que deixa read-before-edit e test-after-edit ruidosos — não tire delta robusto deles. E o texto do raciocínio vem cifrado: mede-se a presença, nunca o conteúdo.

⚠️ O que a amostra pequena custa

Com 7 sessões de Fable contra 1114 de Opus, qualquer métrica de baixa frequência (poucas edições, poucos testes) oscila muito. O pensa-antes-de-agir sobrevive porque aparece em quase todo turno; read-before-edit e test-after-edit são boa prática medida por heurística conservadora, não delta defensável.

!

Amostra pequena de Fable

7 sessões tornam métricas raras instáveis. Trate read/test como sinal fraco, não como delta.

!

Raciocínio cifrado

O texto do thinking não está nos logs. Você mede a presença (🧠), nunca o conteúdo do pensamento.

!

Onde o Fable era fraco

Over-thinking no trivial (pensa demais até para tarefas simples) e verbosidade. O delta não é "Fable é melhor em tudo".

💡 A regra de ouro da honestidade

Só "pensa-antes-de-agir" é delta firme. Afirme isso com confiança; trate o resto como contexto. É essa disciplina que torna o playbook da trilha 3 defensável — você injeta o que mediu, não o que torceu para ser verdade.

Amostra Fable

7 sessões

Ruidoso

read/test

Cifrado

presença, não texto

Delta firme

só pensa-antes

📊 Resumo do Módulo

extract_corpus.py filtra por message.model — todo o histórico; --list mostra os modelos.
O turno lógico é a unidade — de prompt a prompt; toda métrica é por turno lógico.
Métricas medidas, não estimadas — % pensa-antes, ferr./turno, read→edit, edit→test.
compare_models.py dá a tabela + Δ — e o compare.json para o pipeline.
Delta real: 99% vs 54% (+45 pts) — e 6,57 vs 7,86 ferr./turno (Fable mais econômico).
Honestidade sobre os limites — amostra pequena, raciocínio cifrado; só pensa-antes é delta firme.

Próxima Trilha:

Trilha 3 — Do Delta ao Playbook: transformar o número numa regra injetável.