17.4 KB · updated 2026-07-06 · md

v0.5.0.es.md

docs/i18n/release-notes/v0.5.0.es.md

Tesserae v0.5.0 — La columna vertebral del motor y el Compilador de Contexto Bajo Demanda

<!-- translations:start -->

English · 한국어 · 中文 · 日本語 · Русский · Français · Deutsch

<!-- translations:end -->

Publicado el 06-06-2026 · PyPI · Lanzamiento en GitHub · pip install --upgrade tesserae==0.5.0

Tesserae 0.5.0 es la versión en la que el proyecto se convierte en el motor de contexto que describe su misión. Entrega la columna vertebral del motor — un orquestador de pipeline, un demonio supervisor y un monitor de sesiones en vivo — y la función estelar del Pilar 3: el Compilador de Contexto Bajo Demanda, que convierte "dame contexto sobre X" en un paquete a medida, citado y listo para el agente. Por debajo, las pasadas de automejora ahora están activadas y persistidas mediante el sidecar node_memory (confianza de recurrencia numérica en la salida, supersede activado por defecto), los embeddings reales por defecto reemplazan el stub de hash-bucket (Pista B), y la infraestructura de compilación incremental aterriza pero permanece con el flag OFF/experimental. Dos bugs reales de compilación encontrados por el camino se corrigen (idempotencia changed-only, contrato de store inyectado), y la suite de pruebas alcanza 1544 aprobadas / 0 fallidas. Esta es la versión que entrega las fases 0–6 de la hoja de ruta del motor de contexto.

Tabla de contenidos:

  1. Compilador de Contexto Bajo Demanda — MD0 (Pilar 3, estelar)
  2. La columna vertebral del motor — orquestador, demonio, monitor de sesiones en vivo
  3. Automejora, activada y persistida (sidecar MD0)
  4. Embeddings reales por defecto (Pista B)
  5. Infraestructura de compilación incremental (flag OFF) + dos correcciones de compilación
  6. Actualizar desde v0.4.0
  7. Contexto estratégico

1. Compilador de Contexto Bajo Demanda — compile_context (Pilar 3, estelar)

Qué es

La función a la que apuntaba toda la hoja de ruta: una consulta (o un conjunto de nodos semilla) entra, un paquete de contexto a medida, citado y listo para el agente sale. compile_context es una función pura — lee el grafo y devuelve un ContextBundle en memoria, sin escribir nada en disco. El pipeline es: consulta/semillas → PPR + búsqueda híbrida para semillas → recorrido de vecindario k-hop acotado en profundidad → ensamblar los cuerpos wiki relevantes → síntesis LLM opcional (con un fallback determinista elegante) → control de presupuesto con un marcador de truncado en límite de palabra. Cada nodo que contribuye se registra como un ContextCitation, de modo que todas las citas del paquete se resuelven de vuelta a nodos reales del grafo.

TipoRol
`compile_context(query \seeds, depth, budget, …)`Punto de entrada puro; devuelve un ContextBundle.
ContextBundleEl contexto ensamblado más su lista de citas.
ContextCitationUna cita resoluble (id de nodo → cuerpo aportado).

El compilador se expone de tres maneras:

  • Herramienta MCP compile_context — para que un agente la llame a mitad de conversación. budget=0 significa sin tope.
  • CLI tesserae project context — exit-0 / stdout / --output / determinista, para scripting y pipelines.
  • Exportaciones con alcance por temaslice_export_context_for_topic produce un slice llms.txt con alcance por tema, y el brief del harness de agente ahora se renderiza por tema vía compile_context (Patrón 4 + Patrón 6) en vez de un top-12 codificado a fuego.

Junto a ello se entregan dos mejoras de recuperación relacionadas: node_context gana una ruta clasificada use_ppr (con relleno de vecinos consciente de la supresión y controles de aristas/límite), y el slice por tema usa el slug wiki canónico, de modo que citas y exportaciones se alinean.

Cómo usarlo

