Handoff — Extracción de exports → nodos second-brain

Fecha: 2026-09-21. Se pausa aquí; continuar en la próxima sesión.

Estado actual (actualizado, parado a propósito)

  • Twitter: ✅ 16/16 → reports/extraccion-data-001..016.md.
  • design_chats: ✅ → reports/extraccion-design_chats.md.
  • chatgpt-conv: ⏸ 48/72 → reports/extraccion-chatgpt-conv-001..048.md (faltan chunks 49–72).
  • Pendientes sin empezar: claude-conv (111), dc-big.pretty (~4), exports/claude/memories (~2), y sanitize.py.
  • 65 reports totales. Sin procesos corriendo; modelo de Ollama descargado.

Qué quedó hecho

  • Prompt (contrato de nodo del repo + anonimización + regla “nunca citar el valor”): ~/nef/decisions/[CREDENCIAL].md
  • Runner: scripts/extract_exports.py — API /api/chat, num_ctx=32768, think:false, MAX_BYTES=60000, auto-split si falta contexto, resume (salta salidas ya existentes >200 B).
  • Splitters: scripts/claude_export_split.py, scripts/chatgpt_export_split.py.
  • Sanitizer: scripts/sanitize.py (emails, IPs, teléfonos, tokens).
  • Cola: scripts/run_queue.sh.

Fixes clave (no repetir)

  • ollama run CLI no sirve aquí: Ollama.app corre -c 4096 e ignora OLLAMA_CONTEXT_LENGTH → usar la API con options.num_ctx.
  • qwen3.5 es thinking: sin "think": false el content vuelve vacío.
  • Contexto: ~100 KB ≈ 30 K tokens; con num_ctx=32768 el chunk llenaba el contexto y devolvía Based (1 token, done_reason=length). Por eso MAX_BYTES=60000 (+ auto-split).
  • En zsh PROMPT es variable reservada → usar PROMPT_FILE.

Reanudar

cd ~/nef/second-brain-twitter
PROMPT_FILE=~/nef/decisions/[CREDENCIAL].md
 
# twitter (salta los 6 ya hechos)
python3 -u scripts/extract_exports.py "$PROMPT_FILE" exports/twitter/data
 
# cola del resto (regenera /tmp/*-conv y /tmp/dc-big.pretty.json primero)
nohup bash scripts/run_queue.sh <pid-twitter> > /tmp/ext-queue.log 2>&1 &
 
# al terminar todo:
python3 scripts/sanitize.py reports/extraccion-*.md

Nota: /tmp se limpia al reiniciar; run_queue.sh regenera /tmp/claude-conv, /tmp/chatgpt-conv y /tmp/dc-big.pretty.json.

Puente a second-brain

reports/extraccion-*.md → bloques 3.2 Nodos candidatos → _enrich/<slug>.md (+ .meta.json) → npm run build (falla con edge colgante) → content/nodes/.