News Silo — pipeline de siloing de noticias (opencode)

Fecha: 2026-09-17

Qué es

Pipeline local de agrupación de noticias por evento/tema, invocable nativamente desde opencode mediante una skill. Embeddings semánticos + HDBSCAN. Sin GPU ni API externa.

Ubicación

  • Script: ~/nef/news-silo/silo.py (lee JSON por stdin, escribe JSON por stdout)
  • Entorno: ~/nef/news-silo/.venv (uv, Python 3.12)
  • Ejemplo: ~/nef/news-silo/sample.json
  • Skill: ~/.config/opencode/skill/news-silo/SKILL.md

Decisiones clave

  • Modelo default: Qwen/Qwen3-Embedding-0.6B (multilingüe, CPU-friendly). all-MiniLM-L6-v2 descartado: es inglés y agrupó mal noticias en español (mezcló “tasas de interés” con “visita a Chile”).
  • Algoritmo: HDBSCAN (cosine). No requiere fijar K (los eventos diarios son desconocidos) y marca outliers/ruido como label -1.
  • Python 3.12 vía uv: Python 3.14 del sistema no tiene wheels de torch.
  • Por qué skill y no plugin: la skill es lo más simple y confiable en opencode; el agente ejecuta el script con bash y orquesta el resto.

Uso

cat datos.json | ~/nef/news-silo/.venv/bin/python ~/nef/news-silo/silo.py

Parámetros: --model, --min-cluster-size (default 2), --epsilon (default 0.3), -o out.json.

Siguientes pasos (cuando haga falta)

  • Subir a Qwen/Qwen3-Embedding-8B si la calidad multilingüe no alcanza.
  • Migrar a store de vectores si el volumen/streaming crece.
  • Añadir dedup MinHash LSH para la fase de ingestión (ref: proyecto “chronicle”).