# CLI: compilar un documento de contexto citado para un tema, imprimir a stdout o a un archivo
tesserae project context "clasificación de recuperación y fusión RRF"
tesserae project context "clasificación de recuperación" --output ./context-retrieval.md

Desde un cliente MCP:

{
  "tool": "compile_context",
  "arguments": {
    "query": "¿Cómo clasifica candidatos nuestro stack de recuperación?",
    "depth": 2,
    "budget": 4000
  }
}
// → devuelve un ContextBundle: cuerpo ensamblado + una lista de citas resolubles.
//   budget: 0 significa sin tope.

También puedes sembrar directamente desde ids de nodo (saltando el paso de búsqueda) cuando ya conoces los anclajes:

{
  "tool": "compile_context",
  "arguments": {
    "seeds": ["decision-2026-05-22-switch-to-rrf-fusion"],
    "depth": 2,
    "budget": 0
  }
}

Cuándo usarlo

  • Un agente necesita un brief enfocado en un tema, no el volcado llms.txt de todo el corpus ni un único cuerpo de wiki_page.
  • Quieres citas que se resuelvan — cada afirmación del paquete rastrea de vuelta a un nodo del grafo — para que el agente pueda dar seguimiento.
  • Estás scriptando una entrega y quieres un artefacto de contexto determinista (--output, modo de ensamblaje sin LLM) que se regenere por tema.

Dónde vive

Implementación central: MD0 (compile_context, ContextBundle, ContextCitation). Registro y despacho MCP: tesserae/mcp_server.py. Cableado CLI: el subparser context y _handle_context en tesserae/cli.py. El renderizado de harness/exportación con alcance por tema se enruta a través de compile_context.

Advertencias

  • La calidad de la síntesis depende del backend LLM; sin backend, el compilador recurre al ensamblaje determinista (aún citado, solo sin sintetizar). El fallback es elegante — un fallo de síntesis nunca aborta el paquete.
  • El recorrido k-hop está acotado en profundidad y PPR corre sobre el subgrafo acotado en profundidad; los grafos muy grandes se benefician de un depth ajustado más un budget real en lugar de budget=0.
  • El truncado por presupuesto corta en límite de palabra y añade un marcador de truncado, de modo que un paquete recortado sigue siendo legible en vez de terminar a mitad de token.

2. La columna vertebral del motor — orquestador, demonio, monitor de sesiones en vivo

Qué es

Las tres piezas fundamentales que la auditoría llamó la mayor brecha, ahora entregadas bajo tesserae/engine/:

  • Orquestador de pipeline (pipeline.py) — la cadena ingest → compile → project → publish, elevada desde la skill markdown de comando slash a un objeto en proceso de primera clase que el demonio, la CLI y el MCP llaman todos. Este es el camino de código compartido del que cuelga todo lo continuo.
  • Demonio supervisor (daemon.py) — un proceso de larga ejecución supervisado que posee un único bucle de eventos, fusiona ráfagas de disparadores en una sola corrida de pipeline, maneja el apagado elegante por SIGTERM / SIGINT y sobrevive a una excepción de pipeline sin morir.
  • Monitor de sesiones en vivo (session_tail.py) — sigue (tail) los transcripts de harness en vivo e ingiere turnos mientras las sesiones corren, reemplazando el escaneo a posteriori de sessions discover --import (Pilar 1).

Juntos convierten Tesserae de una CLI por lotes de un solo disparo en un proceso que puede vigilar e ingerir continuamente.

Cuándo usarlo

  • Quieres la propiedad de "se mantiene actualizado" — las sesiones y ediciones fluyen al grafo sin un comando manual.
  • Construyes sobre Tesserae y quieres un punto de entrada de pipeline compartido para demonio, CLI y MCP en lugar de reimplementar la cadena de refresco.

Dónde vive

tesserae/engine/pipeline.py, tesserae/engine/daemon.py, tesserae/engine/session_tail.py (fusionados como la columna vertebral del motor, fases 0–2 de la hoja de ruta).


