Decision: second-brain — grafo de conocimiento sin Astro

Fecha: 2026-08-15 Dominio: IA/ML

Decisión

Soltar Astro. El “segundo cerebro” es el grafo de nodos (content/nodes/*.md

  • content/projects/*.md con edges tipados), no un sitio web. La superficie son dos vistas derivadas de un JSON emitido por un script — Docs (curriculum DataCamp) y Cloud (esfera explorable) — más una capa de memoria para agentes (AGENTS.md, prompts/).

Contexto

Partí de astro-starter-template (“knowledge-os”, un grafo de aprendizaje IA/ML sobre Astro 5 + Cloudflare con edges tipados y derivaciones en build). El centro de gravedad se movió de “sitio que renderiza el grafo” a “archivos que el agente edita + una nube que exploro”. Astro solo aportaba (a) validación de schema e integridad referencial y (b) render de páginas — ambos portables a ~200 líneas de script. Lo demás (build system, MDX, RSS, adapter Cloudflare) era peso muerto.

Dónde vive cada cosa

MemoriaLugar
Conceptos / papers / tools / modelos / etc.~/Proyectos/2nd-brain/content/nodes/*.md (130)
Proyectos (qué construyo, qué skill otorgan)content/projects/*.md (7)
Decisiones~/nef/decisions/ (69)
Self-model (creencias, patrones, metas)~/nef/mirror.md + ~/nef/roadmap.md
Prompts reusables del agente2nd-brain/prompts/ (6)
Portafolio (trabajo visual shippeado)repo separado Viscose-carousel

Arquitectura (cero framework, una dep)

2nd-brain/
  content/{nodes,projects}/*.md   # el estado, versionado en Git
  lib/graph.mjs                   # parse (gray-matter) + integridad + backlinks + rutas + deuda
  lib/curriculum.mjs              # secciones → courses (componentes conexos) → chapters (depth)
  lib/thumbs.mjs                  # SVG por nodo (color kind + grid topográfico + glifo + nivel)
  lib/tokens.mjs                  # kinds, glifos, colores, rels
  scripts/build.mjs               # → dist/{graph,curriculum}.json + thumbs/*.svg + copia site/
  site/                           # SPA vanilla: docs (DataCamp) + cloud (esfera) + detalle de nodo

node scripts/build.mjs deriva todo; la integridad referencial rompe el build si un edge/grant/uses apunta a un slug inexistente. El mapeo DataCamp: track = sección → course = componente conexo de edges → chapter = etapa de prerrequisitos → node = ejercicio (glifo ○◐◑●), con “start/continue” en el siguiente no-mastered y ruta de prerrequisitos por nodo.

Correr

cd ~/Proyectos/2nd-brain
npm run build   # deriva dist/
npm run dev     # npx serve dist → localhost:3000

Tradeoffs / reversión

  • Se pierde: el render Astro de páginas (dashboard, /paths, /docs como HTML). Reversión posible: el contenido .md es idéntico; si algún día se quiere SSR/type-safety, lib/*.mjs se re-porta a Astro en una sesión.
  • Se gana: cero build-framework, un solo JSON derivado, agente ↔ memoria sin fricción (editas y está), superficie client-side con tu identidad visual.

Pendiente (registrado, no ejecutado)

  • Retirar use-claude/openclaw-supermemory (nube, contradice local-first) y use-opencode/knowledge-cloud (template React pelado). claude-sidekick (MCP a Ollama) se queda.
  • Hosting público (Cloudflare Pages) solo cuando quieras URL — para el momento “witnessed”.
  • Tarjetas de proyectos en la nube (hoy solo nodos).
  • ~/nef/mirror.md, ~/nef/roadmap.md
  • astro-starter-template (archivado como referencia)
  • Viscose-carousel (portafolio, separado)