MODULO 5.2

πŸ—‚οΈ Estrutura: flat, taxonomia, grafo

Como organizar os arquivos. Trade-off direto entre simplicidade e recall. Numeros concretos para decidir.

6
Topicos
35
Minutos
Design
Nivel
Arquitetura
Tipo
1

πŸ“„ Flat: um arquivo, append-only

Minimo viavel. Zero decisao de estrutura. Comece aqui.

πŸ“ Estrutura flat

~/.memory/
└── knowledge.md

Um arquivo com todas as memorias.
Append-only: cada nova memoria vira paragrafo com data.

Exemplo:
---
## 2026-04-20
Decisao: usar FastAPI no payments-v2.
Razao: async nativo, 80% endpoints sao IO-bound.

## 2026-04-21
Fato: pgvector suporta HNSW index desde v0.5.
Relevante para nossa busca semantica.

## 2026-04-22
Padrao: sempre idempotency key em webhook.
Observado em Stripe, PayPal, PagBank. 3x.

πŸ“Š Caracteristicas

  • Setup: 0 minutos
  • Busca: grep
  • Recall: 61% (baseline)
  • Cap util: ~100 memorias
  • Migracao futura: facil (script ler e distribuir)
2

πŸ—„οΈ Taxonomia de 5 tipos

Sweet spot: ganho significativo com esforΓ§o moderado.

πŸ“ Estrutura taxonomica

~/.memory/knowledge/
β”œβ”€β”€ facts/          (como algo e)
β”‚   β”œβ”€β”€ postgres-vector-support.md
β”‚   └── lambda-payload-limit.md
β”œβ”€β”€ decisions/      (escolhas feitas)
β”‚   β”œβ”€β”€ 2026-04-20-fastapi-over-flask.md
β”‚   └── 2026-04-22-webhook-architecture.md
β”œβ”€β”€ patterns/       (regras recorrentes)
β”‚   β”œβ”€β”€ idempotency-in-webhooks.md
β”‚   └── small-prs-with-tests.md
β”œβ”€β”€ preferences/    (gostos pessoais)
β”‚   └── async-over-callbacks.md
└── events/         (acontecimentos)
    └── 2026-04-22-incident-timeout.md

πŸ“Š Ganho

  • Recall: 82% (+34% vs flat)
  • Busca filtrada: 'so fatos sobre X'
  • Promotion mais clara: pattern vira regra em CLAUDE.md
  • Setup adicional: 15 minutos de organizacao inicial
3

🌳 Hierarquia espacial

Pastas aninhadas por escopo. Otimo quando voce tem projetos com sub-areas.

πŸ“ Estrutura hierarquica

~/.memory/knowledge/
β”œβ”€β”€ shared/                    (cross-projeto)
β”‚   └── python-patterns.md
β”œβ”€β”€ projects/
β”‚   β”œβ”€β”€ payments-v2/
β”‚   β”‚   β”œβ”€β”€ decisions/
β”‚   β”‚   β”‚   └── idempotency.md
β”‚   β”‚   β”œβ”€β”€ patterns/
β”‚   β”‚   β”‚   └── webhook-retry.md
β”‚   β”‚   └── facts/
β”‚   β”‚       └── stripe-quirks.md
β”‚   └── landing-redesign/
β”‚       β”œβ”€β”€ decisions/
β”‚       └── patterns/
└── personal/
    β”œβ”€β”€ workflow.md
    └── style.md

πŸ“Š Quando vale

  • Recall: 95% no nivel mais profundo
  • Isolamento: projetos nao se misturam
  • Adequado para: 3+ projetos ativos, >300 memorias
  • Custo: mais disciplina para colocar no lugar certo
4

πŸ•ΈοΈ Grafo com backlinks

Cada nota linka outras. Busca pode caminhar no grafo. Estilo Obsidian.

πŸ“ Estrutura com backlinks

decisions/
  fastapi-over-flask.md
    "Discutimos em [[meeting-2026-04-20]].
     Substituiu [[flask-exploration]].
     Baseado em [[async-patterns]].
     Relacionado a [[payments-architecture]]."

patterns/
  async-patterns.md
    "Visto em [[fastapi-over-flask]].
     Complementa [[small-prs]]."

# Query: 'decisoes ligadas a arquitetura'
# β†’ caminha: payments-architecture β†’ fastapi-over-flask
#   β†’ meeting-2026-04-20 β†’ async-patterns β†’ ...
# β†’ recupera cluster inteiro de contexto

πŸ“Š Quando vale o esforΓ§o

  • Recall contextual: ~95% com inferencias
  • Adequado para: conhecimento densamente conectado
  • Exige: habito de linkar ao escrever
  • Ferramenta ideal: Obsidian (UI + backlinks automaticos)
5

🎯 Evoluindo de flat para taxonomia

Migrar e barato quando voce precisa. Nao precisa decidir tudo no dia 1.

πŸ“ Script de migracao

#!/usr/bin/env python3
# Migrar knowledge.md flat para taxonomia 5-tipos

import os, re, shutil
from pathlib import Path

# 1. Ler knowledge.md
content = Path('~/.memory/knowledge.md').expanduser().read_text()

# 2. Separar por data
entries = re.split(r'## (\d{4}-\d{2}-\d{2})', content)

# 3. Usar LLM (Gemini Flash) para classificar cada entry
#    em: fact | decision | pattern | preference | event

# 4. Mover cada uma para a pasta certa
for entry in classified_entries:
    target = f'~/.memory/knowledge/{entry.type}/{entry.slug}.md'
    Path(target).expanduser().parent.mkdir(parents=True, exist_ok=True)
    Path(target).expanduser().write_text(entry.content)

# 5. Arquivar o knowledge.md original
shutil.move('~/.memory/knowledge.md', '~/.memory/archive/knowledge-pre-migration.md')

πŸ’‘ LLM faz o trabalho pesado

Classificar 100 entries a mao toma horas. Gemini Flash faz em 2 minutos por $0.01. Voce revisa 10 ambiguas.

6

πŸ“Š Tabela de decisao

Regra pratica para escolher sem ruminar.

πŸ“ Decisao rapida

| Cenario                          | Estrutura           |
|----------------------------------|---------------------|
| Comecando, <100 memorias        | Flat                |
| 100-500 memorias mistas          | Taxonomia 4-tipos   |
| 3+ projetos com sub-areas        | Hierarquia espacial |
| Conhecimento densamente ligado   | Grafo (Obsidian)    |
| Time grande com vocabs variados  | Grafo + semantica   |
| Solo, pragmatico                 | Taxonomia 4-tipos   |

Regra final: DUVIDA β†’ taxonomia 4-tipos. Ganha 80% do beneficio com 20% do esforΓ§o.

πŸ’‘ Review anual

Uma vez por ano, revisar se a estrutura atual ainda serve. Migracao e barata; friccao de estrutura errada nao.

πŸ“ Resumo do Modulo

βœ“
Flat basta ate 100 memorias β€” depois migra.
βœ“
Taxonomia 4-tipos e sweet spot β€” +34% recall sem muito esforΓ§o.
βœ“
Hierarquia espacial ganha em profundidade β€” projetos com sub-projetos.
βœ“
Grafo e investimento grande β€” so se conteudo for densamente conectado.

Proximo:

5.3 β€” Backends: markdown ao Pinecone