3. Automejora, activada y persistida (sidecar node_memory)

Qué es

El pilar de la "base que se mejora a sí misma" pasa de pasadas atornilladas a un sidecar node_memory persistido (tesserae/memory/). Los dos cambios visibles para el usuario:

  • Supersede activado por defecto con veredicto determinista. La pasada supersede corre ahora por defecto (sin necesidad de TESSERAE_SUPERSEDE_PASS=true), con un veredicto de session-id determinista y decisivo en ambas direcciones y una guarda de umbral, más supresión aguas abajo, de modo que un hecho superado deja de aparecer en la salida de contexto en lugar de solo ganar una arista.
  • Confianza de recurrencia numérica en la salida. El refuerzo de insights recurrentes ahora produce una confianza numérica a partir de la frecuencia entre sesiones, inyectada en el TemporalFactProjector vía memory_by_id, reemplazando la previa heurística de cadena gruesa. Re-afirmar un hecho a través de sesiones eleva de forma medible su confianza en la salida.

Cuándo usarlo

  • Ejecutas proyectos multisesión donde el mismo insight recurre — el refuerzo convierte esa recurrencia en una señal de confianza por la que los agentes pueden clasificar.
  • Quieres que los hechos obsoletos desaparezcan del contexto compilado, no solo que se marquen.

Dónde vive

tesserae/memory/store.py, reinforce.py (confianza de recurrencia numérica), supersede.py (por defecto, veredicto determinista + supresión), más decay.py, contradiction.py e insight_symbol_link.py. La suite de pruebas de automejora (antes cero pruebas) ahora cubre determinismo, idempotencia y la ruta de anulación por LLM.

Advertencias

  • El andamiaje de decaimiento y contradicción se entrega en el mismo sidecar; el comportamiento por defecto de cara al usuario en v0.5.0 es supersede + confianza de recurrencia numérica.

4. Embeddings reales por defecto (Pista B)

Qué es

El carril "semántico" por defecto ya no es un pseudo-embedding determinista de hash-bucket. v0.5.0 entrega un Model2VecBackend real y hace que active_embedding_backend falle de forma ruidosa en lugar de degradar silenciosamente a blake2b. El backend semántico en uso se muestra en embedding_status, y un suelo de coseno permite al carril de embeddings admitir candidatos (no solo reclasificar), de modo que las consultas con paráfrasis y sinónimos hacen aflorar nodos que BM25 pierde.

Cómo usarlo

{ "tool": "embedding_status" }
// → reporta qué backend semántico está activo (real vs fallback), de modo que
//   puedes ver de un vistazo si la recuperación lista para usar es genuinamente semántica.

Dónde vive

tesserae/retrieval/hybrid.py (selección de backend, active_embedding_backend que falla ruidosamente, suelo de coseno para admisión solo por embeddings) y el Model2VecBackend. Mostrado vía la herramienta MCP embedding_status.

Advertencias

  • Si el backend real no puede cargar, la recuperación ahora lo dice en voz alta en vez de fingir que el stub de hash es semántico — este es el cambio de comportamiento previsto.

5. Infraestructura de compilación incremental (flag OFF) + dos correcciones de compilación

Qué es

La capa incremental diseñada a través del puerto GraphStore aterriza como infraestructura: un sidecar de procedencia, una superficie de borrado de GraphStore, reconciliación al compilar completo, prontitud consciente de aristas, fontanería de procedencia de productor y un runtime async persistente de url_resolver (no más asyncio.run por llamada). La paridad de bytes frente a la compilación completa está probada para los caminos cubiertos (renombre, identidad de alias, compuertas de paridad de movimiento de ambos extremos).

El flag incremental_compile permanece OFF/experimental. La revisión de Codex sacó a la luz brechas de multi-propietario / ciclo de vida del productor / cap-fallback, de modo que el flag es opcional y de paridad de bytes probada solo para los caminos cubiertos hasta que esas brechas se cierren.

