Volver a la wiki

Oráculo de EL — Fase 2: indexación del corpus claude-method en el Bibliotecario

Oráculo de EL — Fase 2: indexación del corpus claude-method en el Bibliotecario

Contexto

El Oráculo de EL es el asistente conversacional desplegado en workspace.crearack.com (s72). Hasta la Fase 2, el Oráculo tenía un gap significativo: los 49 documentos .md del repo privado CreaRackSL/claude-method (harness, biblioteca, agentes, design toolkit, onboarding, shared-memory, workflow, guides) nunca se habían indexado en el grafo bib_* del Bibliotecario. El resultado era que cualquier pregunta sobre el método del equipo quedaba sin grounding vectorial y el Oráculo respondía sin fuentes internas.

El PR#54 (sesión 73, Supercontexto Fase 9) cierra ese gap con dos artefactos: un script Node de extracción y un workflow CI de schedule diario.


Artefactos añadidos

scripts/bib_ingest_claude_method.mjs (~684 LOC)

Indexador Node.js que sigue el patrón de bib_ast_ts.mjs. Flujo en dos fases:

Phase A — bib_register_doc (secuencial, 1 por doc) Registra cada .md en el grafo de la Biblioteca capturando su node_id. Se hace en serie —y no en batch— porque bib_index_docs (batch) no devuelve node_ids individuales que se necesitan para los chunks.

Phase B — bib_index_chunks (batch, lotes de 200) Una vez obtenidos los node_ids de Phase A, acumula todos los chunks de todos los docs y los envía en una sola llamada batch. El handler interno los procesa en sublotes de 50.

Estrategia de chunking

CondiciónAcción
Doc completo < 800 palabrasUn único chunk
Doc ≥ 800 palabrasSplitear por secciones ## (H2)
Sección < 100 palabrasAcumular con la siguiente
Sección > 800 palabrasSub-splitear por párrafos (\n\n)

Constantes: CHUNK_MIN_WORDS=100, CHUNK_SOFT_MAX_WORDS=800.

Namespace D1

Todos los file_path llevan el prefijo claude-method/ (ej. claude-method/guides/QUICK_START.md) para evitar colisiones con docs del workspace que tienen rutas homónimas.

Derivación de metadatos

El script heurística category y doc_type a partir del path relativo:

Path relativocategorydoc_type
onboarding/shared-memory/*onboarding-shared-memorymemory
global-skills/*global-skillsskill
global-agents/*, agents/*global-agents / agentsagent
guides/*guidesguide
workflow/*workflowworkflow
biblioteca/*bibliotecareference
harness/*harnessreference
templates/*templatestemplate
raízrootdoc

CLI

# Solo stats sin push (dry-run)
node scripts/bib_ingest_claude_method.mjs --stats

# Push real contra MCP
node scripts/bib_ingest_claude_method.mjs --push --stats \
  --mcp-url https://workspace.crearack.com/api/mcp \
  --mcp-token $MCP_TOKEN

# Con root alternativo (dev local)
node scripts/bib_ingest_claude_method.mjs --push --stats --root ../claude-method

# Dump payload para debug (sin push)
node scripts/bib_ingest_claude_method.mjs --output /tmp/cm-payload.json

El toggle global BIBLIOTECARIO_PAUSADO=true (variable de repositorio) aborta el script antes de cualquier llamada MCP — mismo mecanismo que el resto de crons del Bibliotecario.


.github/workflows/bib-reindex-claude-method.yml (66 LOC)

CampoValor
NombreBibliotecario-Reindex-ClaudeMethod
Schedule30 0 * * * (00:30 UTC diario)
Trigger manualworkflow_dispatch
Runnerubuntu-latest, timeout 10 min
Concurrencybib-reindex-claude-method-${{ github.ref }}, cancel-in-progress
Toggle pausavars.BIBLIOTECARIO_PAUSADO != 'true'

El horario 00:30 está elegido para evitar colisión con bib-reindex-ts (00:15 UTC) y el cron Python de Hetzner (cada 6h). El repo claude-method es externo a este workspace — se clona con --depth 1 en cada run vía deploy key SSH dedicada.

Pasos del job reindex

  1. checkout@v6 del workspace (fetch-depth 1).
  2. ssh-agent@v0.9.0 con secrets.CLAUDE_METHOD_DEPLOY_KEY.
  3. git clone --depth 1 git@github.com:CreaRackSL/claude-method.git external/claude-method.
  4. setup-node@v6 (Node 20).
  5. node scripts/bib_ingest_claude_method.mjs --push --stats --root external/claude-method.

Variables de entorno requeridas: BIB_MCP_URL, BIB_MCP_TOKEN, CF_ACCESS_CLIENT_ID, CF_ACCESS_CLIENT_SECRET.


Auth: deploy key SSH (no PAT Fine-grained)

Decisión adoptada para el acceso de lectura al repo privado claude-method:

CriterioDeploy Key SSHPAT Fine-grained
Scope1 repo, read-onlyMulti-repo por diseño
CaducidadNo expiraMáx 1 año
Bus factorNo atado a cuenta personalAtado al owner del PAT
Creacióngh api (self-service)Requiere UI web

Volumen esperado tras bootstrap

MétricaEstimación
Docs .md descubiertos~49
Docs registrados (Phase A)~49
Chunks indexados (Phase B)~80–150

Plan de validación post-merge

  1. gh workflow run bib-reindex-claude-method.yml (bootstrap inmediato).
  2. Validar logs CI: ~49 docs Phase A + ~80-150 chunks Phase B.
  3. Smoke test en Oráculo (workspace.crearack.com): preguntar sobre método del equipo (ej. “¿qué es design-collaborator?”, “¿cómo funciona el harness pre-commit?”).
  4. Confirmar relevance > 0.4 en matches → Oráculo responde con grounding de claude-method.

Idempotencia

El script es seguro para re-ejecución. bib_register_doc y bib_index_chunks usan content_hash para detectar docs/chunks sin cambios y devolverlos como skipped. En un segundo run con docs sin modificar, Phase B reportará chunks_created=0, chunks_updated=0, chunks_skipped=N sin error.


Véase también

Subir