Dos bugs reales de compilación descubiertos en este trabajo se corrigen en el camino por defecto:

  • Idempotencia changed-onlycompile ahora honra la idempotencia changed-only, de modo que una recompilación no-op no agita el grafo.
  • Contrato de store inyectado — el contrato de store inyectado en la compilación de proyecto se honra, corrigiendo una clase de fallos en caminos de ingesta directa.

Dónde vive

La infraestructura incremental abarca el puerto GraphStore y el sidecar de procedencia; las dos correcciones aterrizan en el camino de compilación de proyecto (fix(project): honor changed-only idempotence + injected-store contract in compile).

Advertencias

  • No actives incremental_compile para grafos de producción todavía — es experimental por diseño hasta que se cierren las brechas de multi-propietario / ciclo de vida / cap-fallback. La compilación completa sigue siendo el camino de confianza.

Actualizar desde v0.4.0

pip install --upgrade tesserae==0.5.0

Para los flujos de trabajo existentes, v0.5.0 es aditivotesserae project compile sigue funcionando exactamente como antes, ahora con dos correcciones de corrección (idempotencia changed-only, contrato de store inyectado). Las nuevas superficies son opcionales de llamar:

Nuevo compilador de contexto bajo demanda:

tesserae project context "<tema>"            # paquete de contexto citado a stdout
tesserae project context "<tema>" --output out.md
{ "tool": "compile_context", "arguments": { "query": "<tema>", "depth": 2, "budget": 4000 } }

Comportamiento ahora activado por defecto (antes opcional o ausente):

  • Pasada supersede por defecto (con supresión en la salida de hechos superados).
  • Confianza de recurrencia numérica mostrada en la salida proyectada.
  • Embeddings reales por defecto con un backend que falla ruidosamente (sin degradación silenciosa a stub de hash).

Aún experimental — déjalo apagado para grafos de producción:

  • incremental_compile (infraestructura entregada, flag OFF).

Todo lo demás — graph_ppr, search_nodes híbrido, sync-code, research, los hooks en vivo, embedding_status, fresh_insights, schema-drift, los comandos slash, la proyección wiki / Obsidian — se arrastra desde v0.4.0.


Contexto estratégico

La auditoría del motor de contexto (2026-06-02) nombró la brecha en una línea: Tesserae era un compilador de CLI por lotes mecánicamente sano y bien probado, de disparo manual y a posteriori en los tres pilares, y la mayor pieza faltante era un supervisor de larga ejecución que posee un único bucle de eventos. v0.5.0 cierra esa línea. La columna vertebral del motor es el supervisor; el monitor de sesiones en vivo hace el Pilar 1 en vivo en lugar de a posteriori; el sidecar node_memory hace el Pilar 2 automejorante en el sitio; y el Compilador de Contexto Bajo Demanda es el Pilar 3 — la función estelar que convierte el grafo tipado, la bóveda y el sitio de proyecciones estáticas en una salida bajo demanda, con alcance de consulta, citada y lista para el agente.

Ninguna herramienta en el panorama PKM-AI de 2026 que estudiamos hace esta composición. Cursor Memories, Claude CLAUDE.md, Cline memory-bank y Aider CONVENTIONS.md son bolsas de texto estáticas sin bucle de motor, sin automejora tipada y sin compilador de contexto citado bajo demanda. Microsoft GraphRAG tiene entidades tipadas y resúmenes de comunidad, pero es un sistema corpus-RAG, no un motor de memoria de proyecto en ejecución continua. v0.5.0 entrega el bucle que mantiene la base fresca y el compilador que entrega a los agentes exactamente el contexto que piden — la misión enunciada con claridad en AGENTS.md, ahora corriendo en código.

Lo que queda: Fase 7 — unificar serve + watch + deploy bajo el supervisor para publicación continua, más encender el flag de compilación incremental una vez que se cierren sus brechas restantes. La columna y la estrella están dentro; la versión de convergencia es la siguiente.

Véase también: